2015-02-06 62 views
0

如何檢查命令提示符/窗口是否使用VB腳本打開?如何檢查命令提示符是否使用VB Script打開?

我正在使用Visual Studio 2010 - 安裝項目,我希望我的VB腳本檢查命令行是否關閉,何時關閉,它將引發錯誤並終止整個安裝。

+0

您的意思是使用VBscript或VB.net(Visual Studio)嗎? – 2015-02-06 08:52:24

回答

0
class Win32_ProcessStartTrace : Win32_ProcessTrace 
{ 
    uint4 PageDirectoryBase; 
    string ParentProcessName; 
    uint32 ProcessID; 
    string ProcessName; 
    uint8 SECURITY_DESCRIPTOR[]; 
    uint32 SessionID; 
    uint8 Sid[]; 
    uint8 TIME_CREATED; 
}; 

該監視器啓動和停止。以上屬性僅從起始和與下面對象相同的屬性。還有一個停止對象。我的代碼只能執行一個事件,還有一個可以執行多個事件的選擇,但您必須設置事件處理程序。

Set WshShell = WScript.CreateObject("WScript.Shell") 
Set objWMIService = GetObject("winmgmts:\\.\root\CIMV2") 
Set objEvents = objWMIService.ExecNotificationQuery _ 
    ("SELECT * FROM Win32_ProcessTrace") 

Do 
    Set objReceivedEvent = objEvents.NextEvent 
    msgbox objReceivedEvent.ProcessName 
Loop 

您可以從Process類獲得額外的信息。

Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2") 

Set colItems = objWMIService.ExecQuery("Select * From Win32_Process") 

For Each objItem in colItems 
    'Get process id you want from other script 
    If obj.ProcessID = 1004 Then 
     msgbox objItem.ProcessID & " " & FormatDateTime(CDate(objItem.CreationDate)) 
    EndIf 
Next 

這些是它的屬性。它也有方法。

class Win32_Process : CIM_Process 
{ 
    string Caption; 
    string CommandLine; 
    string CreationClassName; 
    datetime CreationDate; 
    string CSCreationClassName; 
    string CSName; 
    string Description; 
    string ExecutablePath; 
    uint16 ExecutionState; 
    string Handle; 
    uint32 HandleCount; 
    datetime InstallDate; 
    uint64 KernelModeTime; 
    uint32 MaximumWorkingSetSize; 
    uint32 MinimumWorkingSetSize; 
    string Name; 
    string OSCreationClassName; 
    string OSName; 
    uint64 OtherOperationCount; 
    uint64 OtherTransferCount; 
    uint32 PageFaults; 
    uint32 PageFileUsage; 
    uint32 ParentProcessId; 
    uint32 PeakPageFileUsage; 
    uint64 PeakVirtualSize; 
    uint32 PeakWorkingSetSize; 
    uint32 Priority; 
    uint64 PrivatePageCount; 
    uint32 ProcessId; 
    uint32 QuotaNonPagedPoolUsage; 
    uint32 QuotaPagedPoolUsage; 
    uint32 QuotaPeakNonPagedPoolUsage; 
    uint32 QuotaPeakPagedPoolUsage; 
    uint64 ReadOperationCount; 
    uint64 ReadTransferCount; 
    uint32 SessionId; 
    string Status; 
    datetime TerminationDate; 
    uint32 ThreadCount; 
    uint64 UserModeTime; 
    uint64 VirtualSize; 
    string WindowsVersion; 
    uint64 WorkingSetSize; 
    uint64 WriteOperationCount; 
    uint64 WriteTransferCount; 
}; 

她是幫助中的示例腳本,它顯示瞭如何執行多個事件處理程序。

strComputer = "." 
Set objWMIService = GetObject("winmgmts:\\" & _ 
    strComputer & "\root\CIMV2") 
Set EventSink = WScript.CreateObject(_ 
    "WbemScripting.SWbemSink","SINK_") 

objWMIservice.ExecNotificationQueryAsync EventSink, _ 
    "SELECT * FROM Win32_ProcessTrace WITHIN 10" 
WScript.Echo "Waiting for events..." 

i = 0 
While (True) 
    Wscript.Sleep(1000) 
Wend 

Sub SINK_OnObjectReady(objObject, objAsyncContext) 
    Wscript.Echo "Win32_ProcessTrace event has occurred." 
    i = i+1 
    If i = 3 Then WScript.Quit 0 
End Sub 
相關問題