Acceder à un processus et écrire une ligne à l'interieur

cs_patos Messages postés 3 Date d'inscription mercredi 11 septembre 2002 Statut Membre Dernière intervention 1 août 2006 - 31 juil. 2006 à 12:32
cs_darunia Messages postés 354 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 24 mars 2011 - 1 août 2006 à 16:33
Bonjour,
Sous VB6 en environnement W2000, je voudrais faire un code qui puisse simplement récupérer le processus d'un Notepad.exe qui est déjà ouvert, et y écrire un texte fixe via un programme VB.

condition initiale : notepad.exe est ouvert sur le systeme
But du code VB6 :
   _accéder à ce 'notepad.exe'
   _ écrire un texte fixe dans ce 'notepad.exe' et faire un saut de ligne

Merci d'avance

Patos

6 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
31 juil. 2006 à 13:21
Et qu'est-ce que tu n'arrive pas à faire ?
0
cs_darunia Messages postés 354 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 24 mars 2011 2
31 juil. 2006 à 13:41
Humm je crois comprendre ce que tu veux ...

Trouve le handle de la fenetre du notepad avec un FindWindow.
Ensuite trouve celui de la zone de texte en spécifiant son ID (cherche dans Spy++ pour trouver l'ID).
Et puis envoie lui un message pour ecrire le texte.

D@runia
0
cs_patos Messages postés 3 Date d'inscription mercredi 11 septembre 2002 Statut Membre Dernière intervention 1 août 2006
31 juil. 2006 à 16:33
le FindWindow marche bien, merci :-)


Cependant sans passer par Spy++, n'y a t'il pas un moyen (par le code) pour accéder à la zone de texte et y écrire ??

Patos
0
cs_darunia Messages postés 354 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 24 mars 2011 2
1 août 2006 à 09:33
Ben le bloc note n'est pas une appli trop compliquée ... Tu peux parcourir toutes ses fenetres  enfant


(EnumChildWindows)


et trouver la fenetre dont la classe est "edit" (GetClassName).

Sinon je ne voulais pas dire qu'il fallait que tu passes par Spy++ DANS ton code !
Tu lances Spy++, et tu cherche la fenetre du bloc note. Ensuite, tu trouves la fenetre de la zone de texte -> Bingo, tu as son ID
Tu peux alors dans ton code choper directement la zone de texte avec GetDlgItem !

<name>
</name>
<link href="../../../../../css/ie4.css" type="text/css" rel="stylesheet" />
<!-- @ -->
<link href="../../../../../css/inetsdk.css" type="text/css" rel="stylesheet" />
<!-- @ -->
<style type="text/css"><![CDATA[
PRE.clsCode { font-size:110%; }
PRE.clsSyntax { font-size:100%; }
TD DIV.clsBeta { display:none;}

A:link { color:#0000ff; text-decoration:underline;}
A:visited { color:#0000ff; text-decoration:underline;}
A:hover { color:#3366ff; text-decoration:underline;}
MSHelp\:link {
color:#0000ff;
text-decoration:underline;
cursor:hand;
hoverColor:#3366ff;
filterString: ;}
]]></style>

<link href="ms-help://Hx/HxRuntime/HxLink.css" type="text/css" rel="stylesheet" />



<xml id="_topicdata" pagetype="function" proj="WinUIHXS" name="GetDlgItem" pubpath="/WinUI/WindowsUserInterface/Windowing/DialogBoxes/DialogBoxReference/DialogBoxFunctions/GetDlgItem.htm">
<!-- topic data -->
<root>
</root>
</xml>


<xml xmlns="">
<mshelp:keyword index="A" term="_win32_GetDlgItem">
</mshelp:keyword>
<mshelp:keyword index="A" term="_win32_GetDlgItem_cpp">
</mshelp:keyword>
<mshelp:toctitle title="GetDlgItem Function">
</mshelp:toctitle>
<mshelp:rltitle title="GetDlgItem Function ()">
</mshelp:rltitle>
<mshelp:keyword index="F" term="GetDlgItem">
</mshelp:keyword>
<mshelp:keyword index="K" term="GetDlgItem">
</mshelp:keyword>
<mshelp:attr name="TopicType" value="kbRef">
</mshelp:attr>
<mshelp:attr name="Locale" value="kbEnglish">
</mshelp:attr>
<mshelp:attr name="DevLang" value="C++">
</mshelp:attr>
<mshelp:attr name="Technology" value="WinUI">
</mshelp:attr>
<mshelp:attr name="TechnologyVers" value="kbWinUI">
</mshelp:attr>
<mshelp:attr name="DocSet" value="WCSDK">
</mshelp:attr>
<mshelp:attr name="DocSet" value="LHSDK">
</mshelp:attr>
<mshelp:attr name="DocSet" value="PSDK">
</mshelp:attr>
<mshelp:attr name="TargetOS" value="Windows">
</mshelp:attr>
<mshelp:attr name="TopicType" value="apiref">
</mshelp:attr>
<mshelp:attr name="APIName" value="GetDlgItem">
</mshelp:attr>
<mshelp:attr name="APIType" value="DllExport">
</mshelp:attr>
<mshelp:attr name="APILocation" value="user32.dll">
</mshelp:attr>
<mshelp:attr name="TopicType" value="kbSyntax">
</mshelp:attr>
</xml>





D@runia
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_patos Messages postés 3 Date d'inscription mercredi 11 septembre 2002 Statut Membre Dernière intervention 1 août 2006
1 août 2006 à 15:37
Grace à la fonction EnumChildWindows, je trouve la fenetre dont la classe est 'Edit'. C'est un premier pas, merci :-)

A partir de la comment procéder ?
L' Identifiant à utiliser est-il  celui en 1er paramètre de la fonction EnumChildProc?
Comment écrire dans la fenetre ? (fonction + paramètre)

PS : j'ai pas réussi à exploiter GetDlgItem, comment ca marche ?

Patos
0
cs_darunia Messages postés 354 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 24 mars 2011 2
1 août 2006 à 16:33
Pour ecrire dans la fenetre, utilise la fonction SendMessage avec le message WM_SETTEXT (plus d'infos dans MSDN ).
Par contre, fait gaffe a pas ecraser le text deja présent (WM_GETTEXT ???)
Une autre solution serait de mettre ton texte dans le presse papier et de le coller (WM_PASTE), mais ça depend de la position du curseur ...

D@runia
0
Rejoignez-nous