|
You last visited: Today at 04:03
Advertisement
PostMessage UDF
Discussion on PostMessage UDF within the AutoIt forum part of the Coders Den category.
06/04/2011, 03:46
|
#16
|
elite*gold: 146
Join Date: May 2009
Posts: 3,764
Received Thanks: 6,974
|
Hallo Killer,
sieht gut aus, aber ich glaube, ich bin zu blöd
Ich möchte folgendes an $_handle senden:
Wie genau muss ich mit deiner UDF vorgehen, um das zu erreichen? Ferner funktioniert das nicht:
Code:
_PostMessage_Send($_handle, "{DOWN}")
Wäre dir über Hilfe dankbar.
Im Übrigen geht es um ein inaktives WoW-Fenster. Bin mir ja nichtmal sicher, ob das Ganze dort überhaupt funktioniert.
|
|
|
06/04/2011, 10:09
|
#17
|
elite*gold: 52
Join Date: Oct 2010
Posts: 1,998
Received Thanks: 389
|
Machs doch einfach mit ControlSend oder gehts damit nichtmehr seit Cata drausen ist?
|
|
|
06/04/2011, 11:01
|
#18
|
elite*gold: 146
Join Date: May 2009
Posts: 3,764
Received Thanks: 6,974
|
|
|
|
06/04/2011, 15:21
|
#19
|
elite*gold: 0
Join Date: Mar 2009
Posts: 7,260
Received Thanks: 33,149
|
Quote:
Originally Posted by Whoknowsit
Ich möchte folgendes an $_handle senden:
|
"/" kannst du mit dieser UDF nicht senden.
|
|
|
06/04/2011, 15:33
|
#20
|
elite*gold: 146
Join Date: May 2009
Posts: 3,764
Received Thanks: 6,974
|
Okay, danke. Dann sollen die mal ControlSend heile machen, damit da nicht ständig irgendwas verloren geht
|
|
|
06/04/2011, 21:19
|
#21
|
elite*gold: 0
Join Date: Apr 2008
Posts: 1,079
Received Thanks: 438
|
Habs jetzt nicht getestet, aber sollte funzen.
Code:
#include <WindowsConstants.au3>
Opt("WinTitleMatchMode", 3)
Global $client = "Neues Textdokument - Editor"
Global $hwnd = WinGetHandle($client)
KeySend("SLASH")
KeySend("w")
KeySend("SPACE")
KeySend("x")
KeySend("y")
KeySend("z")
KeySend("SPACE")
KeySend("H")
KeySend("a")
KeySend("l")
KeySend("l")
KeySend("o")
; send single keyboard event to non active window
; event = pressed, down, up
; kdown = key down delay
; note: supports only lower case keys + NUMx, Fx, some special keys and @
Func KeySend($inkey, $evt ="pressed", $kdown = 50)
$user32 = DllOpen("user32.dll")
if $user32 = -1 Then
ConsoleWrite("KeySend: cannot open user32.dll")
Exit
EndIf
; handling for special keys
Switch StringUpper($inkey)
Case "@"
$skey = 0x40
$lparam = 0x00100001
DllCall($user32, "int", "PostMessage", "hwnd", $hwnd, "int", $WM_KEYDOWN, "int", 0x71, "long", $lparam)
DllCall($user32, "int", "PostMessage", "hwnd", $hwnd, "int", $WM_CHAR, "int", $skey, "long", $lparam)
Sleep(20)
DllCall($user32, "int", "PostMessage", "hwnd", $hwnd, "int", $WM_KEYUP, "int", 0x71, "long", BitOR($lparam, 0xC0000000))
Case "F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "F10", "F11", "F12"
$skey = 0x6f + Int(StringMid($inkey, 2))
ContinueCase
Case "NUM0", "NUM1", "NUM2", "NUM3", "NUM4", "NUM5", "NUM6", "NUM7", "NUM8" , "NUM9"
if StringUpper(StringLeft($inkey, 3)) = "NUM" Then
$skey = 0x60 + Int(StringMid($inkey, 4))
EndIf
ContinueCase
Case "RETURN", "SPACE", "TAB", "BACK", "END", "HOME", "SNAPSHOT", "INSERT", "DELETE","SLASH", "LEFT", "RIGHT", "UP", "DOWN"
Switch StringUpper($inkey)
Case "RETURN"
$skey = 0x0D
Case "SPACE"
$skey = 0x20
Case "TAB"
$skey = 0x09
Case "BACK"
$skey = 0x08
Case "END"
$skey = 0x23
Case "HOME"
$skey = 0x24
Case "SNAPSHOT"
$skey = 0x2c
Case "INSERT"
$skey = 0x2d
Case "DELETE"
$skey = 0x2e
Case "SLASH"
$skey = 0x2f
Case "LEFT"
$skey = 0x25
Case "RIGHT"
$skey = 0x27
Case "UP"
$skey = 0x26
Case "DOWN"
$skey = 0x28
EndSwitch
$ret = DllCall($user32, "int", "MapVirtualKey", "int", $skey, "int", 0)
$lparam = BitShift($ret[0], -16)
$lparam = BitOr($lparam, 1)
DllCall($user32, "int", "PostMessage", "hwnd", $hwnd, "int", $WM_KEYDOWN, "int", $skey, "long", $lparam)
Sleep($kdown)
DllCall($user32, "int", "PostMessage", "hwnd", $hwnd, "int", $WM_KEYUP, "int", $skey, "long", BitOR($lparam, 0xC0000000))
Case Else ; default lower case key handling
$key = DllCall($user32, "int", "VkKeyScan", "int", Asc(StringLower($inkey)))
$skey = $key[0]
$ret = DllCall($user32, "int", "MapVirtualKey", "int", $skey, "int", 0)
$lparam = BitShift($ret[0], -16)
$lparam = BitOr($lparam, 1)
Select
Case $evt = "pressed"
DllCall($user32, "int", "PostMessage", "hwnd", $hwnd, "int", $WM_KEYDOWN, "int", $skey, "long", $lparam)
Sleep($kdown)
DllCall($user32, "int", "PostMessage", "hwnd", $hwnd, "int", $WM_KEYUP, "int", $skey, "long", BitOR($lparam, 0xC0000000))
Case $evt = "down"
DllCall($user32, "int", "PostMessage", "hwnd", $hwnd, "int", $WM_KEYDOWN, "int", $skey, "long", $lparam)
Case $evt = "up"
DllCall($user32, "int", "PostMessage", "hwnd", $hwnd, "int", $WM_KEYUP, "int", $skey, "long", BitOR($lparam, 0xC0000000))
EndSelect
EndSwitch
DllClose($user32)
EndFunc
Credits: tonitusch666
|
|
|
06/04/2011, 23:27
|
#22
|
elite*gold: 146
Join Date: May 2009
Posts: 3,764
Received Thanks: 6,974
|
Danke, werds morgen mal testen, auch wenn ich befürchte, dass es nicht funktioniert
|
|
|
06/05/2011, 10:23
|
#23
|
elite*gold: 0
Join Date: Apr 2008
Posts: 1,079
Received Thanks: 438
|
Was für ein OS benutz du? Bei meinem w7 x64 funktioniert es z.b. nicht. Jedoch bin ich mir sicher dass es bei meinem alten xp x86 ordentlich funktioniert hat.
Ansonsten kannst du mal bei killerdeluxe seiner udf bei $key den ascii code vom slash probieren. Also:
Code:
_PostMessage_Send($hWnd, 0x2f, $Delay = 10)
Kann das Archiv leider nicht runterladen sonst hätt ichs mir mal angeschaut.
|
|
|
02/22/2012, 16:36
|
#24
|
elite*gold: 0
Join Date: Mar 2009
Posts: 7,260
Received Thanks: 33,149
|
Ich hab nach langem mal wieder etwas geändert. Die  können nur als $Key Parameter angegeben werden. Außerdem habe ich einen Bug gefixt, wodurch es nicht mehr möglich war Zahlen und Buchstaben zu senden.
|
|
|
02/22/2012, 20:18
|
#25
|
elite*gold: 0
Join Date: Jul 2010
Posts: 16
Received Thanks: 0
|
Hey 
es fehlt die declaration von den Variablen $VK_LBUTTON sowie M und R, sodass man eine Fehlermeldung bekommt...
Ich weiß zar, wie man das fixt, aber wär trotzdem nett, wenn du das fixt :P
|
|
|
02/22/2012, 22:51
|
#26
|
elite*gold: 0
Join Date: Mar 2009
Posts: 7,260
Received Thanks: 33,149
|
Ich habe die UDF mit der aktuellsten AutoIt Version überarbeitet. In dieser Version sind $VL_LBUTTON, $VK_RBUTTON und $VK_MBUTTON schon in der "Constants.au3" deklariert. Hätte ich vielleicht dazuschreiben können.
Ansonsten sollte man es noch per If Abfrage mit IsDeclared() lösen können. Nichts dramatisches, deswegen werde ich es auch nicht ändern.
|
|
|
02/25/2012, 14:16
|
#27
|
elite*gold: 0
Join Date: May 2011
Posts: 275
Received Thanks: 49
|
Hast du vielleicht ein Beispiel da, ich verstehe es leider nicht ganz.
Code:
$hWnd = WinGetHandle("PostMessage UDF - Seite 3 - Mozilla Firefox") ;
_PostMessage_Send($hWnd, "{F5}",1500)
|
|
|
02/25/2012, 18:58
|
#28
|
elite*gold: 0
Join Date: Jul 2010
Posts: 16
Received Thanks: 0
|
Hey KD,
ich versuche bei LC nen kleinen Pixelbot mit deiner UDFzu schreiben, bekomme aber imm send error... kann man den beheben oder sind jetzt alle Bots gestorben?
ED
|
|
|
02/25/2012, 19:56
|
#29
|
elite*gold: 0
Join Date: Mar 2009
Posts: 2,317
Received Thanks: 1,255
|
Quote:
Originally Posted by EliteDeath
Hey KD,
ich versuche bei LC nen kleinen Pixelbot mit deiner UDFzu schreiben, bekomme aber imm send error... kann man den beheben oder sind jetzt alle Bots gestorben?
ED
|
Ich glaube kaum, dass KD hellsehen kann..
error posten und abwarten...
|
|
|
02/25/2012, 20:25
|
#30
|
elite*gold: 0
Join Date: Mar 2009
Posts: 7,260
Received Thanks: 33,149
|
Wieso werden hier nicht themenrelevante Probleme angesprochen? Irgendwelche Fehler bei Spiel XYZ sind mir egal, hier geht es rein um die PostMessage Funktion.
|
|
|
 |
