Bonjour,
Je travaille sur un petit programme permettant de retourner les coordonnées d'une fenêtre dont le nom est passé en paramètre.
Voici mon problème :
Je tente de récupérer les arguments d'appel de mon programme grâce à LPWSTR GetCommandLineW() et LPWSTR* CommandLineToArgvW(LPCWSTR, int *).
Je veux ensuite passer en 2eme argument de la fonction HWND WINAPI FindWindow(LPCTSTR, LPCTSTR) le second champ de cette LPWSTR* que je caste donc en LPSTR (donc (LPSTR)commande[1]).
Le problème est qu'en appelant le programme il me renvoie ceci (il n'a pas trouvé la fenêtre nommée "Fenetre") :
alors qu'en passant directement la chaine "Fenetre" à la fonction FindWindow() il me renvoie bien ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 C:\Users\Sabotaz\FindWindow>FindWindow.exe Fenetre Fenetre 2000082261 -2 19851693 2000334401
Voici la totalité de mon code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 C:\Users\Sabotaz\FindWindow>FindWindow.exe Fenetre Fenetre 0 1366 22 728
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 #include <windows.h> #include <stdio.h> int WINAPI WinMain ( HINSTANCE cetteInstance, HINSTANCE precedenteInstance, LPSTR lignesDeCommande, int modeDAffichage ) { HWND fenetre; WINDOWINFO infoFenetre; LPWSTR* commandes; int nbCommandes; LONG gauche, droit, haut, bas; commandes = CommandLineToArgvW(GetCommandLineW(), &nbCommandes); infoFenetre.cbSize = sizeof(WINDOWINFO); printf("%ws\n", commandes[1]); //fenetre = FindWindow(NULL, (LPSTR)commandes[1]); fenetre = FindWindow(NULL, "Fenetre"); GetWindowInfo(fenetre, &infoFenetre); gauche = infoFenetre.rcClient.left; droit = infoFenetre.rcClient.right; haut = infoFenetre.rcClient.top; bas = infoFenetre.rcClient.bottom; printf("%i %i %i %i\n", gauche, droit, haut, bas); LocalFree(commandes); return 0; }
Merci de votre aide, et en espérant avoir été assez clair,
Sab.
Partager