Sendmessage problem bei Programmen im Hintergrund

popelmaster

Mitglied
PostMessage problem bei Programmen im Hintergrund

ok also mein ziel ist es ein Programm zu schreiben was im Hintergrundläuft und sich auf einer Webseite im webbrowser plugin durch tabbt und dann enter drückt...

ich habe das so gemacht:
Code:
thunderformdc = FindWindow(vbNullString, "KlickMisch v.1.o")
shellembedding = FindWindowEx(thunderformdc, 0&, "shell embedding", vbNullString)
shelldocobjectview = FindWindowEx(shellembedding, 0&, "shell docobject view", vbNullString)
internetexplorerserver = FindWindowEx(shelldocobjectview, 0&, "internet explorer_server", vbNullString)


hwn = shelldocobjectview
PostMessage hwn, WM_SETFOCUS, 0, 0
m = GetWindow(hwn, GW_CHILD): Call PostMessage(m, WM_KEYDOWN, vbKeyTab, &H0)
Call PostMessage(m, WM_KEYDOWN, vbKeyTab, &H1)
Call PostMessage(m, WM_KEYDOWN, vbKeyTab, &H2)
Call PostMessage(m, WM_KEYDOWN, vbKeyTab, &H2)
Call PostMessage(m, WM_KEYDOWN, vbKeyReturn, &H0)

und so wie es da steht funktioniert es auch aber leider nur wenn das programm im VORDERGRUND ist es soll aber unbedingt im Hintergrund arbeiten is macht 3 mal tab und dann Enter...hmm die hwnd stimmt auch ... also meine theorie war ja...das ich von dem webbrowser die hwnd rausbekomme was ich geschafft habe und dann die nachrichten da einfach hinschicke und dann läuft das aber so bald das fenster im Hintergrund is funktioniert da gar nichts...
wie kann ich also genau das fenster aktivieren wo der webbrowser läuft...so das genau auf das fenster die postmessage befehle ankommen?

mein head sieht übrigens so aus:
Code:
Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
Const GW_HWNDFIRST = 0: Const GW_HWNDLAST = 1: Const GW_HWNDNEXT = 2: Const GW_HWNDPREV = 3: Const GW_OWNER = 4: Const GW_CHILD = 5

Private Declare Function PostMessage Lib "user32.dll" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function FindWindowEx Lib "user32" _
 Alias "FindWindowExA" (ByVal hWndParent As Long, _
 ByVal hWndChildAfter As Long, ByVal lpszClass As String, _
 ByVal lpszWindow As String) As Long

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Const WM_SYSKEYDOWN = &H104: Private Const WM_SYSKEYUP = &H105
Const WM_KEYDOWN = &H100: Const WM_KEYUP = &H101
Const WM_SETFOCUS = &H7: Const WM_KILLFOCUS = &H8
Dim hwn
Dim anz
vielleicht liegt ja der Fehler irgendwo da

HELFT MIR BITTE....ich verzweifel bald .. danke und Gruss

Roman
 
Zuletzt bearbeitet:
oook...also jetz wirds kriminell...ich habs hinbekommen es im Hintergrund lauffähig zu bekommen... das is der code:
Code:
Pause 5
thunderformdc = FindWindow(vbNullString, "Google-Klicker v1.o ©by TyBalD")
shellembedding = FindWindowEx(thunderformdc, 0&, "shell embedding", vbNullString)
shelldocobjectview = FindWindowEx(shellembedding, 0&, "shell docobject view", vbNullString)
internetexplorerserver = FindWindowEx(shelldocobjectview, 0&, "internet explorer_server", vbNullString)
hwn = internetexplorerserver
Me.SetFocus
ie.SetFocus
Call PostMessage(hwn, WM_KEYDOWN, vbKeyTab, &H0)
Call PostMessage(hwn, WM_KEYDOWN, vbKeyTab, &H1)
Call PostMessage(hwn, WM_KEYDOWN, vbKeyTab, &H2)
Call PostMessage(hwn, WM_KEYDOWN, vbKeyTab, &H2)
Call PostMessage(hwn, WM_KEYDOWN, vbKeyReturn, &H0)

ok jetz kommt der Witz an der Sache :suspekt: Es Klappt nur ... wenn man es Aus Visual Basic herraus startet MUUUUUHAAAAA.... :suspekt: wenn ich die *.exe starte klappts nich mehr dann setzter das fenster zwar in den focus aber das wars dann auch tasten werden dann nicht mehr gesendet...kann mir vll jemand sagen woran das liegt ^^ ansonsten nehm ich mirn strick ^^
 
Zurück