IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++Builder Discussion :

Combo de touches... [FAQ]


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Combo de touches...
    Bonjour à tous et à toutes!

    J'ai une petite question: Comment utiliser la combo de deux touches (par exemple Ctrl +1) dans ce cas là:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    LRESULT __stdcall HookClavier(int nCode, WPARAM wParam, LPARAM lParam) 
    { 
      if(nCode >= 0)
        {
          HWND hwamp;
          if(wParam != VK_F8) goto defRet;
          if(lParam & 0x80000000) goto defRet; // 1 SEULE FOIS
          if(hwamp = FindWindow("Winamp v1.x", 0)) PostMessage(hwamp, WM_KEYDOWN, 88, 0);
        }
    defRet: 
      return CallNextHookEx(hHook, nCode, wParam, lParam);
    }
    Etant donné, que ceci est un Hook et j'ai pas de Forms dedans, donc je ne peux pas utiliser OnKeyDown et je vois pas comment je pourrais integrer un code dans le genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ((Key == 'A') && (Shift.Contains(ssCtrl)))
    J'ai essayé de faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     if(wParam != VK_CONTROL & VK_F8) goto defRet;
    par exemple, mais rien, il fait le Ctrl, mais pas la suite.. les "+" n'aident pas non plus (à la place de "&").

    Comment faire s'il vous plaît?

    Sinon juste une autre petite question: Comment faire pour distribuer l'executable avec tous ses paquets? Car chez les autres ca marche pas, ca demande un tas de trucs.. (je sais c'était déjà dit mille fois, mais je sais plus où c'est )

    Merci à l'avance,
    ZiKO.

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 163
    Par défaut
    Salut,

    à mon avis l'appui sur Ctrl puis sur F8 se fait en deux temps par le système.

    Tu recevras un premier message t'indiquant que la touche Ctrl est enfoncé. A toi de stocker l'état de la touche en mémoire.

    Quand tu reçois un message qui t'indique que la trouche F8 est enfonçée tu vérifie que Ctrl est toujours enfonçée et si c'est le cas tu effectue ton action.

    Par contre je te déconseille l'utilisation des goto.

    Pour les packets...ils sont dans le dossier de C++ Builder quelque part ! Lire le fichier deploy.txt du même dossier.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Salut, pas obligatoirement Ctrl + F8.. ce qui me faut plutot c'est les Ctrl+1 etc..

    Peux tu me faire un exemple stp?

    Sinon, pourquoi ne pas utiliser les goto?

  4. #4
    Membre éprouvé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 163
    Par défaut
    Un exemple...

    La à froid avec ce que j'ai ss la main ça va être dur.

    En fait il faut que dans ton hook tu fasse qqc comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    si message = WM_KEYUP et touche = VK_CTRL
    alors is_ctrl_down = false;
     
    si message = WM_KEYDOWN
       si touche = VK_CTRL
          is_ctrl_down = true;
       sinon si touche = VK_1 // La tu met ce que tu veux
          lancer traitement -> ici ton envoie de message à winamp
       fin si
    fin si
    Pour les goto j'avais entendu que ce n'était pas très propre en C++...mais ça reste à confirmer !

  5. #5
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Par défaut
    Salut

    Perso, j'ai fait comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    // Tester la touche Ctrl
    if ((GetKeyState(VK_CONTROL) &  0x8000))
    ...................
    ....................
     
    // tester la touche Shift
    if ((GetKeyState(VK_SHIFT) &  0x8000))
    ...................
    ....................
    // tester la touche Alt
    if ((GetKeyState(VK_MENU) &  0x8000))
    Dixit MSDN :
    Citation Envoyé par MSDN
    GetKeyState
    The GetKeyState function retrieves the status of the specified virtual key. The status specifies whether the key is up, down, or toggled (on, off—alternating each time the key is pressed).

    SHORT GetKeyState(
    int nVirtKey // virtual-key code
    );
    Parameters
    nVirtKey
    [in] Specifies a virtual key. If the desired virtual key is a letter or digit (A through Z, a through z, or 0 through 9), nVirtKey must be set to the ASCII value of that character. For other keys, it must be a virtual-key code.
    If a non-English keyboard layout is used, virtual keys with values in the range ASCII A through Z and 0 through 9 are used to specify most of the character keys. For example, for the German keyboard layout, the virtual key of value ASCII O (0x4F) refers to the "o" key, whereas VK_OEM_1 refers to the "o with umlaut" key.

    Return Values
    The return value specifies the status of the specified virtual key, as follows:

    If the high-order bit is 1, the key is down; otherwise, it is up.
    If the low-order bit is 1, the key is toggled. A key, such as the CAPS LOCK key, is toggled if it is turned on. The key is off and untoggled if the low-order bit is 0. A toggle key's indicator light (if any) on the keyboard will be on when the key is toggled, and off when the key is untoggled.
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  6. #6
    Invité
    Invité(e)
    Par défaut
    Huh, re encore..

    Svp quelqu'un peut me faire un exemple, car je n'y comprends plus rien!

    J'ai mis ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    LRESULT __stdcall HookClavier(int nCode, WPARAM wParam, LPARAM lParam) 
    { 
      if(nCode >= 0) 
        { 
          HWND hwamp; 
          if(wParam = VK_CONTROL && wParam != 49) goto defRet; //49 c la touche "1". 
          if(lParam & 0x80000000) goto defRet; // 1 SEULE FOIS 
          if(hwamp = FindWindow("Winamp v1.x", 0)) PostMessage(hwamp, WM_KEYDOWN, 88, 0); 
        } 
    defRet: 
      return CallNextHookEx(hHook, nCode, wParam, lParam); 
    }
    Ca a l'air de rouler, sauf que ca m'ouvre la fenetre "Ouvrir Url" de winamp (alors que celle la est sous la combo Ctrl + L

    Ensuite j'ai essayé de mettre à la place de VK_Control la touche Shift.. Ca m'ouvre le fenetre ouvrir Fichier de WInamp (alors c'est juste la touche L!).

    J'ai essayé de renverser les roles, cad d'abord wParam = 49 et ensuite wParam != Vk_Control, mais la ca ne réagi pas du tout!

    Dans Postmessage dans winamp 88 signifie la touche "X" j'ai bien verifié.
    Donc je ne comprends pas d'ou vient le problème. Je comprends pas d'ou il me fait Ctrl + L ou L tout court?!! J'ai pas de L dans mon code (meme si le code est faux).

    Svp ausecours.

    La solution de Trap D, ca revient en meme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (GetKeyState(VK_CONTROL) && GetKeyState(49)
    (pareil avec les GetAsyncState)
    cela me fait Ouvrir Ctrl + L de winamp "ouvrir Url"...

    *snif*

    [EDIT]

    En fouillant j'ai trouvé ceci (ca a l'air pas mal du tout )
    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
    LRESULT __stdcall HookClavier(int nCode, WPARAM wParam, LPARAM lParam) 
    {
      if(nCode >= 0)
          {
            HWND hwamp;
            hwamp = FindWindow("Notepad", 0);
            BOOL bControlKeyDown = GetKeyState(VK_CONTROL);;
     
            if(wParam == VK_F8 && bControlKeyDown)
              {
                PostMessage(hwamp, WM_KEYDOWN, VK_F5, 0);
              }  
          }
      return CallNextHookEx(hHook, nCode, wParam, lParam);
    }
    Ca marche bizarrement! Ca fait un Double post de VK_F5 sur Notepad (F5 c pour inserer la date et heure).
    Et de même si je le fais rapidement, c-a-d j'appuis Ctrl je lache, ensuite F8.. quand je tiens CTRL appyué ca marche pas :s

    [RE-EDIT]

    Enfin j'ai compris comment ca marche ici!

    1) J'appuis sur CTRL et je lache
    2) Ensuite j'appuis sur F8 et ca Post le message F5
    3) Si j'appuis encore F8 ca va marcher encore et encore
    4) Si j'appuis de nouveau sur Ctrl la touche F8 va plus envoyé le PostMessage

    En effet c'est comme un button, on appuis ctrl et ca fait comme si il était toujours appyé mais faut pas le tenir

    La question est la même, me faut que ca intercepte Ctrl + F8 (ou peu importe apres Ctrl) mais pas comme ca marche ici...[/code]

  7. #7
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Par défaut
    Salut

    Si tu veux avoir la touche enfoncée, dans ton dernier code, fais peut-être :
    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
    LRESULT __stdcall HookClavier(int nCode, WPARAM wParam, LPARAM lParam)
    {
      if(nCode >= 0)
          {
            HWND hwamp;
            hwamp = FindWindow("Notepad", 0);
            BOOL bControlKeyDown = GetKeyState(VK_CONTROL) & 0x8000;;
     
            if(wParam == VK_F8 && bControlKeyDown == 0x8000)
              {
                PostMessage(hwamp, WM_KEYDOWN, VK_F5, 0);
              } 
          }
      return CallNextHookEx(hHook, nCode, wParam, lParam);
    }
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  8. #8
    Invité
    Invité(e)
    Par défaut
    Trap D, non ca marche pas du tout!

    Parcontre, quand je fais ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    LRESULT __stdcall HookClavier(int nCode, WPARAM wParam, LPARAM lParam) 
    {
      if(nCode >= 0)
          {
            HWND hwamp;
            hwamp = FindWindow("Notepad", 0);
     
            if(wParam == VK_F8 && GetAsyncKeyState(VK_CONTROL))
              {
                PostMessage(hwamp, WM_KEYDOWN, VK_F5, 0);
              }  
          }
      return CallNextHookEx(hHook, nCode, wParam, lParam);
    }
    Cela marche plus au moins comme je le veux.. plus précisement:
    J'appuis sur Ctrl, ensuite F8 et la ca mets le postmessage dans le bloc-notes... mais ce n'est pas ce que je veux, je veux que ctrl + f8 et pas control ensuite f8...

    J'ai aucune idée là, je commence à baisser les bras

  9. #9
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Par défaut
    Salut
    Je viens de regarder un peu plus mon code perso, en fait j'ai utilisé un hook sur la souris!!! (je teste les combinaison click-droit + ctrl ,ou shift ou alt ).
    D'après ce que j'ai vu, pour un hook clavier, tu peux juste tester si la touche Alt en enfoncée en même temps. Donc plutôt que Ctrl+F8 essaie, si tu peux alt+F8, c'est le bit 29 de Lparam qui te permet de le savoir.

    Je crois qu'il faut faire comme ça :
    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
    LRESULT __stdcall HookClavier(int nCode, WPARAM wParam, LPARAM lParam)
    {
      unsigned int val = 1 << 29;
      if(nCode >= 0)
          {
            HWND hwamp;
            hwamp = FindWindow("Notepad", 0);
     
            if(wParam == VK_F8 && (lPram & val ))
              {
                PostMessage(hwamp, WM_KEYDOWN, VK_F5, 0);
              } 
          }
      return CallNextHookEx(hHook, nCode, wParam, lParam);
    }
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  10. #10
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Trap D
    Ben, je crois qu'il faut faire comme ça :
    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
    LRESULT __stdcall HookClavier(int nCode, WPARAM wParam, LPARAM lParam)
    {
      unsigned int val = 1 << 29;
      if(nCode >= 0)
          {
            HWND hwamp;
            hwamp = FindWindow("Notepad", 0);
     
            if(wParam == VK_F8 && (lPram & val ))
              {
                PostMessage(hwamp, WM_KEYDOWN, VK_F5, 0);
              } 
          }
      return CallNextHookEx(hHook, nCode, wParam, lParam);
    }
    Huh, je pourrais mettre ca ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(wParam == (VK_F8 && (lPram & val )) && GetKeyState(VK_CONTROL))
    Enfin pour la combo? Sinon ou je mets la deuxieme touche?

  11. #11
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Par défaut
    Salut
    Je viens de faire un test chez moi ce code détecte parfaitement la combinaison Ctrl + Alt + F8

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(wParam == VK_F8 && (lParam & val ) && (GetKeyState(VK_CONTROL) & 0x8000))
    Ce bout de code détecte la combinaison Ctrl+F8
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(wParam == VK_F8 && (GetKeyState(VK_CONTROL) & 0x8000))
    Note : je suis sous XP Pro pack 1.
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  12. #12
    Invité
    Invité(e)
    Par défaut
    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
    LRESULT __stdcall HookClavier(int nCode, WPARAM wParam, LPARAM lParam) 
    {
      unsigned int val = 1 << 29;
      if(nCode >= 0)
          {
            HWND hwamp;
            hwamp = FindWindow("Notepad", 0);
     
            if(wParam == VK_F8 && (lParam & val ) && (GetKeyState(VK_CONTROL) & 0x8000))
              {
                PostMessage(hwamp, WM_KEYDOWN, VK_F5, 0);
              }
          }
      return CallNextHookEx(hHook, nCode, wParam, lParam);
    }
    Voilà le code, mais cela ne marche pas du tout!
    Ni
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(wParam == VK_F8 && (GetKeyState(VK_CONTROL) & 0x8000))
    !!!

    Je suis sous Win2k Pro SP4.
    Serait-ce parceque j'ai Win2k et pas XP ?
    Ou bien y a quelque chose qui cloche chez moi peut-être?

    Peux-tu m'envoyer stp les sources code completes de ton projet qui marche avec ces combinaisons, histoire que je vois si j'ai mal construit mon code ailleurs?

    Merci encore à l'avance.

    p.s. je suis au bout des nerfs mdr, il n'y a pas un bon moyen qui marchera sur tous les systemes?

    EDIT:

    Quand je fais juste tout court:
    ca me fait F5 deux fois sur Notepad,
    mais quand je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(wParam == VK_F8 && lParam & 0x80000000)
    ca fait F5 une fois sur notepad

    Je vois un peu mieux mais je n'arrive pas.
    Je sais pas qu'est-ce qu'il fait le lParam au juste avec le 0x80000000.. mais sans lui juste la touche F8 envoit deux fois F5 sur notepad...

    mais comment faire deux touches - j'arrive pas. Pourtant, Trap D, ton dernier code à l'air correcte, mais non il passe pas chez moi xD

  13. #13
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Par défaut
    Salut

    le test () lParam & 0x80000000 teste si la touche est enfoncée, c'est pour ça que tu as 2 envois sur F5 si tu ne le fais pas

    C'est codé en Visual C++, mais tu dois pouvoir facilement l'adapter pour le C Builder :
    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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
     
    #include <stdlib.h>
    #include "OcrHook.h"
     
    BOOL APIENTRY DllMain( HANDLE hModule, 
                           DWORD  ul_reason_for_call, 
                           LPVOID lpReserved
    					 )
    {
    	switch (ul_reason_for_call)
    	{
    		case DLL_PROCESS_ATTACH:
    		case DLL_THREAD_ATTACH:
    		case DLL_THREAD_DETACH:
    		case DLL_PROCESS_DETACH:
    			break;
        }
        return TRUE;
    }
     
     
    // This is an example of an exported function.
    OCRHOOK_API int fnOcrHookMouse(int nCode, WORD wParam, LONG lParam)
    {
    	static int Done = 0;
            /  Je gère un evenement Windows qui permet la communication entre la Dll et le programme qui l'a lance.
    	static HANDLE RACEvent;
    	unsigned int val = 1 << 29;
     
     
    	if (nCode < 0 )
          return CallNextHookEx(ghhookMouse, nCode, wParam, lParam);
     
     
    	if (Done == 0)
    	{
    		RACEvent = OpenEvent(EVENT_ALL_ACCESS, FALSE, "my_HookEvent");
     
    		if (RACEvent == NULL)
    			return CallNextHookEx(ghhookMouse, nCode, wParam, lParam);
    		Done = 1;
    	}
     
     
    //   if(wParam == VK_F8 && (lParam & val ) && (GetKeyState(VK_CONTROL) & 0x8000))
       if(wParam == VK_F8  && (GetKeyState(VK_CONTROL) & 0x8000))
    	{
    		SetEvent(RACEvent);
    	}
    	return 1;
    }
     
    OCRHOOK_API int fnOcrInitHook(HHOOK hhkMouse)
    {
    	ghhookMouse = hhkMouse;
    	return S_OK;
    }
    code d'initialisation dans le programme principal
    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
    	// TODO: Add extra initialization here
    	hHookDll = LoadLibrary("e:\\Visual C\\essai\\hook\\debug\\rhook.dll");
    	hHookProcMouse = (HOOKPROC) GetProcAddress(hHookDll, (char *) 2);
    	fnHookInit = (HookInit *) GetProcAddress(hHookDll, (char *) 3);
    	hSystemHookMouse =  SetWindowsHookEx(WH_KEYBOARD,hHookProcMouse,hHookDll,0); 
    	fnHookInit(hSystemHookMouse);
     
    	//Création de l'évènement "my_HookEvent"
    	hGlobalWriteEvent = CreateEvent(NULL, TRUE, FALSE,"my_HookEvent");  // object name
    	if (hGlobalWriteEvent == NULL)
    	{
               // Alerte1 est une fonction perso d'affichage de message d'alerte, (MessageBox ....)
    				Alerte1("Ocr inactif");
    	}
    	else
    	{
                   // on crèe le thread
    		hThread = CreateThread(NULL, 0, 
    				(LPTHREAD_START_ROUTINE) RACThreadFunction, 
    				NULL,  0, &IDThread); 
    		if (hThread == NULL)
    		{
    			Alerte1("Ocr inactif");
    		}
    	}
    Code du thread avec les variables globales utilisées:
    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
    typedef int HookInit(HHOOK hhk2);
    HookInit *fnHookInit;
     
    HANDLE hGlobalWriteEvent;
    HANDLE hThread;
     
    void Alerte1(char *mess)
    {
    	MessageBox(NULL, mess, "Hook", MB_OK);
    }
     
    VOID RACThreadFunction(LPVOID lpParam) 
    {
        DWORD dwWaitResult;
    	static int nb = 0;
    	char tmp[1024];
        for(;;)
    	{
    		dwWaitResult = WaitForSingleObjectEx(hGlobalWriteEvent, 
    								              INFINITE, FALSE);    // indefinite wait
     
    		switch (dwWaitResult) 
    		{
    			case WAIT_OBJECT_0:
    				sprintf(tmp, "reçu %u", nb++);
    				Alerte1(tmp);
    				ResetEvent(hGlobalWriteEvent) ;
     
    	            break; 
     
    		    // An error occurred.
    			default: 
    				break;
    		}
    	}
    }
    Bon courage
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  14. #14
    Invité
    Invité(e)
    Par défaut
    Bien ton code ca revient au même - ca passe pas chez moi :/

    Parcontre, je fais ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(wParam == VK_F8 && (GetKeyState(VK_CONTROL) < 0))
    cela envoit PostMessage (le F5 quoi) deux fois, quand j'appuis sur Alt Gr + F8 !!!

    Bizarre ca VK_Control ce n'est pas alt gr quand même.

    C'est déjà plus proche de ctrl + f8 (ou alt mais pas alt gr)xD

    Reste qu'a trouver comment faire poster avec Alt (et pas Alt Gr) et pour que ca poste 1 fois et pas deux xD

    Un coup de main svp

  15. #15
    Invité
    Invité(e)
    Par défaut
    Personne a une idée svp? Suis au bout là

Discussions similaires

  1. Désactiver la touche escape pour un Combo
    Par alain sayagh dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 14/06/2007, 10h07
  2. [VB6] Touche impr écran
    Par SpaceFrog dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 12/11/2002, 07h38
  3. Détection de 2 touches appuyées
    Par cyrose dans le forum C++Builder
    Réponses: 2
    Dernier message: 26/07/2002, 16h25
  4. Cherche Nom des touches du clavier
    Par juan64 dans le forum C++Builder
    Réponses: 8
    Dernier message: 23/07/2002, 19h11
  5. Shortcut avec plusieurs touches
    Par scorpiwolf dans le forum C++Builder
    Réponses: 4
    Dernier message: 06/07/2002, 15h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo