如何判斷乙個程序是否停止了響應 有對話方塊的

2021-06-11 22:55:47 字數 708 閱讀 4158

簡介:本文描述了使用c++、vb、windows api和.net類庫如何判斷乙個程序是否停止了響應。

沒有乙個明確的「停止響應」的定義,例如對於internet explorer或者word 2000這樣的多頂層視窗應用程式,可能存在部分頂層視窗失去響應的情況,這時很難定義應用程式是否停止了響應。但是一般來說,很多應用程式只有乙個標誌性視窗(或者叫主視窗)。如果主視窗在一段時間內不響應使用者操作的時候,對於使用者來說應用程式是停止響應的(例如在internet explorer等待遠端ftp伺服器返回登入結果時)。儘管這經常屬於其他應用程式應該妥善考慮的範疇,但是如果自己的應用程式依賴於這樣的程式而沒有源**級控制權,那麼應該提供乙個機會允許使用者中斷對外部應用程式的等待或者乾脆終止外部應用程式。

另外,.net framework中提供了乙個responding屬性,可以用於檢測程序是否停止了響應。附錄中的兩篇基於.net的文章就是檢查了這個屬性。看起來這似乎是通過檢查程序的mainwindowhandle指明的視窗是否立刻響應來解決的。通過這種方法判斷的缺點是無法設定等待超時的時間。

參考資料

wm_null(msdn)

(process.responding property (msdn)

如何「乾淨地」終止 win32 中的應用程式

get the main window, get exe name

enumerating windows using api(vb)

判斷乙個程序是否開啟

標頭檔案 include pragma comment lib,psapi.lib findprocess 找到自己檔名 char szname x.exe dword aprocesses 1024 cbneeded,dwprocesses char szprocessname max path ...

如何停止乙個執行緒

停止乙個執行緒的最佳方法是讓它執行完畢,沒有辦法立即停止乙個執行緒,但你可以控制何時或什麼條件下讓他執行完畢。通過條件變數控制線程的執行,執行緒內部檢查變數狀態,外部改變變數值可控制停止執行。為保證執行緒間的即時通訊,需要使用volatile關鍵字或鎖,確保讀執行緒與寫執行緒變數狀態的一致性。pub...

python判斷乙個程序是否正在執行

import os,sys import win32com def proc exist process name is exist false wmi win32com.client.getobject winmgmts processcodecov wmi.execquery select fr...