爲了找到你正在尋找你需要知道兩個參數,你會被髮送給FindWindow
功能
1.窗口類名
對於大多數應用程序的應用程序的正確的窗口句柄向主窗體窗口句柄發送WM_CLOSE
消息將終止應用程序。
也可以使用應用程序窗口句柄,但僅適用於以2007年之前的Delphi版本編寫的應用程序,或者應用程序的Application.MainFormOnTaskbar
屬性設置爲false。
注:Application.MainFormOnTaskbar在Delphi 2007
介紹了主要形式的窗口類名稱將是主要形式的類名(例如'TForm1'
)和應用程序處理窗口類名是'TApplication'
2。窗口名稱(標題)
該值取決於您是否將消息發送到應用程序窗口或主窗體窗口。
對於應用程序,這將是Application.Title
值或如果沒有明確設置程序名稱將被使用。
program MyApplication;
...
begin
Application.Initialize;
Application.Title := 'My Application Title';
...
如果使用主窗體窗口值將主窗體Caption
屬性。
所以一般來講一些如下的組合會給你正確的結果(當然,實際的類名和窗口標題必須合併)
var h: HWND;
h := FindWindow('TApplication', 'MyApplication');
h := FindWindow('TApplication', 'My Application Title');
h := FindWindow('TForm1', 'Form1');
雖然上述規則將是普遍有效的,它是可能的應用程序以動態方式設置這些值,在這種情況下,您將不得不使用EnumWindows
而不是Findwindow
。
如果window class name & window name
組合唯一地定義了您打算關閉的應用程序,則以這種方式關閉應用程序是完全安全的。如果系統中有多個滿足之前條件的應用程序,則最終可能會關閉錯誤的應用程序,並且找到正確的應用程序可能會更復雜,或者應用程序生命週期必須以另一種方式進行控制。
主窗口名稱(標題)是唯一的嗎? – MBo