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
Comenzado por
BrainDeath
, dic 27 2009 01:20
1 respuesta en este tema
#1
Escrito 27 diciembre 2009 - 01:20
#2
Escrito 27 diciembre 2009 - 05:34
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;