Minimieren Sie eine externe Anwendung mit Delphi
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.
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.