2008-09-25 92 views

回答

8

您可以使用FindWindow查找應用程序句柄和ShowWindow以最小化它。

var 
    Indicador :Integer; 
begin 
    // Find the window by Classname 
    Indicador := FindWindow(PChar('notepad'), nil); 
    // if finded 
    if (Indicador <> 0) then begin 
    // Minimize 
    ShowWindow(Indicador,SW_MINIMIZE); 
    end; 
end; 
3

我不是Delphi專家,但是如果您可以調用win32 apis,則可以使用FindWindow和ShowWindow將窗口最小化,即使它不屬於您的應用程序。

+0

我投你一票,因爲你把我放在正確的軌道上,但最終我用了Neftali的代碼 – Re0sless 2008-09-25 15:22:28

2

感謝這個,到底我用的Neftali's代碼modifyed版本,我已經低於其列入情況下任何其他人在未來有同樣的問題。

FindWindow(PChar('notepad'), nil); 

總返回0,所以在尋找一個原因,我發現this function會找到HWND,而工作一種享受。

function FindWindowByTitle(WindowTitle: string): Hwnd; 
    var 
     NextHandle: Hwnd; 
     NextTitle: array[0..260] of char; 
begin 
     // Get the first window 
     NextHandle := GetWindow(Application.Handle, GW_HWNDFIRST); 
     while NextHandle > 0 do 
     begin 
     // retrieve its text 
     GetWindowText(NextHandle, NextTitle, 255); 
     if Pos(WindowTitle, StrPas(NextTitle)) <> 0 then 
     begin 
      Result := NextHandle; 
      Exit; 
     end 
     else 
      // Get the next window 
      NextHandle := GetWindow(NextHandle, GW_HWNDNEXT); 
     end; 
     Result := 0; 
end; 

procedure hideExWindow() 
var Indicador:Hwnd; 
begin 
    // Find the window by Classname 
    Indicador := FindWindowByTitle('MyApp'); 
    // if finded 
    if (Indicador <> 0) then 
    begin 
     // Minimize 
     ShowWindow(Indicador,SW_HIDE); //SW_MINIMIZE 
    end; 
end; 
+1

請注意,這將無法在Windows Vista上運行,除非你的應用程序以提升的特權運行。 – 2008-10-01 08:36:19

0

我猜FindWindow函數值(P Char( '記事本'),無)應該是FindWindow函數(零,PChar類型( '記事本'))來查找標題的窗口。