Frage

Gibt es eine Möglichkeit, eine externe Anwendung zu minimieren, dass ich die Kontrolle nicht aus mit in meiner Delphi-Anwendung habe über?

zum Beispiel notepad.exe, mit Ausnahme der Anwendung, die ich nur minimieren wollen jemals eine Instanz haben.

War es hilfreich?

Lösung

Sie können Findwindow , um die Anwendung Griff zu finden und Showwindow es zu minimieren.

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;

Andere Tipps

Ich bin kein Experte Delphi, aber wenn Sie Win32-API aufrufen können, können Sie Findwindow und Showwindow verwenden, um ein Fenster zu minimieren, auch wenn es zu Ihrer App nicht gehört.

Vielen Dank für diese, am Ende habe ich eine modifyed Version von Neftali des Code, habe ich es unten enthalten, falls irgendjemand anderes die gleichen Probleme in der Zukunft hat.

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

wurde immer 0 zurückkehrt, so dass während Suche nach einem Grund, warum ich diese Funktion das würde die Hwnd finden, und das war ein Genuss.

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;

Ich denke, Findwindow (PChar (Notepad), nil) sollte Findwindow (nil, PChar ( 'Notizblock')) sein, das Fenster nach Titeln zu finden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top