FindWindow parameter richtig nutzen...

06/14/2010 13:12 Eiscremekugel#1
HWND xxx = FindWindow(NULL ,"XXX");

ShowWindow(xxx, SW_RESTORE);


FindWindowW': Konvertierung des Parameters 2 von 'const char [10]' in 'LPCWSTR' nicht möglich

<<
Diese meldung beim compilen

was mach ich falsch wie schreib ich den parameter richtig`?
kurze erklärung oder denkanstoss währe net..

habe jede denkliche Konvertierung probiert jedoch vergeblich immer bekomm ich diesen fehler


Quote:
HWND WINAPI FindWindow(
__in_opt LPCTSTR lpClassName,
__in_opt LPCTSTR lpWindowName
);
msdn auszug .... laut msdn ist der para doch richtig oder binsch doof >.<
06/14/2010 14:18 P-a-i-n#2
versuch es doch mal so ^^

Code:
#include <windows.h>
#include <iostream>
using namespace std;

int main()
{ 
   HWND hwnd; 
   hwnd = FindWindow(NULL, "Dein fenstername");      
   if(hwnd)                      
   {
      cout<<"wurde gefunden!\n";
   }
   else
   {
      cout<<"wurde nicht gefunden!\n";
   }
   return 0;
}

dürfte ja jetzt klar sein wie du es verwendest
06/14/2010 15:09 nkkk#3
Quote:
Originally Posted by Eiscremekugel View Post
HWND xxx = FindWindow(NULL ,"XXX");

ShowWindow(xxx, SW_RESTORE);


FindWindowW': Konvertierung des Parameters 2 von 'const char [10]' in 'LPCWSTR' nicht möglich

<<
Diese meldung beim compilen

was mach ich falsch wie schreib ich den parameter richtig`?
kurze erklärung oder denkanstoss währe net..

habe jede denkliche Konvertierung probiert jedoch vergeblich immer bekomm ich diesen fehler



msdn auszug .... laut msdn ist der para doch richtig oder binsch doof >.<

schreibe statt "XXX" L"XXX" mit einem L davor
oder mimm statt FindWindow, FindWindowA mit einem A danach


dein problem ist, das FindWindow nomelerweise für FindWindowW steht das w steht für wchar_t also für 2-byte zeichen(unicode), wennn nu nochmele char also 1.Byte zeichen willst musst du FindWindowA nehmen, oder man macht von den string ein L dann ist es ein wchar_t* typ


LPCWSTR = wchar_t*
LPCSTR = char*
06/14/2010 16:00 Eiscremekugel#4
Quote:
Originally Posted by nkkk View Post
schreibe statt "XXX" L"XXX" mit einem L davor
oder mimm statt FindWindow, FindWindowA mit einem A danach


dein problem ist, das FindWindow nomelerweise für FindWindowW steht das w steht für wchar_t also für 2-byte zeichen(unicode), wennn nu nochmele char also 1.Byte zeichen willst musst du FindWindowA nehmen, oder man macht von den string ein L dann ist es ein wchar_t* typ


LPCWSTR = wchar_t*
LPCSTR = char*
genau das wollte ich wissen:o
danke

werde es gleich mal testen und dann rein editen obs geklappt hat :rolleyes:

EDIT:

mit oben genannter methode...

kleine frage falls keybd_event nicht funzt ... welche alternativ habe ich?...
Und jetzt nicht key.sends :P

denn jetzt hat mein window zwar focus wie ich es wollte nur ... es nimmt die tastensimulation nicht an...
06/14/2010 21:43 MrSm!th#5
Quote:
Originally Posted by nkkk View Post
schreibe statt "XXX" L"XXX" mit einem L davor
oder mimm statt FindWindow, FindWindowA mit einem A danach


dein problem ist, das FindWindow nomelerweise für FindWindowW steht das w steht für wchar_t also für 2-byte zeichen(unicode), wennn nu nochmele char also 1.Byte zeichen willst musst du FindWindowA nehmen, oder man macht von den string ein L dann ist es ein wchar_t* typ


