2008-09-25 8 views

risposta

8

È possibile utilizzare FindWindow per trovare la maniglia applicazione e ShowWindow per minimizzarlo.

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

Non sono un esperto di Delphi, ma se riesci a richiamare l'apis win32, puoi utilizzare FindWindow e ShowWindow per ridurre a icona una finestra, anche se non appartiene alla tua app.

+0

Ho votato come mi hai messo sulla strada giusta, ma alla fine ho usato il codice di Neftali – Re0sless

2

Grazie per questo, alla fine, ho usato una versione modifyed di Neftali's codice, ho incluso qui sotto nel caso in cui nessun altro ha gli stessi problemi in futuro.

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

era sempre tornando 0, quindi durante la ricerca di un motivo per cui ho trovato this function che avrebbe trovato il hwnd, e che ha funzionato a meraviglia.

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

Nota che questo non funzionerà su Windows Vista a meno che l'applicazione non funzioni con privilegi elevati. –

0

immagino FindWindow (PChar ('blocco note'), pari a zero) dovrebbe essere FindWindow (nullo, PChar ('blocco note')) per trovare la finestra per titolo.

Problemi correlati