guy jeuniaux
Messages postés35Date d'inscriptionvendredi 12 mars 2004StatutMembreDernière intervention27 avril 2010
-
1 déc. 2005 à 08:06
guy jeuniaux
Messages postés35Date d'inscriptionvendredi 12 mars 2004StatutMembreDernière intervention27 avril 2010
-
2 déc. 2005 à 23:18
Bonjour à tous,
Je voudrais récupérer le HANDLE d'une fenetre afin de controler son état.
Cette Fenetre est celle d'une commande DOS d'un batch lancé par mon appli.
Elle possède un TITLE : SAUVEGARDE BASE DE DONNEES
Et j'utilise la procédure suivante :
------------------------------------------------------------------
var
h:thandle;
a:Pchar;
beginshowmessage('Une fois la sauvegarde lancée, réduisez la fenêtre');
winexec('savedb.bat',sw_SHOW);
a:=pchar('"SAUVEGARDE BASE DE DONNEES"');
h :=FindWindow(nil,a);
edit3.Text:=inttostr(h);
-------------------------------------------------------------------
La valeur renvoyée est toujours 0 , j'ai aussi essayé en essayant de récuperer le HANDLE de ma fenetre DELPHI en cours : toujours 0
Je suis en DELPHI 5
Est ce qu'il y aurait quelque chose qui manque ?
Est ce que cette fonction est valable pour des fenêtres DOS ?
Un problème dans la saisie du titre ?
J'ai beau chercher dans les réponses ou forum précédent je ne trouve pas
( ou je cherche mal )
Si quelqu'un peut m'aider ce serait sympa
MERCI d'avance
guy
guy jeuniaux
Messages postés35Date d'inscriptionvendredi 12 mars 2004StatutMembreDernière intervention27 avril 2010 1 déc. 2005 à 18:59
Merci pour la réponse,
Mais non avec ou sans guillemets c'est pareil.
De plus apparement il est conseillé de mettre les guillemets lorsqu'il y a des espaces
dans le nom.
guy jeuniaux
Messages postés35Date d'inscriptionvendredi 12 mars 2004StatutMembreDernière intervention27 avril 2010 2 déc. 2005 à 08:03
Apparament c'est moins simple qu'il n'y parait.
J'ai essayé avec ton tuyau et en simplifiant les strings : titre de la fenêtre à partir de laquelle je lance mon batch : (caption =SAUVEGARDE)
a:=pchar('SAUVEGARDE'); // titre de mon batch
b:=pchar(form5.Caption);
h :=FindWindow(b,a);
Et j'ai toujours : 0
guy
Vous n’avez pas trouvé la réponse que vous recherchez ?
WhiteHippo
Messages postés1154Date d'inscriptionsamedi 14 août 2004StatutMembreDernière intervention 5 avril 20123 2 déc. 2005 à 12:53
Non, là tu transmets deux fois la même chose, c'est à dire deux fois le titre de la fenetre et non le titre et le nom de classe de ton application batch !!
Faut dire que j'ai peut être pas été bien clair jusqu'à présent
a := Nom de classe de ton programme batch
Pour avoir le nom de classe, regarde la valeur de Application.ClassName de ton programme batch normalement 'TApplication'
b : = Titre de ton programme batch
Pour avoir le titre, regarde la valeur de Application.Title de ton programme batch normalement le nom du projet (Par ex 'Project1' )
Ce qui donnerait comme code :
a := 'TApplication';
b := 'Project1';
h :=FindWindow(b,a);
Là, tu ne dois plus avoir de problèmes pour récupérer le handle
Cordialement.
<HR>
Il existe 10 catégories de personne. Ceux qui connaissent le binaire et les autres...
guy jeuniaux
Messages postés35Date d'inscriptionvendredi 12 mars 2004StatutMembreDernière intervention27 avril 2010 2 déc. 2005 à 23:18
Merci de chercher une solution.
Mais entre les échanges j'avais essayé ceci ( des fois que) :
var
h:hwnd;
a:Pchar;
beginshowmessage('Une fois la sauvegarde lancée, réduisez la fenêtre');
winexec('savedb.bat',sw_SHOW);
a:=pchar('SAUVEGARDE');// après avoir changé le titre du batch
h :=FindWindow(nil,a);
edit3.Text:=inttostr(h);
Et cela fonctionne.
C'est probablement le fait d'avoir des espaces dans le titre qui gène.
Du coup je n'ai pas essayé ta solution.