LPCWSTR = wchar_t*
LPCSTR = char*
dazu noch:

du hast es in der MSDN schon richtig gesehen; da steht LPCTSTR
das T bedeutet, dass je nach projekt entschieden wird, was genutzt wird (und sollte daher auch konsequent genutzt werden)

du kannst also entweder
Code:
#undef UNICODE
schreiben, damit LPCTSTR für LPCSTR steht oder du stellst dein Projekt auf den ASCII Zeichensatz um.
Nebenbei würde es dann natürlich besser passen, wenn man nicht L vor den String schreibt, sondern das _T() Makro nutzt, dann hat man auch wieder in jedem Falle das richtige!
Quote:
Originally Posted by Eiscremekugel View Post
genau das wollte ich wissen:o
danke

werde es gleich mal testen und dann rein editen obs geklappt hat :rolleyes:

EDIT:

mit oben genannter methode...

kleine frage falls keybd_event nicht funzt ... welche alternativ habe ich?...
Und jetzt nicht key.sends :P

denn jetzt hat mein window zwar focus wie ich es wollte nur ... es nimmt die tastensimulation nicht an...
Nutzt du keybd_event auch richtig?
Es gibt viele, die meinen, sie müssten dort einfach nur "w" reinschrieben und der Tastendruck w wird gesendet; dem ist aber nicht so.
Sollte etwas in der MSDN zu stehen.

Ansonsten nutz mal SendInput; falls das auch nicht klappt, ist das Spiel vielleicht gegen sowas geschützt?
06/14/2010 23:02 Eiscremekugel#6
Quote:
Originally Posted by MrSm!th View Post
dazu noch:

du hast es in der MSDN schon richtig gesehen; da steht LPCTSTR
das T bedeutet, dass je nach projekt entschieden wird, was genutzt wird (und sollte daher auch konsequent genutzt werden)

du kannst also entweder
Code:
#undef UNICODE
schreiben, damit LPCTSTR für LPCSTR steht oder du stellst dein Projekt auf den ASCII Zeichensatz um.
Nebenbei würde es dann natürlich besser passen, wenn man nicht L vor den String schreibt, sondern das _T() Makro nutzt, dann hat man auch wieder in jedem Falle das richtige!


Nutzt du keybd_event auch richtig?
Es gibt viele, die meinen, sie müssten dort einfach nur "w" reinschrieben und der Tastendruck w wird gesendet; dem ist aber nicht so.
Sollte etwas in der MSDN zu stehen.

Ansonsten nutz mal SendInput; falls das auch nicht klappt, ist das Spiel vielleicht gegen sowas geschützt?
naja ich glaube nicht das es direkt ein schutzt ist bei manchen funzt es halt nur mit directinput...

benutzt habe ich es schon richtig denke ich mal ist ja kein c&p alles nach msdn..
es drückt auch alles schön bei notepad nur ingame nicht...

was ist wenn ich es evtl in ne dll packe und direkt in den process injecte dann brauch ich ja kein fokus mehr richtig?`...

PHP Code:
            // Taste W drücken
    
keybd_event(0x5700NULL);
        
// Taste W Loslassen 
    
keybd_event(0x570KEYEVENTF_KEYUP0); 
    
Sleep(800); 
Ist mit der tabelle von msdn geschrieben....also die virtual keys

werde mir morgen mal sendinput genau anschaun und es evtl damit probiern...

PS:
vill noch wichtig das es eine directx anwendung ist...
wo ich beim thema bin hat sich jmd evtl mal mit window mode force via directx beschäftigt?
06/14/2010 23:11 MrSm!th#7
Quote:
Originally Posted by Eiscremekugel View Post
naja ich glaube nicht das es direkt ein schutzt ist bei manchen funzt es halt nur mit directinput...

benutzt habe ich es schon richtig denke ich mal ist ja kein c&p alles nach msdn..
es drückt auch alles schön bei notepad nur ingame nicht...

was ist wenn ich es evtl in ne dll packe und direkt in den process injecte dann brauch ich ja kein fokus mehr richtig?`...

