我有一個工作在Excel工作簿上的.vbs文件。現在假設在系統3 EXCEL.EXE進程正在運行的情況下,現在有什麼方法可以找出哪一個是由main.vbs腳本打開的?我們如何識別兩個由不同對象打開的excel.exe過程?
1
A
回答
1
使用Get-WMIObject win32_process
得到所有進程的列表。查看ParentProcessId
成員以查看哪個進程生成了哪個Excel實例。
VB腳本通過WScript的或CScript將執行,所以你需要在正確的父母先看看。
請注意,Windows不會回收進程標識。也就是說,在時刻t0,pid1000不一定是與時刻t1相同的處理。
附錄:
使用-Computername
切換到另一個指定的WMI查詢的計算機。如果沒有-Computername
交換機,則假定爲localhost。本地主機也被稱爲.
,它在上面的VBScript答案中使用。像這樣,
#Get process list from Server01, assuming you have sufficient rights
Get-WMIObject win32_process -Computername server01
2
即使你標記這個PowerShell的,這裏有一個VBS唯一的選擇將可能需要根據您的Excel版本的一些修修補補(我有2003對這個PC):
'Create Excel Application for demo purposes only
Dim ex: Set ex = CreateObject("Excel.Application")
Dim objWMIService, objProcess, colProcess
Dim strComputer, strList
strComputer = "." 'Change if you want to run on another computer
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" _
& strComputer & "\root\cimv2")
'Look only at Excel process name
Set colProcess = objWMIService.ExecQuery _
("Select * from Win32_Process Where NAME = 'EXCEL.exe'")
'Get the list of Processes, included only for demo purposes
For Each objProcess In colProcess
strList = strList & vbCr & objProcess.commandline
Next
MsgBox strList ' Displayed "C:\Program Files\Microsoft Office\OFFICE11\EXCEL.EXE"
'"C:\Program Files\Microsoft Office\OFFICE11\EXCEL.EXE"/automation - Embedding
' Second row was the created Object.
'Find processes that match the Created Object format commandline
Set colProcess = objWMIService.ExecQuery _
("Select * from Win32_Process Where CommandLine Like '%EXCEL.exe"" /automation -Embedding'")
For Each objProcess In colProcess
'Do something with process
objProcess.Terminate
Next
'Next line will cause runtime error due to process already being terminated.
ex.Quit
美與此類似的方法是,通過使用objProcess.Commandline,您可以找到發送到應用程序的命令行開關,您可以使用它來查明特定的進程。例如,如果您有一個.bat文件來打開Excel文件,如下所示:start Excel.exe C:\example.xls
該進程將在進程Commandline屬性中包含C:\example.xls
。
相關問題
- 1. 我如何識別此過程已打開的處理?
- 2. 我如何識別此過程已打開的處理?
- 3. java如何識別這兩個對象是相同的類型
- 4. 如何識別已打開瀏覽器的對象?
- 5. 如何uniquly識別同一頁面的兩個對象具有相同的URL
- 6. 兩個用戶輸入是不同的,但程序識別它們相同
- 7. 識別JSON對象由不同數量的項目
- 8. 我在一個對象中創建了兩個不同的對象。在打印它們時,只顯示最後一個修改過的對象。如何創建?
- 9. 如何找到上次打開的EXCEL.EXE打開時間?
- 10. 如何建模由兩個不同實體擁有的對象?
- 11. 如何編程識別我的家庭WiFi打開VOIP
- 12. 如何比較兩個不同類別的對象?
- 13. Softlayer api:如何識別兩個VLAN匹配VLAN路由器對?
- 14. 識別兩個表中的不同行
- 15. 我如何識別不同的pickerViews?
- 16. 我們兩個不同
- 17. 如何殺死第二和第三個打開的EXCEL.EXE?
- 18. 由兩個不同的類別篩選
- 19. 如何訓練單個對象識別?
- 20. 兩個不同的對象
- 21. 如何識別同一圖像中的多個對象
- 22. 我們如何通過程序關閉打開的Url?
- 23. 如何識別兩個不同版本的gcc是否兼容?
- 24. 如何識別兩個不同鼠標的點擊?
- 25. 跨兩列識別相同的對
- 26. 問題通過兩個不同的按鈕打開相同的對話框
- 27. 我們如何根據名稱打開不同的模態?
- 28. 如何識別對象數組中的哪個對象?
- 29. 兩個不同的對象打印屬性相同的值
- 30. 識別兩個觸摸點擊兩個不同的子視圖
我想要全局運行這個腳本,所以我怎麼能夠在那裏給他們的計算機名稱,就像你的link.please指南中提到的'code' – CodeLover
Excel作爲一個COM服務器運行,其中ppid = winlogon.exe ,而不是VBS過程。 – EJP