OVH Cloud OVH Cloud

SendMessage et EditBox

13 réponses
Avatar
darkwall_37
Bonjour,

J'essaye d'afficher 10 fois dans notepad des chaines de caract=E8res de
taille variable. Cependant, rien ne se passe, en fait si j'ai bien
compris, il faut que je r=E9cup=E8re l'EditBox de Notepad. A priori,
FindWindowA ne semble pas =EAtre la fonction appropri=E9 =E0 ce que je
recherche. Peut aussi que WM_CHAR n'est pas le bon type, mais je ne
trouve pas de documentation clair sur le fonctionnement de
SendMessage. Je voulais donc savoir si vous pouviez =E9clairer ma
lanterne.

Merci d'avance !

#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <time.h>

int main ()
{

_sleep(2000);
char flux[]=3D{'
','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','=
s','t','u','v','w','x','y','z'};

int taille=3Dsizeof(flux)/sizeof(char);

HWND Handle =3D FindWindowA("Notepad",NULL);

srand(time(NULL));

int i=3D0;
for ( i ; i<10 ; i++ )
{
int taille_aleatoire=3Drand()%taille;

int j=3D0;
for ( j ; j<taille_aleatoire ; j++ )
{
int l=3Drand()%taille;
SendMessage(Handle,WM_CHAR,VkKeyScan(flux[i]),
0);
_sleep(50);
}
}

}

3 réponses

1 2
Avatar
darkwall_37
On 3 nov, 08:02, "Steph" wrote:
"darkwall_37" a écrit dans le message de ne ws:

On 2 nov, 21:34, Christian ASTOR wrote:> ...
> Est-ce qu'il est possible de n'afficher que que l'endroit où le

curseur pointe ou d'une autre manière quelle qu'elle soit.

Tu trouves les fenetres visuellement avec la souris et le 'Finder Tool' : http://support.citrix.com/article/html/images/CTX103137-2.gif



Je ne cherche pas le class name. Je peux déjà le faire avec le code
qui quit. En réalité, je cherche HWND Handle = FindWindowEx(FindWindo w
("Notepad", NULL), NULL,"Edit", NULL); je cherche comment faire pour
trouver cette mystèrieuse valeur "EDIT" qui semble sortir de nulle
part ! Je ne cherche pas "Notepad car ça je sais trouver. Autant pour
moi je me suis sûrement mal expliqué.

Merci.

#include <windows.h>
#include <stdio.h>
#include <conio.h>
int main(int argc, char * argv[])
{
HWND hFore;
char szBuffer[128];
int iNbChar;

printf("Vous avez 5 secondes pour activer la fenêtre dont vous
voulez connaître le class namern");
printf("Appuyez sur une touche pour déclancher le compteur ...");
getch();
Sleep(5000);

hFore = GetForegroundWindow();
iNbChar = GetClassName(hFore,szBuffer,128);
if (iNbChar && (iNbChar < 128))
{
printf("rnLe class name de cette fenêtre est :rn|
%s|",szBuffer);
printf("rnLes barres verticales (|) de gauche et droite
n'en font pas partiern");
}



else
{
printf("Impossible de récupérer le class name ou celui-ci
est trop longrn");
}

getch();

}
Avatar
Christian ASTOR
On 3 nov, 19:19, darkwall_37 wrote:

Je ne cherche pas le class name. Je peux déjà le faire avec le code
qui quit. En réalité, je cherche HWND Handle = FindWindowEx(FindWin dow
("Notepad", NULL), NULL,"Edit", NULL); je cherche comment faire pour
trouver cette mystèrieuse valeur "EDIT" qui semble sortir de nulle
part !



Mais "Edit", c'est le nom de classe de l'Edit control , child du
Notepad
C'est comme si l'on faisait :
HWND hWndNotepad = FindWindow("notepad", NULL);
HWND hWndEdit = GetWindow(hWndNotepad, GW_CHILD);
Avatar
darkwall_37
On 4 nov, 08:44, Christian ASTOR wrote:
On 3 nov, 19:19, darkwall_37 wrote:

> Je ne cherche pas le class name. Je peux déjà le faire avec le code
> qui quit. En réalité, je cherche HWND Handle = FindWindowEx(FindW indow
> ("Notepad", NULL), NULL,"Edit", NULL); je cherche comment faire pour
> trouver cette mystèrieuse valeur "EDIT" qui semble sortir de nulle
> part !

Mais "Edit", c'est le nom de classe de l'Edit control , child du
Notepad
C'est comme si l'on faisait :
HWND hWndNotepad = FindWindow("notepad", NULL);
HWND hWndEdit = GetWindow(hWndNotepad, GW_CHILD);



Expliqué comme ça, ça marche mieu ! merci je test ça.
1 2