VS C++ SendKeys an Fenster senden

09/17/2010 08:49 Lawnmove#1
Hallo

ich würde gerne mit

private: System::Void timer1_Tick(System::Object^ sender,
System::EventArgs^ e) {
SendKeys::Send ("{ENTER}");
Sleep(3000);
SendKeys::Send ("{TAB}");
SendKeys::Send ("1");
Sleep(2000);
SendKeys::Send ("{TAB}");
SendKeys::Send ("1");

einen Bot machen, aber das wird nicht an das Spiel Fenster gesendet.
Nur immer was der Taste ESC entspricht kommt an.

Danke wer mir da weiterhelfen kann.
09/17/2010 15:06 scenebase#2
[Only registered and activated users can see links. Click Here To Register...]
09/17/2010 17:35 Lawnmove#3
Kenne das ms Zeugs ja
Aber ist nicht sehr hilfreich.
Ich bräucht nen Beispiel für meinen Fall.
09/17/2010 18:05 scenebase#4
Code:
HANDLE fw;

fw = FindWindow(NULL, "ICQ") 
PostMessage(fw, WM_KEYDOWN, VK_RETURN, 0);
[Only registered and activated users can see links. Click Here To Register...] da sind die ganzen Virtualkeys aufgelistet.

Sollte so eig gehen, wenn nicht -> msnd lesen & googlen :>
09/18/2010 10:32 Lawnmove#5
nee leider, nichts geht
jede Menge Fehler kommen bei debug.
09/18/2010 10:45 scenebase#6
ja weil ich dir die Includes nicht da zu geschrieben habe :)
Ein bisschen denken sollst du ja auch.
09/18/2010 15:12 Lawnmove#7
hm, ich bin zu neu in cpp um die kennen zu müssen
Ich befasse mich erst seit einigen Tagen damit.
hab iostream und windows.h drin bisher

hab nun
#define WM_COMPLETE (WM_USER + 0)
wie es in msdn steht auch dazu gemacht. Bringt auch nichts.
09/18/2010 16:20 MrSm!th#8
Wenn du windows.h included hast, sollte es auch gehen.

2 Sachen:

1. wie wäre es, wenn du uns die Fehlermeldung einfach mal hinschreibst? :rolleyes:
2. wieso willst du etwas schwereres, wie zb. Tastendrücke senden, in C++ machen, wenn du die Sprache nicht kannst?
09/18/2010 17:09 Lawnmove#9
zu 1). ; (deutet irwie auf fehlender #include hin)

Quote:
1>c:\users\***\documents\visual studio 2010\projects\i_bot_1\i_bot_1\Form1.h(158): error C2664: 'FindWindowW': Konvertierung des Parameters 2 von 'const char [7]' in 'LPCWSTR' nicht möglich
1> Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.
1>c:\users\***\documents\visual studio 2010\projects\i_bot_1\i_bot_1\Form1.h(159): error C2664: 'PostMessageW': Konvertierung des Parameters 1 von 'const char [7]' in 'HWND' nicht möglich
1> Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========
zu 2) ;
in AutoIt ist es nicht möglich leider weil ich nen "Shield" vor mir hab das AutoIT erkennt und blockt.
Ich mag Cpp sehr, hab sonst mit Dev rumgemacht. Aber von VS 2010 bin ich noch mehr begeistert. Also ich bin lern begierig :)

P.S. ich habe das gegebene Beispiel komplett in den Bereich "#pragma Endregion" gesetzt. Ich denke das könnte ein Fehlergrund sein :\
09/18/2010 19:53 KDeluxe#10
PHP Code:
FindWindowA("CLASS""NAME"
oder:
PHP Code:
FindWindow(L"CLASS"L"NAME"

Ich benutze PostMessage so:
PHP Code:
void _SendKey(int KeyLPCSTR ClassName NULLLPCSTR WindowName NULL){
    
HWND hWnd FindWindowA(ClassNameWindowName);
    if(
hWnd){
        
LPARAM SendKey = (MapVirtualKey(Key0) << 0x10);
        
PostMessage(hWndWM_KEYDOWN0SendKey);
        
Sleep(100);
        
PostMessage(hWndWM_KEYUP0SendKey);
    }

09/19/2010 10:09 Lawnmove#11
Danke "God of Coding" *grinz

Alle Fehler weg nun bis auf einen:

Form1.h(161): error C2601: '_SendKey': Lokale Funktionsdefinitionen sind unzulässig

was kann das sein ?
09/19/2010 11:27 MoepMeep#12
Quote:
Originally Posted by Lawnmove View Post
Danke "God of Coding" *grinz

Alle Fehler weg nun bis auf einen:

Form1.h(161): error C2601: '_SendKey': Lokale Funktionsdefinitionen sind unzulässig

was kann das sein ?
Steht da doch, Lokale Funktionsdefinition.
Und nun geh wieder in deine kleine, bunte AutoIt-Welt und spiel im Sandkasten, danke.


Mal ganz ehrlich, wieso helft ihr solchen Leuten?

[Only registered and activated users can see links. Click Here To Register...]
09/20/2010 12:53 mgX#13
Hm well yes, PostMessage will work, Sometimes you need to get both wParam and lParam correct in order for the game to respond. DAoC is one of these games.

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

Thats params for alot of keys. Logged these by hand, and it took ages >_<...but it works nicely.

It'll look something like this:

PostMessage(hWnd, WM_KEYDOWN, (int)VK_A.wParam, (int)VK_A.lParam);


Another option is to call the WndProc, but that requires you to be inside the process in question.
09/21/2010 10:49 Lawnmove#14
thx mgX
but i see in the Header C#
Its the same in ++ ?
09/21/2010 13:00 MrSm!th#15
Quote:
Originally Posted by Lawnmove View Post
zu 1). ; (deutet irwie auf fehlender #include hin)



zu 2) ;
in AutoIt ist es nicht möglich leider weil ich nen "Shield" vor mir hab das AutoIT erkennt und blockt.
Ich mag Cpp sehr, hab sonst mit Dev rumgemacht. Aber von VS 2010 bin ich noch mehr begeistert. Also ich bin lern begierig :)

P.S. ich habe das gegebene Beispiel komplett in den Bereich "#pragma Endregion" gesetzt. Ich denke das könnte ein Fehlergrund sein :\
wenn Autoit geblockt wird, wird auch C++ geblockt

Quote:
Aber von VS 2010 bin ich noch mehr begeistert. Also ich bin lern begierig
du gehst es trotzdem falsch an.


naja, nutz google und SuFu, dann wirst du genug zu tastendrücken finden, wenn du es unbeding willst.
deine fehler solltest du selbst finden können, wenn du die sprache angeblich kannst

#closed