PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : C++ Text senden



EpicByte
04.04.2010, 12:44
Moin,
also irgendwie hat meine brain.exe heut wieder einen Fehler :D
Ich google jetzt schon ne ganze Zeit nach einer Funktion für C++ mit der ich einen String bzw. ganzen Text an ein Fenster senden kann.
Ich möchte keine VirtualKeyCodes benutzen, einfach nur z.B. eingeben Send("Free Hack", "hallo"), so dass an das Fenster Free Hack hallo gesendet wird.
Ich hab es jetzt schon mit PostMessage, SendMessage etc. probiert aber irgendwie müsste ich mir dann doch einen Text aus VirtualKeyCodes zusammensetzen? Das fände ich bisschen zu aufwendig :D
Kann mir jemand das auf deutsch erklären sonst versteh ichs wieder falsch ><

AlterHacker
04.04.2010, 12:54
Programmier es dir doch?
Soweit ich weiß ist doch dann der Virtual Keycode = ASCII Code, oder irre ich mich da?

Da könntest du doch dann in etwa so machen:

for(int p = 0; p < strlen(text); p++){
KeyDown(text[p]);
Sleep(1);
KeyUp(text[p]);
Sleep(1);
}
(KeyDown und KeyUp sind natürlich 'gedankenfunktionen' die du dann mit den PostMessageA/SendMessage usw ersetzen musst ;-))

GregorSamsa
04.04.2010, 13:00
VK's sind nicht 100%ig die ASCII-Codes:
http://www.help-guide.de/win_virtual_key.htm

Ich würde einfach mir die benötigten aus dem Ascii-Code errechnen lassen.
Dürfte recht simpel sein.

Wo ist denn allgemein das Problem bei Ascii-Codes?

EpicByte
04.04.2010, 13:04
Also mein Problem war einfach das ich es nicht geschafft habe über irgendeine der Send Methoden an ein Fenster einen string zu senden.
bsp.:
HWND name = FindWindow("Free Hack",NULL);
SendMessage(name, WM_KEYDOWN, NULL, 'w');

Kann mir nochmal einer genau die parameter erklären ich verstehs auf msdn nicht und habs einfach nur copy&pastet :o

AlterHacker
04.04.2010, 13:38
FindWindow:
http://msdn.microsoft.com/en-us/library/ms633499%28VS.85%29.aspx
SendMessage:
http://msdn.microsoft.com/en-us/library/ms644950%28VS.85%29.aspx
Zum msg = WM_KEYDOWN:
http://msdn.microsoft.com/en-us/library/ms646280%28VS.85%29.aspx

Besser kann das eg niemand mehr erklären ;)

ich würds übrigends eher so coden:


HWND window = 0;
while(!window){
window = FindWindow( 0, "Free-Hack.com" );
Sleep( 10 );
}
SendMessage ( window, WM_KEYDOWN, VK_W, 0 );
Sleep(5);
SendMessage ( window, WM_KEYUP, VK_W, 0 );

EpicByte
04.04.2010, 14:25
Sry brain ist weggelaufen :D
Danke schonmal,
aber:
Ich muss doch jetzt eigentlich für VK_W die VirtualKeyCodes einsetzen oder?

AlterHacker
04.04.2010, 14:46
Ja ^^.
und halt für w -> VK_W
und für a -> VK_A usw.
Für die Großbuchstaben musst du halt erstmal VK_SHIFT oder iwie sowas schicken, dann VK_A und dann VK_A releasen (KeyUP) und dann wieder Shift hoch.
So wie mans eg auch auf der Tastatur macht ^^

EpicByte
04.04.2010, 14:57
Guuut soweit war ich auch schon :D
Danke trotzdem^^
Gibt es keine Möglichkeit (außer eine Funktion selber zu schreiben) einen ganzen Text auszugeben also das ich Hallo statt VK_SHIFT_H VK_A VK_L usw. schreiben kann?

AlterHacker
04.04.2010, 15:10
Guuut soweit war ich auch schon :D
Danke trotzdem^^
Gibt es keine Möglichkeit (außer eine Funktion selber zu schreiben) einen ganzen Text auszugeben also das ich Hallo statt VK_SHIFT_H VK_A VK_L usw. schreiben kann?
Kommt drauf an. Wenn du ne Textbox in nem Programm hast, musst du gucken ob du das HWND von dem teil bekommst, und dann sollte dir das weiterhelfen:
http://msdn.microsoft.com/en-us/library/ms632644%28v=VS.85%29.aspx

EpicByte
04.04.2010, 15:29
Nee hab keine Textbox wollts mir einfach nur erleichtern^^
Noch ne Frage :D :
Wenn ich jetzt window = FindWindow( 0, user); benutze und user eine variable ist, wie geht das dann? Wenn ich char nehme dann aktzepiert er das zwar, aber ich möchte das man diese Variable vorher in einer Konsole definieren kann mit cin

AlterHacker
04.04.2010, 16:36
Hm, wo ist das problem?


char * input = new char[64];
HWND fenster = 0;
cout << "Fenstertitel:\n";
cin >> input;
fenster = FindWindow(0, input);
if ( !fenster ) {
cout << "Fenster konnte nicht gefunden werden\n";
return 0;
}