PHP Code:
            // Taste W drücken
    
keybd_event(0x5700NULL);
        
// Taste W Loslassen 
    
keybd_event(0x570KEYEVENTF_KEYUP0); 
    
Sleep(800); 
Ist mit der tabelle von msdn geschrieben....also die virtual keys

werde mir morgen mal sendinput genau anschaun und es evtl damit probiern...

PS:
vill noch wichtig das es eine directx anwendung ist...
wo ich beim thema bin hat sich jmd evtl mal mit window mode force via directx beschäftigt?
Doch, den Fokus brauchste trotzdem, wird ja weiterhin ans forderste Fenster gesendet.
Ich würde es mal testen, indem du auf das Fenster wechselt und zb. in den Chat klickst oder enter drückst oder wie auch immer das da geht und schauen, ob es dann in den Chat geschrieben wird.
Das Problem hatte ich nämlich auch mal.
Ansonsten, mit SendInput gehts also auchs so? Seltsam..
06/15/2010 00:08 nkkk#8
also bei mir hat code wie dieser immer funktioniert, is zwar C# ist aber dieselbe keybd_event funktion

PHP Code:
        #endregion
        
[DllImport("user32.dll"CharSet CharSet.Ansi)]
        public 
extern static void keybd_event(byte bVkbyte bScanint dwFlagsint _dwExtraInfo);
        
#endregion

        
public void BotMain() 
        {
            
System.Console.ReadLine();
            while (
true)
            {
                
Thread.Sleep(4000);
                
keybd_event(VK_F10,
                    
0x44,
                    
KEYEVENTF_EXTENDEDKEY 0,
                    
0);
                
Thread.Sleep(200);
                
keybd_event(VK_F10,
                    
0x44,
                    
KEYEVENTF_EXTENDEDKEY KEYEVENTF_KEYUP,
                    
0);
            }
        } 
ein einfacher Bot der immer F10 drückt^^.
hoffe euch eher weitergebracht als verwirrt zu haben.
06/15/2010 08:39 Eiscremekugel#9
Quote:
Originally Posted by MrSm!th View Post
Doch, den Fokus brauchste trotzdem, wird ja weiterhin ans forderste Fenster gesendet.
Ich würde es mal testen, indem du auf das Fenster wechselt und zb. in den Chat klickst oder enter drückst oder wie auch immer das da geht und schauen, ob es dann in den Chat geschrieben wird.
Das Problem hatte ich nämlich auch mal.
Ansonsten, mit SendInput gehts also auchs so? Seltsam..
Ah wieder was dazu gelernt danke ;D
Und ja der bot an sich läuft gut, schreibt schön in die notepad usw.
nur nich ingame
wie gesagt heute schau ich mir mal sendinput an

Ich denke mal das game nutzt die win api garnicht und nutzt stattdessen den directinput.... >.<
Wäre auch zueinfach gewesen einfach ein bot mit keybd_event - der funzt wäre zu schön

Quote:
Originally Posted by nkkk View Post
also bei mir hat code wie dieser immer funktioniert, is zwar C# ist aber dieselbe keybd_event funktion

PHP Code:
        #endregion
        
[DllImport("user32.dll"CharSet CharSet.Ansi)]
        public 
extern static void keybd_event(byte bVkbyte bScanint dwFlagsint _dwExtraInfo);
        
#endregion

        
public void BotMain() 
        {
            
System.Console.ReadLine();
            while (
true)
            {
                
Thread.Sleep(4000);
                
keybd_event(VK_F10,
                    
0x44,
                    
KEYEVENTF_EXTENDEDKEY 0,
                    
0);
                
Thread.Sleep(200);
                
keybd_event(VK_F10,
                    
0x44,
                    
KEYEVENTF_EXTENDEDKEY KEYEVENTF_KEYUP,
                    
0);
            }
        } 
