Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > AutoIt
You last visited: Today at 12:09

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

Advertisement



ControlSend zeigt keine Wirkung

Discussion on ControlSend zeigt keine Wirkung within the AutoIt forum part of the Coders Den category.

Reply
 
Old   #1
 
erudite's Avatar
 
elite*gold: 338
Join Date: Aug 2010
Posts: 533
Received Thanks: 201
Question ControlSend zeigt keine Wirkung

Hey.

Wo liegt der Fehler?

Danke im Voraus!
PHP Code:
    ;Author


#include "KDMemory.au3"
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <ListViewConstants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <Pointer.au3>
#Include <GuiListView.au3>
#include <crypt.au3>
#Include <Timers.au3>

#Region ### START Koda GUI section ### Form=
$Form1 GUICreate("Form1"326133192164)
$Button GUICtrlCreateButton("On"128569717)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###


Dim $handles 0
Const $processName "TClient.exe"



While 1
        $msg 
GUIGetMsg()
        If 
$msg == -3 Then Exit ; $GUI_EVENT_CLOSE

        $processId 
ProcessExists($processName)
        If 
$processId == 0 Then
        
If IsArray($handlesThen
            _KDMemory_CloseHandles
($handles)
            
$handles 0
        
EndIf
        
ContinueLoop
        
EndIf

        If 
$handles == 0 Then
        $handles 
_KDMemory_OpenProcess($processId)
        If @
error Then
            
If MsgBox(52"Error""Can't open " $processName "! @error: " & @error & @CRLF "Continue?") == 6 Then
                $handles 
0
                ContinueLoop
            
Else
                Exit
            EndIf
        EndIf
        EndIf


        If  
$msg $Button Then

                ControlSend 
("4Story_GSP","","","i")

        EndIf



    
WEnd 
erudite is offline  
Old 12/01/2013, 18:40   #2
 
elite*gold: 0
Join Date: Mar 2009
Posts: 7,260
Received Thanks: 33,149
Lass mich raten: Einfach alles zusammen kopiert?
GUI Events solltest du zu Beginn der While-Schleife abarbeiten (siehe Bedingung für "Exit").

Wofür ein Handle zum Lesen und Schreiben erstellen, wenn du es nicht machst? Mehr als ein ControlSend() machst du nicht, dafür brauchst du meine KDMemory.au3 UDF nicht. Da die offiziellen Server einen (schlechten) "Hackshield" verwenden kannst du die Control Befehle nicht verwenden. Den Speicher lesen und schreiben kannst du auch nicht ohne weiteres.

Es ist eigentlich nichts wirklich falsch, dass der Befehl nicht funktioniert liegt schlichtweg am Spiel.
KDeluxe is offline  
Old 12/01/2013, 19:27   #3
 
erudite's Avatar
 
elite*gold: 338
Join Date: Aug 2010
Posts: 533
Received Thanks: 201
Quote:
Originally Posted by KDeluxe View Post
Lass mich raten: Einfach alles zusammen kopiert?


Wofür ein Handle zum Lesen und Schreiben erstellen, wenn du es nicht machst? Mehr als ein ControlSend() machst du nicht, dafür brauchst du meine KDMemory.au3 UDF nicht. Da die offiziellen Server einen (schlechten) "Hackshield" verwenden kannst du die Control Befehle nicht verwenden. Den Speicher lesen und schreiben kannst du auch nicht ohne weiteres.

Es ist eigentlich nichts wirklich falsch, dass der Befehl nicht funktioniert liegt schlichtweg am Spiel.
1. Ja ich habe den oberen Teil kopiert. Wieso auch nicht? (Er funktionierte bis jetzt immer, da er von dir geschrieben ist. )
2. Ich habe das Handle eingebaut, weil ich noch mehr einbauen will, wofür ich es brauche.
3. Es kann nicht am HS liegen, da das Spiel, wofür ich das Programm schreibe, kein HS hat.

Fazit: Grundsätzlich erkennst du keine Fehler bis auf die Tatsache, dass man GUI Events zu Beginn der While-Schleife setzen sollte.
MHM :S woran könnte es dann liegen?

Danke
erudite is offline  
Old 12/01/2013, 19:39   #4
 
alpines's Avatar
 
elite*gold: 60
Join Date: Aug 2009
Posts: 2,256
Received Thanks: 815
Konntest du bisher überhaupt ein Resultat erreichen?
Ansonsten kannst du es mit einem simplen Send (zuerst) versuchen und dann, sofern es nicht geht, _SendMessage.
alpines is offline  
Thanks
1 User
Old 12/01/2013, 19:51   #5
 
erudite's Avatar
 
elite*gold: 338
Join Date: Aug 2010
Posts: 533
Received Thanks: 201
Quote:
Originally Posted by alpines View Post
Konntest du bisher überhaupt ein Resultat erreichen?
Ansonsten kannst du es mit einem simplen Send (zuerst) versuchen und dann, sofern es nicht geht, _SendMessage.
Also eigentlich soll das Programm ja das Inventar mit "i" öffnen.
Man kann das auch via Memory Write machen, allerdings wollte ich es einmal so ausprobieren.

Jedoch öffnet sich das Inventar nicht.

Aber ich werde deine Vorschläge mal ausprobieren. Danke
erudite is offline  
Old 12/01/2013, 19:56   #6
 
alpines's Avatar
 
elite*gold: 60
Join Date: Aug 2009
Posts: 2,256
Received Thanks: 815
Die MemoryWrite Variante wäre meiner Meinung nach sicherer, da du nachprüfen kannst ob es sich wirklich geöffnet hat und du nicht per PixelSearch danach suchen musst.
alpines is offline  
Old 12/01/2013, 20:00   #7
 
erudite's Avatar
 
elite*gold: 338
Join Date: Aug 2010
Posts: 533
Received Thanks: 201
Quote:
Originally Posted by alpines View Post
Die MemoryWrite Variante wäre meiner Meinung nach sicherer, da du nachprüfen kannst ob es sich wirklich geöffnet hat und du nicht per PixelSearch danach suchen musst.
Ja, das Inventar ist in diesem Falle nur ein Beispiel.

Ich will eigentlich nur mein Wissen etwas erweitern und ein wenig herumprobieren und dabei ist mir eben die Frage gekommen, wie ich bestimmte Befehle "simulieren" kann.
erudite is offline  
Old 12/01/2013, 22:29   #8
 
elite*gold: 0
Join Date: Mar 2009
Posts: 7,260
Received Thanks: 33,149
Das sollte man meiner Meinung nach immer mit dem Speicher lösen (kommt natürlich auf die Anwendung drauf an). Ich kann mich auch irren, aber ControlSend() dürfte allgemein nicht funktionieren. PostMessage funktioniert allerdings, das weiß ich noch, da ich jemandem dabei geholfen habe.
Bei 4Story hast du es noch sehr einfach, sämtliche Fenster im Spiel lassen sich über "0" ausblenden und "1" einblenden.

Mit meinem Beispiel möchte ich dir ebenfalls den einfachen Aufbau der Pointer von 4Story verdeutlichen:

Falls du das ganze dennoch mit PostMessage probieren möchtest kannst du dafür verwenden.
KDeluxe is offline  
Thanks
1 User
Old 12/01/2013, 23:26   #9
 
Logtetsch's Avatar
 
elite*gold: 192
Join Date: May 2009
Posts: 2,227
Received Thanks: 3,262
Ich würde es ebenfalls über die RAM machen.
Sowie du ControlSend benutzt, kann es zu schwerwigenden Fehlern führen. Stell dir vor du hast mehrere Fenster offen, welche alle den gleichen Fensternamen ("4Story_GSP") besitzen. Da ich nicht weiß, wie ProcessExists mit Prozessen umgeht, die es mehrmals gibt, solltest du vorab prüfen, ob 4Story nur einmal läuft. Eventuell gibt es sogar schon Bibliotheken für AutoIt, die die Funktion createtoolhelp32snapshot implementiert haben und genaueres über aktive Prozesse sagen können.
Logtetsch is offline  
Thanks
1 User
Old 12/02/2013, 03:04   #10
 
elite*gold: 0
Join Date: Mar 2009
Posts: 7,260
Received Thanks: 33,149
verwende ich in meiner KDMemory UDF um die Module eines Prozesses durchzugehen. Das wäre auch einfacher gegangen, allerdings wollte ich ausschließlich Funktionen der Kernel32.dll verwenden. Meine Basis könnte man theoretisch ganz einfach ändern.
Verwendet man ausschließlich den RAM kann es einem egal sein, wie viele Fenster den selben Namen verwenden. Möchte man eine Kombination aus RAM und "Fenster" muss man dem Fenster einen Prozess zuordnen können. Das kann man mittels WinList() und WinGetProcess() (unbedingt das Window Handle (HWND) übergeben) lösen.

KDeluxe is offline  
Thanks
2 Users
Reply


Similar Threads Similar Threads
Quest keine Wirkung :(
09/26/2013 - Metin2 Private Server - 8 Replies
Guten Tag, Ich wollte so eine Quest hinzufügen : http://www.elitepvpers.com/forum/attachment.php?at tachmentid=106892&stc=1&d=1318518461 quest gemi begin state start begin when 9001.click begin local shop_ids = { {9001}, {9007},
Konzentriertes Lesen = keine wirkung ???
09/16/2012 - Metin2 Private Server - 18 Replies
Nabend, ich habe folgendes Problem normalerweise ist die Wirkung von Konzentriertes Lesen das man 100% Bücher liest. Doch irgendwie mag das bei mir nicht klappen? Ich klicke ein Konzi an, eine Exo rolle doch die Bücher failen so wie wenn ich garkein Konzi nehmen würde.. Mir hat schon jemand gesagt das man es mit einer Dif patchen muss
Rüstungsskin geändert ~ Ingame keine Wirkung
09/10/2012 - Metin2 Private Server - 15 Replies
Titel beschreibt alles. Ich versuche jetzt schon seit 3 Stunden das Problem zu lösen, da ich ein paar Rüstungen ändern will und dann als neue einfügen möchte, ich teste vorher aber die Skins an den alten Rüstungen (70er) Unter anderem habe ich auch die Smaragd Rüssis geändert, aber ingame keine Wirkung. Habe schon die msm geändert (Theoretisch dürfte man jetzt nur noch eine weiße Smaragd Rüssi ingame sehen) Aber der Skin ist trotzdem noch da... Also ich habe in der msm den Namen...
Pc zeigt keine Taskleiste und keine Icons mehr an!!
04/25/2011 - Technical Support - 4 Replies
Hallo zusammen, als ich meinen Pc gestern startete, zeigte er keine Icons und keine Taskleiste mehr an. Wenn ich den Task-Manager öffnen will, wird der Bildschirm einige Zeit schwarz und nach einigem Warten erscheint wieder der leere Desktop. Meine Maus ist vorhanden und ich kann auf alle Ordner zugreifen(Rechtsklick;Anpassen;Ziel ändern), aber ich kann keine Dateien ausführen. Das komische ist aber das alle Icons und die Taskleiste im Abgesichertem Modus vorhanden sind und ich sie dort auch...



All times are GMT +1. The time now is 12:10.


Powered by vBulletin®
Copyright ©2000 - 2026, 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 ©2026 elitepvpers All Rights Reserved.