Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > General Coding > Coding Tutorials
You last visited: Today at 15:23

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Text an minimiertes Fenster senden

Discussion on Text an minimiertes Fenster senden within the Coding Tutorials forum part of the General Coding category.

Reply
 
Old   #1
 
Kraizy​'s Avatar
 
elite*gold: 0
The Black Market: 471/0/0
Join Date: Apr 2010
Posts: 9,696
Received Thanks: 1,811
Text an minimiertes Fenster senden

Hi,
wollte euch mal zeigen, wie ihr einen Text an ein Fenster/Spiel sendet, welches sich im Hintergrund befindet. Bei diesem kleinen Tutorial nehme ich das Spiel Silkroad Online, und werde einen kleinen "Autologin" bauen, der eure ID/PW eingibt und ENTER drückt. Das ganze in VB.NET (kann leider kein C++^^)

Also, als erstes die benötigte WinAPI:
PHP Code:
//SendMessage
Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As IntegerByVal wMsg As IntegerByVal wParam As IntegerByVal lParam As Integer) As Integer 
Nun noch einige Deklarationen:
PHP Code:
Private Const WM_CHAR As Integer = &H102
Private Const ENTER As Integer 13
Private Const TAB As Integer 9

Private ID As String "test123"
Private PW As String "blubb123"
Private sroHwnd As IntPtr Nothing 
So, jetzt kann es eigentlich auch schon losgehen.
Per Button oder wie auch immer, suchen wir das Handle von unserem Spiel und übergeben es unserer Variable "sroHwnd":
PHP Code:
sroHwnd Process.GetProcessesByName("SRO_Client")(0).MainWindowHandle
//anstelle von "SRO_Client" müsst ihr den Prozessnamen eures Fensters angeben, aber ohne .exe am Ende. 
Nun haben wir das Handle gefunden und können unsere Account-Daten schicken:
PHP Code:
//Zeichen für Zeichen der ID an das Spiel senden mit einer For-Schleife
For As Integer 0 To ID.Length -1
   SendMessage
(sroHwndWM_CHARAscW(ID(x)), 0)
Next

//TAB senden, damit man ins Passwort-Feld gelangt (falls nötig)
SendMessage(sroHwndWM_CHARAscW(Chr(TAB)), 0)

//Beim Passwort nun das gleiche wie bei der ID
For As Integer 0 To PW.Length -1
   SendMessage
(sroHwndWM_CHARAscW(PW(x)), 0)
Next

//Zum Schluss Enter senden (falls nötig), das gleiche wie beim Tabulator
SendMessage(sroHwndWM_CHARAscW(Chr(ENTER)), 0
So, das wars eigentlich auch schon, Enter wird in diesem Beispiel nur einmal gesendet, aber ihr könnt es ja in eine Schleife packen, ist also kein Problem.

Hier nochmal, der komplette Code:
PHP Code:
Public Class SRO_SendMessage

   
Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As IntegerByVal wMsg As IntegerByVal wParam As IntegerByVal lParam As Integer) As Integer
    
   
Private Const WM_CHAR As Integer = &H102
   
Private Const ENTER As Integer 13
   
Private Const TAB As Integer 9

   
Private ID As String "test123"
   
Private PW As String "blubb123"
   
