Hola ps me ha salido una duda quisiera saber como minimizar ventanas con la PID de un proceso.Una idea es buscando el handle del proceso con la PID para minimizar todas las ventanas del proceso pero no encuentro algo que me ayude.
Espero su ayuda Saludos..
Pròspero año nuevo (d)

Minimizar ventanas de un proceso
Started by
BrainDeath
, Dec 27 2009 01:20 AM
1 reply to this topic
#1
Posted 27 December 2009 - 01:20 AM
#2
Posted 27 December 2009 - 05:34 AM
Pues se me ocurre algo como esto:
Y para probarlo puedes usar el siguiente codigo, que ejecuta el notepad espera 5 segundos y lo minimiza:
delphi
type TWindowRec = record ProcessId: Cardinal; end; PWindowRec = ^TWindowRec; function EnumWindowsProc(Handle: Thandle; lParam: LPARAM): BOOL; stdcall; var ProcessId: Cardinal; begin Result:= TRUE; ProcessId:= 0; GetWindowThreadProcessId(Handle, ProcessId); if ProcessId = PWindowRec(lParam).ProcessId then begin ShowWindow(Handle,sw_minimize); end; end; // Para usarlo, si ya tienes el PID, solo tienes que hacer algo como esto var WindowRec: TWindowRec; begin FillChar(WindowRec,Sizeof(WindowRec),0); WindowRec.ProcessId:= PID; EnumWindows(@EnumWindowsProc, LPARAM(@WindowRec)); end;
Y para probarlo puedes usar el siguiente codigo, que ejecuta el notepad espera 5 segundos y lo minimiza:
delphi
var WindowRec: TWindowRec; StartupInfo: TStartupInfo; ProcessInfo: TProcessInformation; begin FillChar(StartupInfo,Sizeof(StartupInfo),0); StartupInfo.wShowWindow:= SW_SHOW; if CreateProcess(nil,PChar('notepad.exe'),nil,nil, FALSE, CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS,nil,nil,StartupInfo, ProcessInfo) then begin Sleep(5000); FillChar(WindowRec,Sizeof(WindowRec),0); WindowRec.ProcessId:= ProcessInfo.dwProcessId; EnumWindows(@EnumWindowsProc, LPARAM(@WindowRec)); end; end;