如何使用JSL來計算windows中的活動運行進程,例如notepad.exe的數量?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />我有一個問題來計算Windows內存中的活動進程。
我不熟悉Windows API。任何人都可以使用DLL函數來幫助計算給定進程名稱的運行進程數嗎?
如果打開3 notepad.exe,則窗口任務管理器有三個記事本會話正在運行。
我需要一個JSL函數,它將進程名稱作為輸入,並將進程數作為返回。
非常感謝你!
Re:如何使用JSL來計算windows中的活動運行進程,例如notepad.exe的數量?Craige,
我在JMP 11中嘗試了runprogram函數,然後編寫了一個計數字函數。我可以得到我想要的解決方案。非常感謝!
我這樣做的另一個有趣的事情是因為我注意到open()文本文件功能從升級JMP 9變為11。
我使用JMP 9來觸發.exe文件來執行多線程數據庫查詢然後在完成所有.exe會話後,匯總數據。
在JMP9中,當我打開數據文件時,它總是成功,但是,在JMP11中,它多次發出警告不完整的數據文件讀取和錯過一半。數據文件大小通常> 2M-3M,不是太大。不確定JMP11中真正改變了什麼。否則,我不需要費心去尋找這樣的解決方案。
再次感謝您的解決方案。
Re:如何使用JSL來計算windows中的活動運行進程,例如notepad.exe的數量?RunProgram首次出現在JMP 11中。 它不使用磁盤文件在JMP和外部程序之間進行通信;它使用stdin和stdout。 根據應用程序的需要,您可能希望從runProgram運行notepad.exe程序,而不是使用RunProgram運行另一個程序來確定notepad.exe是否已完成。 (你可以完全避免輪詢。)
使用JMP 9,您仍有幾種方法可以完成這項工作。 你可能想調查一下自動化使用另一種語言,比如visual basic,來控制JMP 和 NOTEPAD.EXE。 您可能希望編寫.BAT文件並使用JMP的open()來運行bat文件。 這確實需要一個輪詢循環來確定bat文件何時完成。 您可以使用JMP的wait(seconds)函數讓JMP在輪詢之間休眠。 最後,正如您的原始問題所示,您可以使用JMP的DLL接口來訪問系統DLL。這個帖子表明JMP 10中出現了更好的DLL接口;可能無法使用舊接口進行所需的DLL調用。 我不知道你需要什麼API / DLL。
Re:如何使用JSL來計算windows中的活動運行進程,例如notepad.exe的數量?Craige,
謝謝你的回复。我還有兩個問題:
1。看起來像運行程序在JMP9中不是一個函數,因為我仍在使用JMP9。
2。您的解決方案是否將文件寫入硬盤?我正在嘗試並行會話並在無限循環中使用等待。當總進程數為零時,則中斷循環並繼續執行其餘的JSL代碼。如果將文件寫入硬盤,與使用DLL直接從內存中獲取信息相比,這是不太可取的。
謝謝!
Re:如何使用JSL來計算windows中的活動運行進程,例如notepad.exe的數量?從這裡開始如何在Windows中的命令行中列出所有進程?- 超級用戶
並寫了這個
x=runprogram(executable("wmic"),options({"process list"}),
readfunction(function({this},write(this<
);
你可能想要解析這個<< read中的文本而不是通過write()將它轉儲到日誌中。 很多你不想要的文字,以及“C:\ Program Files(x86)\ Microsoft Office \ Office15 \ OUTLOOK.EXE”之類的東西