SendInput C++/C#

06/21/2010 19:15 nkkk#1
hi ihc hab mal ne frage, nämlich wie kann ich in dem spiel Eingaben simulieren?
so wie ich es bisher immer versucht habe:
PHP Code:
        public void SendKey(int key)
        {
            
SendMessage(hwndWM_KEYDOWNkey0);
            
SendMessage(hwndWM_KEYUPkey1);
        } 
funktioniert es irgendwie nicht :(, kann mir jmd sagen was ich falsch mache?
bei anderen programmen hat es meitens so funktioniert
06/21/2010 21:18 Nulpe123#2
Bei VB.net geht das mit der einfachen SendKey Anweisung auch nicht. Tasten wie Eingabe und Tab gehen, aber die F1-F12 Tasten nicht.
Dies ist NUR bei LC so. Deshalb verstehe ich nicht wieso dieses Thema hier hin verschoben wurde!
Über eine Lösung würde ich mich ebenfalls freuen :rolleyes:
06/22/2010 00:11 Bot_interesierter#3
1. Hast du sicher gestellt dass das Window Handle richtig ist?
2. Benutzt du als Keycode auch die [Only registered and activated users can see links. Click Here To Register...] oder versuchst du es mit chars?
06/22/2010 00:46 .ErpeL#4
Wenn das Spiel Direct Input benutzt funktionieren die normalen Virtual Keys meistens nicht, darum braucht ihr die KeyCodes für [Only registered and activated users can see links. Click Here To Register...]

PHP Code:
#define DIKEYBOARD_F1 0x043B //F1
#define DIKEYBOARD_F2 0x043C //F2


void DXSendInput(WORD key)
{
    
INPUT inp;

    
inp.type     INPUT_KEYBOARD;
    
inp.ki.wScan key;

    
SendInput(1, &inpsizeof(INPUT)); //drücken
    
Sleep(10);                        //kurz warten

    
inp.ki.dwFlags KEYEVENTF_KEYUP;

    
SendInput(1, &inpsizeof(INPUT)); //loslassen
}

//aufruf
DXSendInput(DIKEYBOARD_F1); 
06/22/2010 16:51 nkkk#5
Quote:
Originally Posted by Bot_interesierter View Post
1. Hast du sicher gestellt dass das Window Handle richtig ist?
2. Benutzt du als Keycode auch die [Only registered and activated users can see links. Click Here To Register...] oder versuchst du es mit chars?
klar bei anderen veschiedenen anderen funktionierte es ja auch


Quote:
Originally Posted by .ErpeL View Post
Wenn das Spiel Direct Input benutzt funktionieren die normalen Virtual Keys meistens nicht, darum braucht ihr die KeyCodes für [Only registered and activated users can see links. Click Here To Register...]

PHP Code:
#define DIKEYBOARD_F1 0x043B //F1
#define DIKEYBOARD_F2 0x043C //F2


void DXSendInput(WORD key)
{
    
INPUT inp;

    
inp.type     INPUT_KEYBOARD;
    
inp.ki.wScan key;

    
SendInput(1, &inpsizeof(INPUT)); //drücken
    
Sleep(10);                        //kurz warten

    
inp.ki.dwFlags KEYEVENTF_KEYUP;

    
SendInput(1, &inpsizeof(INPUT)); //loslassen
}

//aufruf
DXSendInput(DIKEYBOARD_F1); 
danke ich werds mal so probieren
06/22/2010 19:14 scenebase#6
C#

PHP Code:
[DllImport("user32"EntryPoint "PostMessage")]
public static 
extern int PostMessage(int hwndint wMsgint wParamint lParam);

[
DllImport("user32"SetLastError true)]
static 
extern int FindWindow(string lpClassNamestring lpWindowName);

int ha FindWindow(null"World of Warcraft"); //nur ein bsp mit WoW

PostMessage(ha0x1010x200); //WM_KEYUP = 0x101; VK_SPACE = 0x20 

[Only registered and activated users can see links. Click Here To Register...]