Verification d'execution du delphi "delphi32"

Soyez le premier à donner votre avis sur cette source.

Vue 4 908 fois - Téléchargée 646 fois

Description

salut
ce petit programme verifier l'execution du delphi"delphi32"
si delphi et en cours d'execution ou hors connection

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
2
Date d'inscription
jeudi 22 janvier 2004
Statut
Membre
Dernière intervention
7 mai 2007

maerci amis
Messages postés
1721
Date d'inscription
vendredi 27 décembre 2002
Statut
Modérateur
Dernière intervention
30 août 2020
3
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.
Messages postés
11
Date d'inscription
vendredi 18 août 2006
Statut
Membre
Dernière intervention
26 mars 2007

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.
Messages postés
117
Date d'inscription
samedi 4 janvier 2003
Statut
Membre
Dernière intervention
19 juin 2009
1
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
Messages postés
3817
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
2 septembre 2020
112
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.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.