PostMessage

Signaler
Messages postés
2865
Date d'inscription
samedi 2 novembre 2002
Statut
Membre
Dernière intervention
11 mai 2009
-
Messages postés
2865
Date d'inscription
samedi 2 novembre 2002
Statut
Membre
Dernière intervention
11 mai 2009
-
Salut a tous,
voila j'essaie de similer la pression de la touche Windows et M pour pouvoir réduire toutes les fenetres visibles, je fait donc:
PostMessage(NULL, WM_KEYDOWN, VK_LWIN && 0x4D, NULL);


seulement rien je ne se produit vous aurriez une solution?
Bob...

"La chance accorde ses faveur aux esprits avertis..."

21 réponses

Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
25
T'as pas poste une source qui devait faire cela ?
BruNews, ciao...
Messages postés
2865
Date d'inscription
samedi 2 novembre 2002
Statut
Membre
Dernière intervention
11 mai 2009
10
si mais on m'a dit que en appuyant sur la touche windows et M sa fesait le meme resultat, j'ai posté la source car il me semble qu'elle pourrait quand meme servir à d'autre personne... la reduction des fenetres par ma source est assez lente, alors je voulais faire en sorte que le programme simule la pression des touches Windows et M pour que la reduction des fenetres soit plus rapide (mais je veux faire, par simple curiosité de savoir comment faire)... J'ai donc écrit le bout de code qui est au dessus, mais ca marche pas, tu pourrais pas me dire pourquoi?
Bob...