Private sroHwnd As IntPtr Nothing

   
Private Sub btnSendLogin_Click(ByVal sender As System.ObjectByVal e As System.EventArgsHandles btnSendLogin.Click

      sroHwnd 
Process.GetProcessesByName("SRO_Client")(0).MainWindowHandle

      
For As Integer 0 To ID.Length -1
         SendMessage
(sroHwndWM_CHARAscW(ID(x)), 0)
      
Next

      SendMessage
(sroHwndWM_CHARAscW(Chr(TAB)), 0)

      For 
As Integer 0 To PW.Length -1
         SendMessage
(sroHwndWM_CHARAscW(PW(x)), 0)
      
Next

      SendMessage
(sroHwndWM_CHARAscW(Chr(ENTER)), 0)

   
End Sub
        
End 
Class 
So, hoffe ich konnte euch damit ein wenig helfen und bei Fragen könnt ihr gerne hier reinschreiben oder mich in Skype adden: k0La_xD

Achja, das ganze funktioniert leider nicht bei allen Spielen, wie z.B. Counter Strike usw. (naja, ich hab es noch nicht ausprobiert kann mich natürlich auch irren) und bei manchen Fenstern müsst ihr das richtige Handle erstmal finden, wenn ihr z.B. beim Notepad das MainWindowHandle benutzt, dann wird der Fenstername überschrieben. Um es zu zeigen:
Ihr benötigt dann noch folgende WinAPI:
PHP Code:
Private Declare Function FindWindowEx Lib "user32.dll" Alias "FindWindowExA" (ByVal hwndParent As IntegerByVal hwndChildAfter As IntegerByVal lpszClass As StringByVal lpszWindow As String) As Integer

//dann fügt ihr in meinem obigen Komplett-Code unter die Zeile sroHwnd = Process.GetProcessesByName... 
//noch folgendes ein:
Dim childHwnd As IntPtr FindWindowEx(sroHwnd0"Edit"vbNullString)
//"Edit" ist der Klassenname der TextBox die sich im Notepad befindet, um die richtigen Handles zu finden ist das Tool 
//Spy++ oder WinID empfehlenswert..
//Danach ändert ihr in den Schleifen wo SendMessage(...) benutzt wird das "sroHwnd" zu "childHwnd" und nun 
//müssten die ID & PW im Notepad drinne stehen (und nicht vergessen den richtigen Prozessnamen (notepad) 
//anzugeben, anstatt "SRO_Client") 
Soo, jetzt aber wirklich fertig^^
Viel Spaß beim Ausprobieren!
Kraizy​ is offline  
Thanks
1 User
Old 03/21/2011, 09:20   #2
 
elite*gold: 334
Join Date: Jan 2011
Posts: 364
Received Thanks: 28
... Was soll das sein?
lalalala2 is offline  
Old 03/21/2011, 14:25   #3
 
Kraizy​'s Avatar
 
elite*gold: 0
The Black Market: 471/0/0
Join Date: Apr 2010
Posts: 9,696
Received Thanks: 1,811
Quote:
Originally Posted by lalalala2 View Post
... Was soll das sein?
Da ich schon öfters die Frage gelesen habe, wie man einen Text an ein Spiel wie z.B. Silkroad senden kann, wenn es im Hintergrund ist, wollte ich eine Möglichkeit zeigen, wie es mit der WinAPI SendMessage und dem richtigen Handle funktioniert..
Kraizy​ is offline  
Old 03/21/2011, 15:30   #4
 
elite*gold: 150
Join Date: Dec 2010
Posts: 112
Received Thanks: 159
Ob ein Fenster minimiert oder maximiert ist, im Vordergrund oder im Hintergrund, etc. ist eig egal - es kann immer Nachrichten empfangen.
ich verstehe daher den Sinn des Tutorials nicht so ganz...
5769854332 is offline  
Old 03/21/2011, 15:46   #5
 
Kraizy​'s Avatar
 
elite*gold: 0
The Black Market: 471/0/0
Join Date: Apr 2010
Posts: 9,696
Received Thanks: 1,811
Quote:
Originally Posted by Kiakar View Post
Ob ein Fenster minimiert oder maximiert ist, im Vordergrund oder im Hintergrund, etc. ist eig egal - es kann immer Nachrichten empfangen.
Wenn ein Fenster im Hintergrund ist, kannst du z.B. in .NET nicht einfach SendKeys.Send("w") benutzen, da das einfach abgeschickt wird. Sagen wir mal du hast ein Spiel an, das sich im Hintergrund befindet und schreibst hier im Forum gerade einen Beitrag und benutzt SendKeys.Send("w"), dann wirst du in deinem Beitrag das "w" sehen, im Spiel jedoch nichts...

Ich denke, ich habs wohl im falschen Bereich gepostet, sollte wohl lieber ins e*pvp Coders Tutorials kommen...
Kraizy​ is offline  
Thanks
1 User
Old 03/21/2011, 16:08   #6


 
elite*gold: 1091
Join Date: Jun 2007
Posts: 19,836
Received Thanks: 7,180
#moved
Mostey is offline  
Reply


Similar Threads Similar Threads
Visual Basic Text in bestimmtes Fenster senden
05/09/2011 - .NET Languages - 8 Replies
Hallo, Ich bin grade dabei ein Programm zu scripten was z.b. eine textbox enthält und ein button und wenn man auf den butten drückt soll der text aus der textbox in ein betsimmtes fenter gesendet werden das man irgentwo angeben muss... Also eig alles wie bei einem Spammer (ganz einfach) Aber wie bekomme ich hin das Visual basic etwas sofort wenn man auf ein button klickt ein Text in ein anderes Fenster Sendet ??? Bitte hilft mir^^
VS C++ SendKeys an Fenster senden
09/21/2010 - C/C++ - 14 Replies
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");
Minimiertes Fenster umbenennen?
04/07/2010 - Metin2 Private Server - 1 Replies
ich wollte fragen ob mir vielleicht einer erklären kann wie ich das minimierte fenster eines p servers auf Metin2 DE umbenennen kann. Ich hoffe dadurch die Angelbots benüzen zu können. Danke jetzt schon für gute Antworten. MFG Widi
JoyToAR - Tastendruck an Fenster senden - Problem!
04/29/2009 - General Coding - 4 Replies
Problembeschreibung in den... Crossposts: Ace Online / AirRivals AirRivals, Joysticks und Gamepads... - Hilfe und Fragen - AirRivals.de Board Delphi-PRAXiS :: Tastendruck simulieren Thx, LDer!
sandboxie minimiertes fenster
03/29/2009 - Diablo 2 - 7 Replies
kann man das einstellen, das man diablo 2 minimiert im sandboxie startet? :)



All times are GMT +1. The time now is 15:24.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.