keybd_event( ) will nicht so wie ich will, wieso eigentlich nicht -.-' ???
-
hallo alle zusammen,
ich ärgere mich jetzt sicher schon seit 2stunden mit diesen doofen problem rum.
und zwar möchte ich tasten drücke simulieren via' keybd_event( ). Dazu lasse ich erst in eine editbox ein text schreiben( vom user ), dann wird der text in nen array gelesen und dann soll das programm des array durchlaufen und die jeweiligen tasten drücken, hie rmein ansatz:// [ ... ] char szBufferNick[ 16 ]; char szBufferPw[ 16 ]; int iLenghtAcc, iLenghtPw; // ***** get the account-name ***** iLenghtAcc = 0; iLenghtAcc = SendMessage( hEdit_Nick, WM_GETTEXTLENGTH, 0, 0 ); if( iLenghtAcc == 0 ) { MessageBox( 0, "Please enter your nickname!", "Warning - nickname missing!", MB_OK | MB_ICONWARNING ); SetFocus( hEdit_Nick ); break; } szBufferNick[ 0 ] = 0; SendMessage( hEdit_Nick, WM_GETTEXT, iLenghtAcc + 1, (long)szBufferNick ); // ***** get the password ***** iLenghtPw = 0; iLenghtPw = SendMessage( hEdit_Pw, WM_GETTEXTLENGTH, 0, 0 ); if( iLenghtPw == 0 ) { MessageBox( 0, "Please enter your password!", "Warning - password missing!", MB_OK | MB_ICONWARNING ); SetFocus( hEdit_Pw ); break; } szBufferPw[ 0 ] = 0; SendMessage( hEdit_Pw, WM_GETTEXT, iLenghtPw + 1, (long)szBufferPw ); [ ... ][ ... ] void AUTOLOG::enterAccData( char *szAccName, char *szAccPassword ) { // ***** set cursor position to "Account-Name" editbox SetCursorPos( this->clientX - ( this->clientX * 0.8 ), this->clientY - ( this->clientY * 0.78 ) ); Sleep( 50 ); // ***** click ***** mouse_event( MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0 ); //mouse_event( MOUSEEVENTF_LEFTUP, 0, 0, 0, 0 ); Sleep( 50 ); // ***** enter acc-name ***** for( int i = 0; i < (int)strlen( szAccName ) + 1; i++ ) { keybd_event( szAccName[ i ], 0, 0, 0 ); keybd_event( szAccName[ i ], 0, KEYEVENTF_KEYUP, 0 ); Sleep( 200 ); } Sleep( 50 ); // ***** switch to password edit ***** keybd_event( VK_TAB, 0, 0, 0 ); keybd_event( VK_TAB, 0, KEYEVENTF_KEYUP, 0 ); Sleep( 50 ); // ***** enter acc-password ***** for( int i = 0; i < (int)strlen( szAccPassword ) + 1; i++ ) { keybd_event( szAccPassword[ i ], 0, 0, 0 ); keybd_event( szAccPassword[ i ], 0, KEYEVENTF_KEYUP, 0 ); Sleep( 200 ); } Sleep( 50 ); // ***** simulate return ***** keybd_event( VK_RETURN, 0, 0, 0 ); keybd_event( VK_RETURN, 0, KEYEVENTF_KEYUP, 0 ); } [ ... ]die hälft des codes könnt ihr eigentlich ignorieren, was wichtig ist sind die stelen:
// ***** enter acc-name ***** for( int i = 0; i < (int)strlen( szAccName ) + 1; i++ ) { keybd_event( szAccName[ i ], 0, 0, 0 ); keybd_event( szAccName[ i ], 0, KEYEVENTF_KEYUP, 0 ); Sleep( 200 ); } Sleep( 50 ); // ***** switch to password edit ***** keybd_event( VK_TAB, 0, 0, 0 ); keybd_event( VK_TAB, 0, KEYEVENTF_KEYUP, 0 ); Sleep( 50 ); // ***** enter acc-password ***** for( int i = 0; i < (int)strlen( szAccPassword ) + 1; i++ ) { keybd_event( szAccPassword[ i ], 0, 0, 0 ); keybd_event( szAccPassword[ i ], 0, KEYEVENTF_KEYUP, 0 ); Sleep( 200 ); }wenn diese stellen durch laufen werden, werden nicht die tasten gedrückt die der string enthält, bzw es werden nur kommische zahlen geschrieben,
AUSSER wenn ich die buchstaben groß schreibe werden auch die richtigen tasten simuliert, schreib ich sie klein kommt nur arabisch raus UND sonderzeichen werden auch nicht geschrieben!Es wär echt hilfreich, wenn mir wer helfen kann bei dem problem.
Gruß Tobi.
PS: Und gute nacht

-
alles klar hat sich erledigt

VkKeyScan( ) hat die lösung gebracht

Ich kann einfach net ruhig schlafen, wenn ein proggie net funktioniert *hehe*Trotzdem danke!
Gut Nacht! Tobi.