[c++]postmessage problem

06/30/2010 11:52 djleitno22#1
hi ich hab wieder mal ein problem
ich versuche mit c++ einen bot zu schreiben
und möchte einen tastendruck zum gewünschten fenster senden (nostale) mit postmessage
aber wie??

ich habs mal so probiert


Code:
#include <iostream>
#include <windows.h>
#include <stdio.h>


using namespace std;

int main(){
    
   
   cout<<"Willkommen"<<endl;
   cout<<"Nostale Bot"<<endl;
   cout<<"Um den Bot zu Starten druecken Sie: 1"<<endl;
   cout<<"Um den Bot zu Beenden druecken Sie: 2"<<endl;
   cout<<""<<endl;
   cout<<""<<endl;
   
   
   
   
   while (true){
   int i;
   cin >> i;
   if (i == 1){
            
            cout<<"Der Bot wurde gestartet"<<endl;
            SetConsoleTitle("NosBot");
            HWND hWin = FindWindow(NULL, "Nostale"); 
            SetForegroundWindow(hWin);
            
             while(true){
                 
                [COLOR="Red"]PostMessage(hWin, WM_KEYDOWN, 0x52, 0);
                Sleep(10000);[/COLOR]
                
                
                cin>>i;
                
                if (i==2){
                          break;
                          }
                }
                 
            
            
               system("Cls");
               cout<<"Willkommen"<<endl;
               cout<<"Nostale Bot"<<endl;
               cout<<"Um den Bot zu Starten druecken Sie: 1"<<endl;
               cout<<"Um den Bot zu Beenden druecken Sie: 2"<<endl;
               cout<<""<<endl;
               cout<<""<<endl;
               
               
            }
            
   else if (i == 2){
          cout<<"Der Bot wurde noch nicht gestartet";
          getchar();
          getchar();
          system("cls");
          
          cout<<"Willkommen"<<endl;
               cout<<"Nostale Bot"<<endl;
               cout<<"Um den Bot zu Starten druecken Sie: 1"<<endl;
               cout<<"Um den Bot zu Beenden druecken Sie: 2"<<endl;
               cout<<""<<endl;
               cout<<""<<endl;
               
          
          
          
          }
          
          
   
}
   
     
                 getchar();
}
ich weis es ist nicht grade das beste so einen bot zu machen aber ich kan noch nicht winapis programieren wen jemand dafür ein gutes tutorial auf deutsch kent dan immer her damit



also ich bekom da keiunen tastendruck simuliert
es müste da ja r gedrückt werden
aber der macht nichts


bitte um hilfe


MFG djleitno22
07/01/2010 00:50 schnewin#2
Eigentlich müsstest du doch nocheinen Error bekommen, und zwar,
"Konvertierung des Parameters 1 von 'const char [3]' in 'LPCWSTR' nicht möglich".

Weil richtig müsste es so lauten
Code:
static const TCHAR* myConsoleTitle = TEXT("TestTitle");
SetConsoleTitle(myConsoleTitle);
Zu deinem PostMessage Fehler kann ich leider nichts sagen, da ich mich damit noch nicht so richtig beschäftigt habe.

MFG
07/01/2010 10:45 schnewin#3
Aber du weißt schon, dass das Spam ist ne? ;)
Und wenn du den SourceCode kompilieren will, bekommt man 2 Fehlermeldungen.
Code:
1>c:\dokumente und einstellungen\****\eigene dateien\visual studio 2010\projects\testwe\testwe\main.cpp(27): error C2664: 'SetConsoleTitleW': Konvertierung des Parameters 1 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:\dokumente und einstellungen\****\eigene dateien\visual studio 2010\projects\testwe\testwe\main.cpp(28): error C2664: 'FindWindowW': Konvertierung des Parameters 2 von 'const char [8]' 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.
MFG
07/01/2010 13:49 ddl#4
phrenesis hast wie immer recht^^
Nur sollte es nicht
PostMessage(hWin, WM_KEYDOWN, 0x52, ((MapVirtualKey(0x52) << 16) | 1));
heißen?
07/01/2010 17:36 Zacherl#5
PostMessage() funktioniert vermutlich bei den meisten Spielen nicht. Du könntest stattdessen kbd_event() verwenden.
Allerdings kannst du auch das vergessen, wenn das Spiel DirectInput verwendet. Dann bräuchtest du einen DirectInput Hook.
07/01/2010 17:36 schnewin#6
Quote:
Originally Posted by phrenesis View Post
Du Blödmann. Erzähl hier kein Schwachsinn! Im Moment spammst du hier den ganzen Thread voll. Die Frage bezieht sich doch eindeutig auf sein Problem mit Postmessage. Aber auf welche Frage dein Post eine Antwort geben soll, kann ich leider nicht nachvollziehen.
Und irgendwelche Error-Meldungen vom Compiler und Lösungen für diese, die du wahrscheinlich erst gar nicht verstehst und irgendwo aufgeschnappt hast, brauchst du hier nicht zu posten. Hat ja recht wenig mit seiner Frage zu tun, nicht?
Ich hätte mit dir wetten können, dass zu 90% ein nächster Thread aufgemacht wurden wäre, von dem Threadersteller, wo diese Fehlermeldung drin steht. Ich hab mich nicht auf seine Frage bezogen, da hast du recht, aber trotzdem ist mir dieser Fehler aufgefallen und wollte so einen neuen Thread ersparen.
Ob ich Ahnung habe, oder nicht, kannst DU überhaupt nicht sagen, da du mich gar nicht kennst, worüber ich froh bin.
Ich bin zwar kein Experte was C++ angeht, aber solche Sachen verstehe ich.
Und was du über mich denkst, ist mir völlig egal, wir können diese Sachen gerne über PN klären, da wir beide gerade Spamen.

MFG
07/02/2010 15:38 nkkk#7
Quote:
Originally Posted by phrenesis View Post
PostMessage(hWin, WM_KEYDOWN, 0, (UINT)(MapVirtualKey(0x52, MAPVK_VK_TO_VSC) << 16));
Und WM_KEYUP nicht vergessen.
ja das weiss ich zwar auch mittlerweile auch, aber kann mir mal einer erklären warum man MapVirtualKey aufruben muss und warum << 16?
07/03/2010 11:14 yihaaa#8
SetConsoleTitle(L"DeinTitel");