Problem mit PostMessage

03/02/2011 19:30 SwarN#1
Hallo,

Also kurzum, ich will Tasten an ein inaktives Fenster senden.

z.b. die {TAB} taste.

Dies funktioniert auch, wenn das Fenster aktiv ist.

_WinAPI_PostMessage($hWnd, 0x100, $TAB, 0x0)

So, nun das Problem, wenn das fenster inaktiv ist, sendet er dies nicht mehr.
Aktiviere ich den Chat und lass z.B. die Taste 'a' Senden, schreibt er das aber in den chat obwohl das fenster inaktiv ist.

Weiß einer woran das liegt?
(Nochmal im Aktiven Fenster funtzt alles einwandfrei)
03/02/2011 20:13 lolkop#2
warscheinlich hat das programm, an welches du senden möchtest einen schutz gegen ein senden, während es nicht aktiv ist, integriert.
03/02/2011 22:12 SwarN#3
Für so eine Antwort gibts aber kein Thx :)
03/02/2011 22:16 lolkop#4
habe ich auch nie drum gebeten :P
du hast keinerlei informationen angegeben, um welches programm es sich den handelt, und so ist das nunmal das warscheinlichste problem =)

am besten du testest deine text-funktionen zunächst an notepad. bist du dort in der lage in jedem zustand zu senden, hat das problem nichts mit der funktion an sich zu tun.
03/03/2011 08:24 SwarN#5
Quote:
Originally Posted by SwarN View Post
Aktiviere ich den Chat und lass z.B. die Taste 'a' Senden, schreibt er das aber in den chat obwohl das fenster inaktiv ist.
(Nochmal im Aktiven Fenster funtzt alles einwandfrei)
Ich will nicht unhöflich sein aber lern lesen...


Es funktioniert eig. schon im inaktiven nur halt dass er nichts anderes macht als in den chat schreibt.

Ehrlich gesagt kann ich mir das nicht vorstellen dass es ein "schutz" vom spiel ist. Denn warum sollte es dann im aktiven fenster einwandfrei funktionieren obwohl ich den selben funktions aufruf habe?

Weiß da wer genauer bescheid?
03/03/2011 15:26 | Moep |#6
Warum sollte es kein Schutz vom Spiel sein, wenn du doch immer die gleiche Funktion nutzt, und nur der Zustand des Fensters sich ändert? Dann ist doch das Fenster die variable die nicht passt.
03/03/2011 15:59 lolkop#7
den test habe ich vorgeschlagen (in diesem falle eigentlich sinnlos) um einfach mal an einem programm von dem du weist des es keine schutzmechanismen beinhaltet, deine funktion zu testen...

das es im aktiven zustand funktioniert, heist noch lange nicht das es auch sonst funktioniert... (wobei das wie gesagt bei postmessage eigentlich nicht der fall sein sollte) da du allerdings nicht direkt per dllcall auf die winapi zugreifst, sondern über eine in autoit vorgefertigte version dieses winapi zugriffs, würde ich es halt testen...

wenn du meinen post richtig gelesen hättest, hättest du wohl aber auch nicht gesagt, dass ich "mal lesen lernen soll"...

wenn es im inaktiven zustand nicht funktioniert, gibt es noch viele möglichkeiten, wie man es denn trotzdem hinbekommen könnte, je nachdem ob man weis, worauf genau das programm denn prüft.
03/03/2011 17:19 SwarN#8
wie kann ich die winapi funktion direkt vom spiel aufrufen?
im moment benutz ich ja eine aus einer anderen dll.

könnt ihr mir da ein beispiel geben?
03/04/2011 05:50 RunzelEier#9
swarn das hast du faslch verstanden.
winapi = windows application programming interface.
das sind die windows .dlls zu finden im system32 ordner (oder auch nicht grad zu faul zum gucken)

z.b. user32.dll
kernel32.dll

ich glaub aber nicht, das das was mit dem vorgefertigten _sendmessage von autoit zu tun hat.
der funktions aufruf der UDF sieht so aus.

PHP Code:
Func _SendMessage($hWnd$iMsg$wParam 0$lParam 0$iReturn 0$wParamType "wparam"$lParamType "lparam"$sReturnType "lresult")
    
Local $aResult DllCall("user32.dll"$sReturnType"SendMessageW""hwnd"$hWnd"uint"$iMsg$wParamType$wParam$lParamType$lParam)
    If @
error Then Return SetError(@error, @extended"")
    If 
$iReturn >= And $iReturn <= 4 Then Return $aResult[$iReturn]
    Return 
$aResult
EndFunc   
;==>_SendMessage 
macht echt keinen unterschied, ob ich das direkt call oder die UDF nutz