Keybinder - GetKeyState und keydb_event

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Keybinder - GetKeyState und keydb_event

    Hallo,

    ich bin dabei einen keybinder zu programmieren. mein code zum auslesen der gedrückten und zum simulieren der tasten ist folgender:
    Code:

    Quellcode

    1. //*****************************************************************************
    2. //*
    3. //* keystate
    4. //*
    5. //*****************************************************************************
    6. DWORD WINAPI keystate(void *param)
    7. {
    8. string txtx;
    9. int iLenght;
    10. char *text;
    11. string fenster;
    12. HWND hwnd;
    13. TCHAR szWindowText[100];
    14. while(true)
    15. {
    16. Sleep(5);
    17. CheckKeyState();
    18. for(int i=0;i<28;i++)
    19. {
    20. if(GetAsyncKeyState(keyx[i])&1 ==1)
    21. {
    22. iLenght = GetWindowTextLength(txt[i])+1;
    23. text = new char[iLenght+1];
    24. GetWindowText(txt[i],text ,iLenght);
    25. txtx = text;
    26. hwnd = GetForegroundWindow();
    27. GetWindowText(hwnd, szWindowText, 100);
    28. fenster=szWindowText;
    29. if(fenster=="Unbenannt - Editor")
    30. if(txtx!="")
    31. {
    32. sim(txtx);
    33. }
    34. }
    35. }
    36. }
    37. }
    38. //*****************************************************************************
    39. //*
    40. //* sim
    41. //*
    42. //*****************************************************************************
    43. int sim(string Text)
    44. {
    45. int i;
    46. int o;
    47. int Scancode;
    48. char Achtung[]={"!\"§$%&/()=?*'_:;>°ÄÜÖ"};
    49. for(o=0;o<strlen(Text.c_str());o++)
    50. {
    51. fertig = 0;
    52. Scancode = (int)Text[o];
    53. if(Scancode==126)
    54. {
    55. keybd_event(VK_RETURN,0, 0,0); //Tastendruck
    56. keybd_event(VK_RETURN,0,KEYEVENTF_KEYUP,0);
    57. fertig=1;
    58. }
    59. for(i=0;i<strlen(Achtung);i++)
    60. {
    61. if(Text[o]==Achtung[i])
    62. {
    63. keybd_event(16,0,0,0); //Shifttaste wird gedrückt
    64. keybd_event(VkKeyScan(Text[o]),0,0,0); //Tastendruck
    65. keybd_event(VkKeyScan(Text[o]),0,KEYEVENTF_KEYUP,0);
    66. keybd_event(16,0,KEYEVENTF_KEYUP,0); //Shifttaste wird losgelassen
    67. fertig=1;
    68. }
    69. }
    70. for(i=0;i<strlen(Achtung2);i++)
    71. {
    72. if(Text[o]==Achtung2[i])
    73. {
    74. keybd_event( 17,0,0,0); //Strg-Taste
    75. keybd_event(VK_MENU,0,0,0); //Alt-Taste
    76. keybd_event(VkKeyScan(Text[o]),0,0,0); //Tastendruck
    77. keybd_event(VkKeyScan(Text[o]),0,KEYEVENTF_KEYUP,0);
    78. keybd_event( 17,0,KEYEVENTF_KEYUP,0);
    79. keybd_event(VK_MENU,0,KEYEVENTF_KEYUP,0);
    80. fertig=1;
    81. }
    82. }
    83. if(Scancode>64 && Scancode<91)
    84. {
    85. keybd_event(16,0,0,0);
    86. keybd_event(VkKeyScan(Text[o]),0,0,0);
    87. keybd_event(VkKeyScan(Text[o]),0,KEYEVENTF_KEYUP,0);
    88. keybd_event(16,0,KEYEVENTF_KEYUP,0);
    89. fertig=1;
    90. }
    91. if(fertig==0)
    92. {
    93. keybd_event(VkKeyScan(Text[o]),0,0,0);
    94. keybd_event(VkKeyScan(Text[o]),0,KEYEVENTF_KEYUP,0);
    95. }
    96. }
    97. Sleep(1000);
    98. return 0;
    99. }
    Alles anzeigen

    Das problem ist, das die keystate funktion auch die duch die sim funktion simulierten tasten ausliest obwohl die beiden funktionen ja nicht paralel laufen. wie kriege ich das hin das er die ignoriert?



    danke im vorraus


    MfG metoin