我在調查是否有一種方法可以編程方式檢查某個進程是否作爲進程運行(在正在運行的exe的列表中)和作爲一個開放的應用程序(即在任務欄上),並根據結果採取行動。檢測Windows進程和應用程序是否正在運行
另外 - 有沒有一種方法編程地殺死進程或正在運行的應用程序?
我們正在運行該服務器上的應用程序WAMP所以理想我想辦法做到這一點使用PHP,但我開什麼會是最好的。
有什麼建議嗎?
我在調查是否有一種方法可以編程方式檢查某個進程是否作爲進程運行(在正在運行的exe的列表中)和作爲一個開放的應用程序(即在任務欄上),並根據結果採取行動。檢測Windows進程和應用程序是否正在運行
另外 - 有沒有一種方法編程地殺死進程或正在運行的應用程序?
我們正在運行該服務器上的應用程序WAMP所以理想我想辦法做到這一點使用PHP,但我開什麼會是最好的。
有什麼建議嗎?
檢查,如果某個進程正在運行的進程
如果你有tasklist命令,確保:
// show tasks, redirect errors to NUL (hide errors)
exec("tasklist 2>NUL", $task_list);
print_r($task_list);
然後你可以殺死它,使用匹配/提取來自行的任務名稱。
exec("taskkill /F /IM killme.exe 2>NUL");
我用了很多php-cli。例如:
// kill tasks matching
$kill_pattern = '~(helpctr|jqs|javaw?|iexplore|acrord32)\.exe~i';
// get tasklist
$task_list = array();
exec("tasklist 2>NUL", $task_list);
foreach ($task_list AS $task_line)
{
if (preg_match($kill_pattern, $task_line, $out))
{
echo "=> Detected: ".$out[1]."\n Sending term signal!\n";
exec("taskkill /F /IM ".$out[1].".exe 2>NUL");
}
}
不知道,如果你能以某種方式區分它,如果它在任務欄 - 也許有一些第三方工具。但是,你可以給任務的一些名稱,如果有效(任務列表)完全匹配您的taskkill這一任務。 – Cito
很好的答案!我在想,如果我能在不同的服務器比一個WAMP上做此項檢查在其上運行? –
我還沒有看到或聽說過一個php腳本正在訪問或能夠查看或訪問當前正在用戶單元中運行的應用程序。如果我沒有弄錯,PHP是網絡編程語言。 PHP可能不是即使在在任務選擇,你的目標是要做到列表最好的選擇還是不行。 – KyelJmD
也許,這就是我試圖確認的 - 從我見過的你*可以*運行cmd行語句 - 但是否有可能做我需要的是另一個問題。 – drschultz
由於這是標籤QuickBooks的 - 具體是什麼,你想這樣做涉及QuickBooks的?有機會,有更好的方法去做你想做的任何事情...... –