Hallo,
ich bin dabei einen keybinder zu programmieren. mein code zum auslesen der gedrückten und zum simulieren der tasten ist folgender:
Code:
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
ich bin dabei einen keybinder zu programmieren. mein code zum auslesen der gedrückten und zum simulieren der tasten ist folgender:
Code:
Quellcode
- //*****************************************************************************
- //*
- //* keystate
- //*
- //*****************************************************************************
- DWORD WINAPI keystate(void *param)
- {
- string txtx;
- int iLenght;
- char *text;
- string fenster;
- HWND hwnd;
- TCHAR szWindowText[100];
- while(true)
- {
- Sleep(5);
- CheckKeyState();
- for(int i=0;i<28;i++)
- {
- if(GetAsyncKeyState(keyx[i])&1 ==1)
- {
- iLenght = GetWindowTextLength(txt[i])+1;
- text = new char[iLenght+1];
- GetWindowText(txt[i],text ,iLenght);
- txtx = text;
- hwnd = GetForegroundWindow();
- GetWindowText(hwnd, szWindowText, 100);
- fenster=szWindowText;
- if(fenster=="Unbenannt - Editor")
- if(txtx!="")
- {
- sim(txtx);
- }
- }
- }
- }
- }
- //*****************************************************************************
- //*
- //* sim
- //*
- //*****************************************************************************
- int sim(string Text)
- {
- int i;
- int o;
- int Scancode;
- char Achtung[]={"!\"§$%&/()=?*'_:;>°ÄÜÖ"};
- for(o=0;o<strlen(Text.c_str());o++)
- {
- fertig = 0;
- Scancode = (int)Text[o];
- if(Scancode==126)
- {
- keybd_event(VK_RETURN,0, 0,0); //Tastendruck
- keybd_event(VK_RETURN,0,KEYEVENTF_KEYUP,0);
- fertig=1;
- }
- for(i=0;i<strlen(Achtung);i++)
- {
- if(Text[o]==Achtung[i])
- {
- keybd_event(16,0,0,0); //Shifttaste wird gedrückt
- keybd_event(VkKeyScan(Text[o]),0,0,0); //Tastendruck
- keybd_event(VkKeyScan(Text[o]),0,KEYEVENTF_KEYUP,0);
- keybd_event(16,0,KEYEVENTF_KEYUP,0); //Shifttaste wird losgelassen
- fertig=1;
- }
- }
- for(i=0;i<strlen(Achtung2);i++)
- {
- if(Text[o]==Achtung2[i])
- {
- keybd_event( 17,0,0,0); //Strg-Taste
- keybd_event(VK_MENU,0,0,0); //Alt-Taste
- keybd_event(VkKeyScan(Text[o]),0,0,0); //Tastendruck
- keybd_event(VkKeyScan(Text[o]),0,KEYEVENTF_KEYUP,0);
- keybd_event( 17,0,KEYEVENTF_KEYUP,0);
- keybd_event(VK_MENU,0,KEYEVENTF_KEYUP,0);
- fertig=1;
- }
- }
- if(Scancode>64 && Scancode<91)
- {
- keybd_event(16,0,0,0);
- keybd_event(VkKeyScan(Text[o]),0,0,0);
- keybd_event(VkKeyScan(Text[o]),0,KEYEVENTF_KEYUP,0);
- keybd_event(16,0,KEYEVENTF_KEYUP,0);
- fertig=1;
- }
- if(fertig==0)
- {
- keybd_event(VkKeyScan(Text[o]),0,0,0);
- keybd_event(VkKeyScan(Text[o]),0,KEYEVENTF_KEYUP,0);
- }
- }
- Sleep(1000);
- return 0;
- }
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