"La chance accorde ses faveur aux esprits avertis..."
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
25
PostMessage(NULL pas la peine d'aller plus loin, faut un hwnd valide.
Essaie:
PostMessage(HWND_BROADCAST, ...
BruNews, ciao...
Messages postés
2865
Date d'inscription
samedi 2 novembre 2002
Statut
Membre
Dernière intervention
11 mai 2009
10
non j'ai deja essayer et ca ne marche pas...
Bob...

"La chance accorde ses faveur aux esprits avertis..."
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
25
T'as remarque que j'avais mis des ..., sur que chaque fenetre se fout du rccourci clavier.
Faudrait que je regarde ta source, anormal que soit lent alors que c'est une operation hyper rapide. Faut revoir ce que tu fais dans EnumWindows().
BruNews, ciao...
Messages postés
2865
Date d'inscription
samedi 2 novembre 2002
Statut
Membre
Dernière intervention
11 mai 2009
10
oui j'ai remarqué que t'avais mis des ..., mais j'ai beau remplir la fonction comme tu la 'modifié' cela ne marche pas...
sinon pour la source que j'ai posté qui est lente, moi je vois pas pourquoi, c'est pour ca que si je simule le raccourci, la reduction des fenetres sera plus rapide !!!
Bob...

"La chance accorde ses faveur aux esprits avertis..."
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
25
Je suis alle voir ta source, gros malaise. Avant de commencer a taper du code faut reflechir chouia au deroulement du prog.
Tu fais un hook GLOBAL !!! ta procedure risque fort d'etre lancee plusieurs fois au lieu d'une seule, il manque le systeme de synchro pour savoir s'il ne vient pas d'etre deja lance depuis la derniere frappe clavier.
BruNews, ciao...
Messages postés
2865
Date d'inscription
samedi 2 novembre 2002
Statut
Membre
Dernière intervention
11 mai 2009
10
et comment jele faire ce system de synchro?
Bob...

"La chance accorde ses faveur aux esprits avertis..."
Messages postés
2865
Date d'inscription
samedi 2 novembre 2002
Statut
Membre
Dernière intervention
11 mai 2009
10
mais je suis bien obligé de faire un hook global, parce que si je le fait pas et que la fenetre active n'est pas celle de mon programme, bah si je fait TAB, rien ne va se passer !!!
Bob...

"La chance accorde ses faveur aux esprits avertis..."
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
25
Mets un indic de derniere touche 0 ou 1 pour savoir s'il y a eu autre chose depuis TAB par exemple.
Et pense bien que la dll a une instance separee dans chaque processus !!! Suffit de chercher un peu dans les sources, tout ceci y a ete decrit par divers auteurs (2 au moins dont je me souviens).
BruNews, ciao...
Messages postés
2865
Date d'inscription
samedi 2 novembre 2002
Statut
Membre
Dernière intervention
11 mai 2009
10
tu voudrais pas modifié ce qui va pas et me l'envoyer stp, car je comprend pas tres bien ce qui faut changer...
Bob...

"La chance accorde ses faveur aux esprits avertis..."
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
25
Non pas de code 'pret a porter' sinon au prochain probleme tu seras toujours dans la mouise, tu dois comprendre ce qui se passe et resoudre en consequence.
Une variable globale dans la dll:
int baction = 0;
dans l'analyse des touches:
if(wParam == VK_TAB) {
if(baction) {
baction = 0; // de suite car URGENCE
ReductionFenetres; // seulement maintenant
}
}
else baction = 1; // wParam != VK_TAB

baction doit etre partage entre toutes les instances de la dll sinon inoperant, pour cela je te laisse chercher un peu.
L'instance qui installe le hook place de suite baction = 1.

BruNews, ciao...
Messages postés
2865
Date d'inscription
samedi 2 novembre 2002
Statut
Membre
Dernière intervention
11 mai 2009
10
deja je ne comprend pourquoi le fait de rajouter la variable baction changerai quelque chose a mon programme, ensuite si je modifie la dll comme tu me le dit, la fonction concerné est donc maintenant comme ceci:

LRESULT CALLBACK kbdWinAmp(int nCode, WPARAM wParam, LPARAM lParam) 
{
if(nCode >= 0) 
{
if(wParam == VK_TAB)
{
if(baction)
{
baction = 0;
EnumWindows((WNDENUMPROC) EnumWindowsProc, 0);
}
}
else
{
baction = 1;
}
}

 return CallNextHookEx(hhk, nCode, wParam, lParam);
}


or cela ne change rien parce ke une fois la dll compilé et le programme exécuter lors de l'appuis sur la touche TAB rien ne se passe...
Bob...

"La chance accorde ses faveur aux esprits avertis..."
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
25
Et le dernier paragraphe de mon precedent message ?
BruNews, ciao...
Messages postés
2865
Date d'inscription
samedi 2 novembre 2002
Statut
Membre
Dernière intervention
11 mai 2009
10
ok j'avais pas fait gaffe, je vais chercher un peu et je verrai bien... sinon merci pour ton aide !!! :)
Bob...

"La chance accorde ses faveur aux esprits avertis..."
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
Désolé de vous interrompre, mais pour revenir au problème de départ tu peux faire comme ca:

#include <windows.h>

int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
keybd_event(VK_LWIN, 0, 0, 0);
keybd_event(0x4D, 0, 0, 0);
keybd_event(0x4D, 0, KEYEVENTF_KEYUP, 0);
keybd_event(VK_LWIN, 0, KEYEVENTF_KEYUP, 0);
return 1;
}
Messages postés
2865
Date d'inscription
samedi 2 novembre 2002
Statut
Membre
Dernière intervention
11 mai 2009
10
Salut,
bon je suis désoler mais je n'arrive pas à trouver la solution avec cette variable baction :sad) , alors stp BruNews donne moi la solution et puis si j'ai la solution, je comprendrais bien comment ca se passe...
Bob...

"La chance accorde ses faveur aux esprits avertis..."
Messages postés
2865
Date d'inscription
samedi 2 novembre 2002
Statut
Membre
Dernière intervention
11 mai 2009
10
car en fait j'ai fait 2-3 trucs mais ca ne change rien à l'execution de mon programme, la réduction des fenetres est toujours aussi lente !!!
Bob...

"La chance accorde ses faveur aux esprits avertis..."
Messages postés
2865
Date d'inscription
samedi 2 novembre 2002
Statut
Membre
Dernière intervention
11 mai 2009
10
ou sinon tu donne l'adresse des sources qui peuvent m'aider a resoudre mon problème pour que j'analyse leur code est corriger ma source.
Bob...

"La chance accorde ses faveur aux esprits avertis..."
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
25
J'ai mis en source, version ultra simple et resultat instantane.
BruNews, ciao...