|
Similar Threads
|
[c++]postmessage problem
07/03/2010 - C/C++ - 7 Replies
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
#include <iostream>
#include <windows.h>
|
[TUTORIAL] PostMessage mit AutoIT
06/16/2009 - Flyff Hacks, Bots, Cheats, Exploits & Macros - 0 Replies
Ich habe eine Anfrage bekommen wie man mit AutoIT Tasten und Mausklicks
an ein Flyff Fenster sendet. Ich denke da das mehrere Leute interessieren könnte, poste ich hier meine ausführliche Antwort auf die Frage.
Ob die Assembler Erklärung korrekt ist weiß ich nicht, sollte soweit auch
unwichtig sein.
Ich werde keine weiteren Fragen dazu beantworten.
Die benötigte .dll findet ihr hier:
|
keine reaktion auf Postmessage
03/04/2009 - Guild Wars - 20 Replies
Einen wunderschönen guten Morgen,
ich hoffe nicht das euch das thema zum halse raus hängt, aber leider habe ich nichts passendes in andern Threads gefunden.
Vorabinfo:
Sprache: VB2008
System: WinXP Prof SP2
Mein Problem ist das GW das Postmessage nicht "an nimt"
( Auch Sendmessage geht nicht )
|
All times are GMT +1. The time now is 04:04.
|
|