tout est dans le titre, je cherche a convertir un HANDLE en HWND.
Pour =EAtre un peu plus pr=E9cis, ce que j'essaye de faire c'est de
r=E9cup=E9rer le PID du lecteur audio vlc(apr=E8s l'avoir lanc=E9), puis vi=
a
son PID r=E9cup=E9rer son Handle, et enfin envoyer un message via
PostMessage(), qui lancera la lecture de la musique(via la touche
espace) .
Le PID c'est bon, avoir le handle c'est bon aussi.Mais pour pouvoir
utiliser PostMessage(), j'ai besoin de convertir le HANDLE en HWND.Et
c'est a ce niveau que je bloque.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
ByB
Polo497 avait écrit le 14/10/2009 :
salut,
tout est dans le titre, je cherche a convertir un HANDLE en HWND.
Pour être un peu plus précis, ce que j'essaye de faire c'est de récupérer le PID du lecteur audio vlc(après l'avoir lancé), puis via son PID récupérer son Handle, et enfin envoyer un message via PostMessage(), qui lancera la lecture de la musique(via la touche espace) .
Le PID c'est bon, avoir le handle c'est bon aussi.Mais pour pouvoir utiliser PostMessage(), j'ai besoin de convertir le HANDLE en HWND.Et c'est a ce niveau que je bloque.
Comment je pourrait faire ?
Merci.
Bye.
Un cast ne suffit pas ? monHWND =(HWND)MonHandle;
Polo497 avait écrit le 14/10/2009 :
salut,
tout est dans le titre, je cherche a convertir un HANDLE en HWND.
Pour être un peu plus précis, ce que j'essaye de faire c'est de
récupérer le PID du lecteur audio vlc(après l'avoir lancé), puis via
son PID récupérer son Handle, et enfin envoyer un message via
PostMessage(), qui lancera la lecture de la musique(via la touche
espace) .
Le PID c'est bon, avoir le handle c'est bon aussi.Mais pour pouvoir
utiliser PostMessage(), j'ai besoin de convertir le HANDLE en HWND.Et
c'est a ce niveau que je bloque.
tout est dans le titre, je cherche a convertir un HANDLE en HWND.
Pour être un peu plus précis, ce que j'essaye de faire c'est de récupérer le PID du lecteur audio vlc(après l'avoir lancé), puis via son PID récupérer son Handle, et enfin envoyer un message via PostMessage(), qui lancera la lecture de la musique(via la touche espace) .
Le PID c'est bon, avoir le handle c'est bon aussi.Mais pour pouvoir utiliser PostMessage(), j'ai besoin de convertir le HANDLE en HWND.Et c'est a ce niveau que je bloque.
Comment je pourrait faire ?
Merci.
Bye.
Un cast ne suffit pas ? monHWND =(HWND)MonHandle;
Polo497
On 14 oct, 22:36, ByB wrote:
Polo497 avait écrit le 14/10/2009 :
> salut,
> tout est dans le titre, je cherche a convertir un HANDLE en HWND.
> Pour être un peu plus précis, ce que j'essaye de faire c'est de > récupérer le PID du lecteur audio vlc(après l'avoir lancé), pui s via > son PID récupérer son Handle, et enfin envoyer un message via > PostMessage(), qui lancera la lecture de la musique(via la touche > espace) .
> Le PID c'est bon, avoir le handle c'est bon aussi.Mais pour pouvoir > utiliser PostMessage(), j'ai besoin de convertir le HANDLE en HWND.Et > c'est a ce niveau que je bloque.
> Comment je pourrait faire ?
> Merci.
> Bye.
Un cast ne suffit pas ? monHWND =(HWND)MonHandle;- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
Ben j'ai fait le cast, mais sa ne marhce pas.VLC ne se met pas au 1er plan et l'appuit sur espace ne lance/stop pas la music. Voici le code (je debute avec winapi, donc il doit y avoir des erreurs) :
int main(void) { HANDLE hVLC; HWND hVLCWnd;
printf("PID de vlc.exe = %ldn", GetPIDByName("vlc.exe"));
/** Recup du handle de VLC via son PID **/ hVLC = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, 0, GetPIDByName("vlc.exe")); if(hVLC == NULL) { perror("OpenProcess() failed"); exit(1); } else printf("handle de vlc = 0x%Xnn", hVLC);
/** convertion du handle en HWND **/ hVLCWnd= (HWND)hVLC;
/** mise au premier plan de vlc **/ SetForegroundWindow(hVLCWnd); printf("Focus VLC...n"); Sleep(100);
/** start music */ PostMessage(hVLCWnd, WM_KEYDOWN, VK_ESCAPE, 0); printf("lecture...n"); Sleep(5000);
/** stop music **/ PostMessage(hVLCWnd, WM_KEYDOWN, VK_ESCAPE, 0); printf("Stop music...n");
return 0; }
Sur le tuto que je regarde, l'auteur utilise FindWindow() pour récupérer le handle, mais moi je ne connais pas le class name de vlc.Et je souhaiterais trouver la solution au code ci dessus.
On 14 oct, 22:36, ByB <nom...@nomail.com> wrote:
Polo497 avait écrit le 14/10/2009 :
> salut,
> tout est dans le titre, je cherche a convertir un HANDLE en HWND.
> Pour être un peu plus précis, ce que j'essaye de faire c'est de
> récupérer le PID du lecteur audio vlc(après l'avoir lancé), pui s via
> son PID récupérer son Handle, et enfin envoyer un message via
> PostMessage(), qui lancera la lecture de la musique(via la touche
> espace) .
> Le PID c'est bon, avoir le handle c'est bon aussi.Mais pour pouvoir
> utiliser PostMessage(), j'ai besoin de convertir le HANDLE en HWND.Et
> c'est a ce niveau que je bloque.
> Comment je pourrait faire ?
> Merci.
> Bye.
Un cast ne suffit pas ?
monHWND =(HWND)MonHandle;- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
Ben j'ai fait le cast, mais sa ne marhce pas.VLC ne se met pas au 1er
plan et l'appuit sur espace ne lance/stop pas la music.
Voici le code (je debute avec winapi, donc il doit y avoir des
erreurs) :
int main(void)
{
HANDLE hVLC;
HWND hVLCWnd;
printf("PID de vlc.exe = %ldn", GetPIDByName("vlc.exe"));
/** Recup du handle de VLC via son PID **/
hVLC = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, 0,
GetPIDByName("vlc.exe"));
if(hVLC == NULL)
{
perror("OpenProcess() failed");
exit(1);
}
else
printf("handle de vlc = 0x%Xnn", hVLC);
/** convertion du handle en HWND **/
hVLCWnd= (HWND)hVLC;
/** mise au premier plan de vlc **/
SetForegroundWindow(hVLCWnd);
printf("Focus VLC...n");
Sleep(100);
/** start music */
PostMessage(hVLCWnd, WM_KEYDOWN, VK_ESCAPE, 0);
printf("lecture...n");
Sleep(5000);
/** stop music **/
PostMessage(hVLCWnd, WM_KEYDOWN, VK_ESCAPE, 0);
printf("Stop music...n");
return 0;
}
Sur le tuto que je regarde, l'auteur utilise FindWindow() pour
récupérer le handle, mais moi je ne connais pas le class name de
vlc.Et je souhaiterais trouver la solution au code ci dessus.
> tout est dans le titre, je cherche a convertir un HANDLE en HWND.
> Pour être un peu plus précis, ce que j'essaye de faire c'est de > récupérer le PID du lecteur audio vlc(après l'avoir lancé), pui s via > son PID récupérer son Handle, et enfin envoyer un message via > PostMessage(), qui lancera la lecture de la musique(via la touche > espace) .
> Le PID c'est bon, avoir le handle c'est bon aussi.Mais pour pouvoir > utiliser PostMessage(), j'ai besoin de convertir le HANDLE en HWND.Et > c'est a ce niveau que je bloque.
> Comment je pourrait faire ?
> Merci.
> Bye.
Un cast ne suffit pas ? monHWND =(HWND)MonHandle;- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
Ben j'ai fait le cast, mais sa ne marhce pas.VLC ne se met pas au 1er plan et l'appuit sur espace ne lance/stop pas la music. Voici le code (je debute avec winapi, donc il doit y avoir des erreurs) :
int main(void) { HANDLE hVLC; HWND hVLCWnd;
printf("PID de vlc.exe = %ldn", GetPIDByName("vlc.exe"));
/** Recup du handle de VLC via son PID **/ hVLC = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, 0, GetPIDByName("vlc.exe")); if(hVLC == NULL) { perror("OpenProcess() failed"); exit(1); } else printf("handle de vlc = 0x%Xnn", hVLC);
/** convertion du handle en HWND **/ hVLCWnd= (HWND)hVLC;
/** mise au premier plan de vlc **/ SetForegroundWindow(hVLCWnd); printf("Focus VLC...n"); Sleep(100);
/** start music */ PostMessage(hVLCWnd, WM_KEYDOWN, VK_ESCAPE, 0); printf("lecture...n"); Sleep(5000);
/** stop music **/ PostMessage(hVLCWnd, WM_KEYDOWN, VK_ESCAPE, 0); printf("Stop music...n");
return 0; }
Sur le tuto que je regarde, l'auteur utilise FindWindow() pour récupérer le handle, mais moi je ne connais pas le class name de vlc.Et je souhaiterais trouver la solution au code ci dessus.
Christian ASTOR
On 15 oct, 06:58, Polo497 wrote:
Ben j'ai fait le cast, mais sa ne marhce pas.VLC ne se met pas au 1er plan et l'appuit sur espace ne lance/stop pas la music.
Tu as mélangé Process handle et Window handle. La classe étant générique (un "QWidget"), tu peux utiliser EnumWindow s ()-GetWindowThreadProcessId() sur les fenêtres visibles (et je ne comprends pas pourquoi tu envoies un VK_ESCAPE ensuite...)
On 15 oct, 06:58, Polo497 <thibault.dumou...@wanadoo.fr> wrote:
Ben j'ai fait le cast, mais sa ne marhce pas.VLC ne se met pas au 1er
plan et l'appuit sur espace ne lance/stop pas la music.
Tu as mélangé Process handle et Window handle.
La classe étant générique (un "QWidget"), tu peux utiliser EnumWindow s
()-GetWindowThreadProcessId() sur les fenêtres visibles
(et je ne comprends pas pourquoi tu envoies un VK_ESCAPE ensuite...)
Ben j'ai fait le cast, mais sa ne marhce pas.VLC ne se met pas au 1er plan et l'appuit sur espace ne lance/stop pas la music.
Tu as mélangé Process handle et Window handle. La classe étant générique (un "QWidget"), tu peux utiliser EnumWindow s ()-GetWindowThreadProcessId() sur les fenêtres visibles (et je ne comprends pas pourquoi tu envoies un VK_ESCAPE ensuite...)
Polo497
On 15 oct, 08:10, Christian ASTOR wrote:
On 15 oct, 06:58, Polo497 wrote:
> Ben j'ai fait le cast, mais sa ne marhce pas.VLC ne se met pas au 1er > plan et l'appuit sur espace ne lance/stop pas la music.
Tu as mélangé Process handle et Window handle. La classe étant générique (un "QWidget"), tu peux utiliser EnumWind ows ()-GetWindowThreadProcessId() sur les fenêtres visibles (et je ne comprends pas pourquoi tu envoies un VK_ESCAPE ensuite...)
Bon j'ai passé pas mal de temps a éssayer de capter EnumWindows(), j'arrive pas.Je saurais même pas expliquer ce que je compend pas.Je suis trop débutant en Winapi (depuis le debut de la semaine) pour vraiment comprendre. QWidget j'ai regardé aussi, je ne connais absolument pas Qt, donc c'est chaud.
Sinon j'ai fait comme cela, sa fonctionne :
int main(void) { HWND hFore; DWORD VLCId = 0;
Sleep(2000);
/* Recup du Handle de fenetre, de la fenetre qui a le focus */ hFore = GetForegroundWindow();
En tout cas j'ai apprit pas mal de truc, même si je ne sait pas encore bien les utiliser.
@+++
On 15 oct, 08:10, Christian ASTOR <casto...@club-internet.fr> wrote:
On 15 oct, 06:58, Polo497 <thibault.dumou...@wanadoo.fr> wrote:
> Ben j'ai fait le cast, mais sa ne marhce pas.VLC ne se met pas au 1er
> plan et l'appuit sur espace ne lance/stop pas la music.
Tu as mélangé Process handle et Window handle.
La classe étant générique (un "QWidget"), tu peux utiliser EnumWind ows
()-GetWindowThreadProcessId() sur les fenêtres visibles
(et je ne comprends pas pourquoi tu envoies un VK_ESCAPE ensuite...)
Bon j'ai passé pas mal de temps a éssayer de capter EnumWindows(),
j'arrive pas.Je saurais même pas expliquer ce que je compend pas.Je
suis trop débutant en Winapi (depuis le debut de la semaine) pour
vraiment comprendre.
QWidget j'ai regardé aussi, je ne connais absolument pas Qt, donc
c'est chaud.
Sinon j'ai fait comme cela, sa fonctionne :
int main(void)
{
HWND hFore;
DWORD VLCId = 0;
Sleep(2000);
/* Recup du Handle de fenetre, de la fenetre qui a le focus */
hFore = GetForegroundWindow();
> Ben j'ai fait le cast, mais sa ne marhce pas.VLC ne se met pas au 1er > plan et l'appuit sur espace ne lance/stop pas la music.
Tu as mélangé Process handle et Window handle. La classe étant générique (un "QWidget"), tu peux utiliser EnumWind ows ()-GetWindowThreadProcessId() sur les fenêtres visibles (et je ne comprends pas pourquoi tu envoies un VK_ESCAPE ensuite...)
Bon j'ai passé pas mal de temps a éssayer de capter EnumWindows(), j'arrive pas.Je saurais même pas expliquer ce que je compend pas.Je suis trop débutant en Winapi (depuis le debut de la semaine) pour vraiment comprendre. QWidget j'ai regardé aussi, je ne connais absolument pas Qt, donc c'est chaud.
Sinon j'ai fait comme cela, sa fonctionne :
int main(void) { HWND hFore; DWORD VLCId = 0;
Sleep(2000);
/* Recup du Handle de fenetre, de la fenetre qui a le focus */ hFore = GetForegroundWindow();