[RESOLU] Gestion des Handle

Et hop, voila une petite question aux dev de la zone :

Je suis sous Windows et je souhaite récupérer, dans une petite application de mon cru, le nom de l’application qui est actuellement utilisée par le pauvre gus assis entre sa chaise et son clavier (Mon appli est minimisée et sonde l’appli à intervalles réguliers).

Je peux déjà récupérer le Handle de la fenêtre active grace à l’API GetForegroundWindow, mais je n’arrive pas à trouver l’API qui me permettrait de passer du numéro du Handle aux données sur l’application (Processus ou encore mieux nom de l’exe ayant servi pour lancer l’appli ou toute autre indication me permettant de reconnaitre l’application en fait). J’explore MSDN sans succès depuis une poignée d’heures alors …

Est-ce que l’un d’entre vous aurait l’idée de comment faire ce genre de manip ? Ou alors un autre moyen de faire ça ?

D’avance merci
Jake

Tu peux choper la classe de la windows a partir du handle. A partir de la tu peux creuser…

http://msdn.microsoft.com/library/en-us/wi…asp?frame=true

http://msdn.microsoft.com/library/en-us/wi…asp?frame=true

La totalle de cette section:

http://msdn.microsoft.com/library/en-us/wi…asp?frame=true

[quote=« GloP, post:2, topic: 27712 »]Tu peux choper la classe de la windows a partir du handle. A partir de la tu peux creuser…
…[/quote]

Hum, merci pour les liens Glop, j’avais déjà pas mal mis le nez dedans, mais comme je connais pas dutout tout cette partie du dev pour windows, j’arrive pas vraiment à remonter plus loin que quelques classes meres, et donc pas jusqu’a l’application source. En fait je vois même pas comment je vais pouvoir remonter à l’application source grace aux classes des windows, j’ai pas l’impression que les API te fournissent cette info au final.

Une autre idée qui m’est venue serait de faire le lien entre un processus et une fenetre ce qui est surement possible et par le nom du processus remonter a l’application, mais la encore je nage un peu …

Bref, si vous avez plus d’idées ou simplement des conseils, ne vous privez surtout pas :stuck_out_tongue:
Merci

Et voila, j’ai enfin fini par trouver comment ça marche tout ça :stuck_out_tongue:
C’est pas forcément bien programmé, mais ça tourne .

Ca intéresse peut être qqun, alors voila ce que ça donne en Delphi

[code]Var
WindowHandle : Integer;
FSnapshotHandle : THandle;
dwProcessId : DWORD;
FProcessEntry32 : TProcessEntry32;

begin
//Recupération du Handle de la fenetre en cours
WindowHandle:=GetForegroundWindow;

//Récupération du ProcessID correspondant au Handle de la fenetre
GetWindowThreadProcessId(WindowHandle,dwProcessId);

//On récupère un Snapshot du ProcessID précédent
FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPALL, dwProcessId);

//Récupération des données du snapshot en question
FProcessEntry32.dwSize := SizeOf(FProcessEntry32);
Process32First(FSnapshotHandle, FProcessEntry32);

//Recherche du processus qui nous intéresse
Repeat
Process32Next(FSnapshotHandle, FProcessEntry32);
Until (FProcessEntry32.th32ProcessID=dwProcessId);

// → Le nom du processus se trouve dans « FProcessEntry32.szExeFile » //
end;[/code]

Encore merci Glop :stuck_out_tongue: !