Télécharger le zip
Ta source est un peu maigre... Je m'attendais à un soft qui se protegerais contre les debuggers, mais on se retrouve avec simplement une recherche de Delphi dans les processus actifs.De plus, ca ne marche pas chez moi. J'ai WinXP pro SP1, et Delphi 7.0 pro. Ton code me met toujours cette phrase "Delphi et fermer" (en passant on écrit "Delphi est fermé").Si tu pouvais modifier ta source de facon à ce qu'on sache si l'executable à été lancé normalement ou à travers le debuggeur Delphi, là ca serait effectivement interessant.
Tout d'abord :1. Ton code ne marche pas. parceque tu recherche la presense de delphi par le titre de la fenetre de l'inspecteur d'objet et le nom de sa classe dans la version que ce qui differe selon les version ou bien la personnalisation des fenetres de l'ide !!!2. Meme si ca marche c'est pas fiable car on peut contourner ceci facilement par la creation d'une applii avec un nom de fiche "Object Inspector" et un nom de classe "TPropertyInspector"3. Cite moi un seul cas de figure ou en aurait besoin de savoir si delphi est en cours d'execution.si ton exemple etait personnalisable pour rechercher un processu (mais pas de cette maniere) ce serait plus ou moins utile.4. 3. Le niveau initié ????? pourquoi !je te donne 2/10 essaie de le développer plus d'enfaire un utilitaire de recherche de processus générique (la recherche par nom de processus c'est plus intéressant !)je pense ue meme dans ton exemple on a pas besoin du nom de classe !!! je vais voir
J'ai pas testé mais d'après mes souvenirs je fait comme cela (donc j'écris le code de mémoire, ptet ya des trucs a changer):Il faut rechercher la classe TAppBuilder et si elle est présente alors rechercher (d'après le handle récupéré) si le texte de la fenêtre associé contient Delphi. On aurait une fonction de ce style, tu peux t'arreter a la recherche de TAppBuilder si tu veux detecter si un EDI Borland est en cours et pas seulement Delphi, maintenant il faut vérifier que pour les produits MS le nom de classe adéquat et ainsi étoffer la fonction pour essayer de détecter un max d'outils de dévpt:function EDIBorlandEnCours : Boolean; Var nom : Array[0..31] Of Char; h : THandle;Begin Result := False; h := FindWindow('TAppBuilder', Nil); If h>0 Then Begin GetWindowText(Result,nom,32); If AnsiUpperCase(Nom[0]+Nom[1]+Nom[2]+Nom[3]+Nom[4]+Nom[5])='DELPHI' Then Result:=True; End;End;- Une autre possibilité serait de regarder si le fichier exe de delphi est en cours d'utilisation avec une fonction de ce style:Function DeterminerSiUtilise(fichier:String):Boolean;Var HFileRes : HFILE;Begin If FileExists(fichier) Then Begin HFileRes:=CreateFile(PChar(fichier),GENERIC_READ Or GENERIC_WRITE,0,Nil,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0); Result:=(HFileRes=INVALID_HANDLE_VALUE); If Not Result Then CloseHandle(HFileRes); End Else Result:=False;End;Mais là cela suppose que tu saches (d'apres la BDR) ou est localisé Delphi sur le disque.Voila si ca peut aider.
Qoprek> pas mal, pour un code écrit de mémoire ;o)On te pardonnera donc la 5ème ligne de la function EDIBorlandEnCours, où le premier paramètre passé est erronné. Il fallait donc écrire :GetWindowText(h, nom, 32);Sinon, ça fonctionne nickel, avec D6 comme avec D4.
maerci amis
Se souvenir du profil
Mot de passe oublié ? / Activation de compteCréer un compte