WM_SETTEXT sur Edit

Julien237 Messages postés 883 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 3 mars 2009 - 16 janv. 2008 à 18:06
Julien237 Messages postés 883 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 3 mars 2009 - 17 janv. 2008 à 23:16
Bonjour,
J'essaye de faire quelque chose que je pensais simple, mais qui me pose un problème assez étrange.
J'ai CutePDF (un petit programme qui installe une imprimante virtuelle servant à "imprimer" dans un fichier pdf), et mon but est d'automatiser l'impression de documents en pdf.
J'arrive à demander au programme ouvrant ces documents de lancer l'impression en sélectionnant l'imprimante CutePDF, mais ensuite, CutePDF affiche une boite de dialogue demandant où je veux enregistrer mon pdf. Boite de dialogue que j'aimerais pouvoir remplir automatiquement. Je récupère le handle de la boite de dialogue, puis celui du controle "Edit" qu'elle contient afin de modifier le chemin d'enregistrement.
Voici mon code :

//hwnd est le handle du Edit
//Modifie le texte :
SendMessage(hwnd, WM_SETTEXT, IntPtr.Zero, dest);
//Thread.Sleep(500);
//Envoie la touche enter pour valider la boite de dialogue :
PostMessage(hwnd, WM_KEYDOWN, new IntPtr((int)Keys.Enter), IntPtr.Zero);

Lorsque je l'exécute au pas-à-pas, ça marche, la valeur de l'Edit control se met bien à jour, par contre lorsque je l'exécute normalement (avec ou sans le Sleep), l'Edit control garde sa valeur par défaut.
Quelqu'un pourrait m'expliquer ?

<hr size="2" width="100%" />Julien.

3 réponses

Julien237 Messages postés 883 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 3 mars 2009 7
16 janv. 2008 à 18:28
J'ai trouvé une (drôle de) solution :

SendMessage(hwnd, WM_SETTEXT, IntPtr.Zero, dest);
SendMessage(hwnd, WM_SETTEXT, IntPtr.Zero, dest);
SendMessage(hwnd, WM_SETTEXT, IntPtr.Zero, dest);

Une fois ça marche pas, deux fois non plus, mais trois fois, ça marche, si quelqu'un pouvait m'expliquer ça me ferait plaisir quand même ^^...

<hr size="2" width="100%" />Julien.
0
ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 26
17 janv. 2008 à 22:29
salut,

sinon tu as l'api SetWindowText...

ShareVB
0
Julien237 Messages postés 883 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 3 mars 2009 7
17 janv. 2008 à 23:16
C'est pareil, SetWindowsText envoie un SendMessage sur le handle avec WM_SETTEXT comme message (enfin d'après la doc msdn)... Maintenant vu la nature quelque peu étrange du bug ca vaudrait le coup d'essayer, mais demain, il est un peu tard aujourd'hui.
Merci, bonne nuit

<hr size="2" width="100%" />Julien.
0
Rejoignez-nous