¿Hay alguna manera de minimizar una aplicación externa que no tengo control desde dentro de mi aplicación Delphi?Minimice una aplicación externa con Delphi
por ejemplo notepad.exe, excepto que la aplicación que quiero minimizar solo tendrá una vez.
¿Hay alguna manera de minimizar una aplicación externa que no tengo control desde dentro de mi aplicación Delphi?Minimice una aplicación externa con Delphi
por ejemplo notepad.exe, excepto que la aplicación que quiero minimizar solo tendrá una vez.
Puede usar FindWindow para encontrar el controlador de la aplicación y ShowWindow para minimizarlo.
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;
No soy un experto en Delphi, pero si puede invocar aplicaciones win32, puede usar FindWindow y ShowWindow para minimizar una ventana, incluso si no pertenece a su aplicación.
Gracias a este, al final he usado una versión modifyed de Neftali's código, lo he incluido a continuación en caso de que una persona tiene los mismos problemas en el futuro.
FindWindow(PChar('notepad'), nil);
siempre regresaba 0, por lo que en la búsqueda de una razón por la que encontré this function que encontrar el hwnd, y que funcionaba de maravilla.
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;
Tenga en cuenta que esto no funcionará en Windows Vista a menos que su aplicación se ejecute con privilegios elevados. –
supongo FindWindow (PChar ('libreta'), nulo) FindWindow (nula, PChar ('libreta')) para encontrar la ventana de título.
Lo voté, ya que me puso en el camino correcto, pero al final usé el código de Neftali – Re0sless