ein einfacher Bot der immer F10 drückt^^.
hoffe euch eher weitergebracht als verwirrt zu haben.
danke c# bin ich grade am lernen nebenbei....
das ein gutes beispiel nur hast du darin garkein fokus gesetzt richtig?
06/15/2010 10:38 nkkk#10
Quote:
Originally Posted by Eiscremekugel View Post
danke c# bin ich grade am lernen nebenbei....
das ein gutes beispiel nur hast du darin garkein fokus gesetzt richtig?
ne das ist der gesammte programmcode, des mini-bots^^ , is ja nur ein unterstützer, für während man spielt, damit ich nicht selber F10 drücken muss, es wird also davon ausgegangen, das das richtige fenster offen ist, manchmal ist es mir passiert das ich ausversehen ein anderes fenster eöffent habe, dann wurde F10 an dieses gesendet, hatte oft unerwartete folgen:D, aber mitttlerweile benutz ich den bot auch nichtmehr
06/15/2010 11:27 Eiscremekugel#11
Also werde jetzt die komplette struktur nochmal überarbeiten da ich mir nicht vorstellen kann ...
das es bei dennen über den directinput läuft...keine lust das zu hooken...

:(.
Ich gebe dann mal Feedback ob es evtl. mit SendInput geklappt hat...
Heute abend denke ich mal.

danke liebe epvp'ler gibt doch noch paar klugeköpfe hier, in den section in den ich momentan aktiv bin... haette in 5jahren niemand eine antwort für mich gehabt :o
06/15/2010 14:27 schlurmann#12
Quote:
Originally Posted by Eiscremekugel View Post
Also werde jetzt die komplette struktur nochmal überarbeiten da ich mir nicht vorstellen kann ...
das es bei dennen über den directinput läuft...keine lust das zu hooken...
Glauben und Vorstellen kannste inner Kirche, entweder es nutzt DInput oder nicht. Minimale Kenntnisse reichen aus um das herauszufinden.
06/15/2010 20:32 MrSm!th#13
Quote:
Originally Posted by Eiscremekugel View Post
Ah wieder was dazu gelernt danke ;D
Und ja der bot an sich läuft gut, schreibt schön in die notepad usw.
nur nich ingame
wie gesagt heute schau ich mir mal sendinput an

Ich denke mal das game nutzt die win api garnicht und nutzt stattdessen den directinput.... >.<
Wäre auch zueinfach gewesen einfach ein bot mit keybd_event - der funzt wäre zu schön


danke c# bin ich grade am lernen nebenbei....
das ein gutes beispiel nur hast du darin garkein fokus gesetzt richtig?
Sagte ich ja, directinput.
Das wären dann aber keybd_event und SendInput ;)
Soweit ich weiß, simuliert SendInput den DInput und geht nicht über Windows Messages.
Wie gesagt, schonmal in das Chatfenster geklickt, um zu sehen, ob es dann klappte?
06/15/2010 21:45 Eiscremekugel#14
Quote:
Originally Posted by schlurmann View Post
Glauben und Vorstellen kannste inner Kirche, entweder es nutzt DInput oder nicht. Minimale Kenntnisse reichen aus um das herauszufinden.
ja...aber momentan kann ich keinen debugger auf meinem homerechner laufen lassen ...
---> crash

hatte auch überlegt den afk bot vill komplett über interne funktionen zuschreiben jedoch nicht möglich da im mom nur olly aufbekomm in der weiterbildung..

muss erstmal mein win neu aufsetzen
Quote:
Originally Posted by MrSm!th View Post
Sagte ich ja, directinput.
Das wären dann aber keybd_event und SendInput ;)
Soweit ich weiß, simuliert SendInput den DInput und geht nicht über Windows Messages.
Wie gesagt, schonmal in das Chatfenster geklickt, um zu sehen, ob es dann klappte?
Ja i know , hab mich vill bisschen unverständlich ausgedrückt :o
Jap klappt auch nicht ...
06/15/2010 22:30 schlurmann#15
Quote:
Originally Posted by Eiscremekugel View Post
ja...aber momentan kann ich keinen debugger auf meinem homerechner laufen lassen ...
---> crash
Tools wie Dumpbin reichen vollkommen.