PDA

Visualizza la versione completa : [DELPHI 5] determinare se un task ha finestra attiva


Luca_2030
31-08-2007, 12:52
Salve a tutti,
Vorrei sapere se esiste un metodo per sapere se un determinato task č uttilizzato dall'utente , ovvero se la sua finestra č quella attiva.
Esempio : quando la finestra attiva appartiene a WORD vorrei avviare un mio processo.
Grazie a chiunque risponda fin da ora !

Luca_2030
31-08-2007, 19:06
... sono arrivato a capire che con GetForeGroundWindow ho l'hadle.. ma a questo punto mi serve l'exename dell'handle.. qualche idea ?

the programmer
02-09-2007, 15:55
easy man :fagiano:
una ricercuzza su google ed avresti trovato quello che cercavi!!!


function ActiveCaption: string;
var
Handle: THandle;
Len: LongInt;
Title: string;
begin
Result := '';
Handle := GetForegroundWindow;
if Handle <> 0 then
begin
Len := GetWindowTextLength(Handle) + 1;
SetLength(Title, Len);
GetWindowText(Handle, PChar(Title), Len);
Result := TrimRight(Title);
end;
end;

the programmer
02-09-2007, 15:59
per ricavare il percorso dell'eseguibile dall'handle (sempre il frutto di una ricercuzza ;) ):

function GetAppName(hwindow: HWND): string;
var
h : HMODULE;
begin
SetLength(Result, 100);
h:=GetClassLong(hwindow, GCL_HMODULE);
GetModuleFileName(h, PChar(Result), 100);
end;

Luca_2030
03-09-2007, 17:37
Gazie per l'aiuto.. facendo ricerche avevo trovato molto materiale ma inutile.. non sono granchč come googolaro... cmq alla fine GetModuleFileName non mi funziona come vorrei.. il tutto l'ho risolto cosė (maccheronico)
l'activate della form ttiva il timer2 che a sua volta .. :

procedure TScreenShotForm.Timer2Timer(Sender: TObject);
begin
Timer2.Interval := 5000;
GetMem(cname,256);
ahnd := GetForegroundWindow();
GetClassName(ahnd,cname,256);
If cName = 'quello_che_cerco' Then beep;
freemem (cname);
end;

Il problema ora č che se lo shut down di windows non funziona pių, sono costretto a chiudere l'applicazione . Pedr ovviare a questo devo intercettare il messagio di shut down di windows e terminare l'applicazione oppure č il timer che da fastidio?

Loading