Text Senden Mit SendMessage an bestimmte XY Koordinaten?

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von seby1302.

    Text Senden Mit SendMessage an bestimmte XY Koordinaten?

    Hallo Leute, ich versuche grad mit SendMessage Ein Text zu Versende, dieser Landet aber einfach wo hin.
    Deshalb müsste ich nun den Text Zusätzlich Exakt an den benötigten Koordinaten Senden, Nur Habe ich echt kein Plan.

    Mit

    VB.NET-Quellcode

    1. Win32.SendMessage(HWndChild7, WM_LBUTTONDOWN, CType(MK_LBUTTON, IntPtr), CType(MakeDWord(Cordx.Value.X, CordY.Value.Y + 50), IntPtr))
    2. Win32.SendMessage(HWndChild7, WM_LBUTTONUP, CType(0, IntPtr), CType(MakeDWord(Cordx.Value.X, CordY.Value.Y + 50), IntPtr))
    3. * Aus Win32
    4. Friend Declare Function SendMessage Lib "user32.dll" Alias "SendMessageW" (ByVal hWnd As IntPtr, ByVal Msg As UInteger, ByVal wParam As IntPtr, ByVal lParam As IntPtr) As String


    Versende ich Mausklicks Funktioniert auch perfekt.

    Mit

    VB.NET-Quellcode

    1. im MyString As String = "I love you too xD "
    2. SendMessage(HWndChild7, WM_SETTEXT, 0, MyString)
    3. <DllImport("user32.dll", CharSet:=CharSet.Auto)>
    4. Public Function SendMessage(ByVal hWnd As IntPtr, ByVal Msg As Integer, ByVal wParam As Integer, <MarshalAs(UnmanagedType.LPWStr)> ByVal lParam As String) As IntPtr
    5. End Function
    6. Friend Function MakeDWord(ByVal LoWord As Int32, ByVal HiWord As Int32) As Int32
    7. MakeDWord = CInt((HiWord * &H10000) Or (LoWord And &HFFFF&))
    8. End Function


    Versende ich den Text, und es kommt auch an, Bloß an X = 0 Y = 0Wie kann ich diese beiden nun Kombinieren?

    *Topic verschoben*

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()

    @seby1302 SendMessage sendet an ein Fenster, dessen Handle im ersten Parameter steht.
    Was Du tun könntest:
    Klicke mit mouse_event() an besagte Koordinaten und hole Dir das aktivierte Fenster mit GetForegroundWindow().
    An dieses sendest Du Deine Message.
    pinvoke.net/default.aspx/user32.mouse_event
    pinvoke.net/default.aspx/user32.getforegroundwindow
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Naja das wollte ich eben Vermeiden an sonnten könnte ich einfach mit

    VB.NET-Quellcode

    1. My.Computer.Keyboard.SendKeys("I love you too xD ", True)

    Das hinbekommen, nur wird mir dann zur dieser zeit den Fokus weg genommen und so weiter.
    Geht darum das, das ganze im Hintergrund laufen kann, wehrend ich z.b nebenbei spiele oder sonstiges mache.

    Die Klicks funktionieren wie gesagt super.
    Nur der Text kommt nicht dort an wo es ankommen soll
    Wundern tut mich nur, das wen ich mit SendMessage bereits ein klick gemacht habe an X=1000 Y=1000 wieso der Text dann nicht dort ankommt sondern bei X0 Y0

    Deshalb dachte ich das man das eventuell Kombinieren Könnte SendeText Am X1000 Y1000 so in der Art
    Die maus Klicks mit SendMessage kommen auch dort an
    @seby1302 Was ganz genau wills Du denn erreichen?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Im Erste Linie geht's ums Programmieren.
    Habe jetzt Frei Bis Anfang nächsten Jahr, also genug zeit mich damit Länger zu Beschäftigen :D

    Da ich grade auf Seiten Unterwegs bin wo man Crypto Coins sammeln kann (Sammeln auf Zeit), ist das ein Guter Herausforderung.

    Da muss ich Einiges Ohne Maus Und Tastatur zu nutzen, anklicken und ausfüllen.
    Das ganze würde auch per maus Recorder und Browser Extension machbar sein, ist aber zu leicht
    Und Nebenbei wie gesagt Lerne ich etwas mehr Über Vb und so weiter.
    @seby1302 Wenn Du im Firefox oder Edge oder so klicken willst
    =>
    Zurück zu Feld Nummer 1.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Webbrowser Control.


    VB.NET-Quellcode

    1. HWndChild0 = CType(Win32.FindWindow(Nothing, Me.Text.ToString), IntPtr)
    2. HWndChild2 = CType(Win32.FindWindowEx(CInt(HWndChild0), Nothing, "WindowsForms10.SysTabControl32.app.0.141b42a_r8_ad1", Nothing), IntPtr)
    3. HWndChild3 = CType(Win32.FindWindowEx(CInt(HWndChild2), Nothing, Nothing, "ClaimBitcoin"), IntPtr)
    4. HWndChild4 = CType(Win32.FindWindowEx(CInt(HWndChild3), Nothing, "WindowsForms10.Window.8.app.0.141b42a_r8_ad1", Nothing), IntPtr)
    5. HWndChild5 = CType(Win32.FindWindowEx(CInt(HWndChild4), Nothing, "Shell Embedding", Nothing), IntPtr)
    6. HWndChild6 = CType(Win32.FindWindowEx(CInt(HWndChild5), Nothing, "Shell DocObject View", Nothing), IntPtr)
    7. HWndChild7 = CType(Win32.FindWindowEx(CInt(HWndChild6), Nothing, "Internet Explorer_Server", Nothing), IntPtr)
    8. End If
    9. If Not HWndChild7 = IntPtr.Zero Then
    10. Mach dies mach das :D
    11. Aber bitte Ohne maus und ohne Tastatur, auch darfst du mir den Focus nicht weg nehmen 8o


    Richtig Blöd
    SendKeys.Send(MyString)
    Funktioniert genau so... wie
    My.Computer.Keyboard.SendKeys(MyString, True)

    Sobald ich den Focus wo anders gesetzt habe, haut der mir den Text da rein.
    Wenn ich also grade bei Google am tippen bin naja xD

    Und diesen Blöden SendMessage kann ich einfach nicht um Strukturieren, entweder sende ich die Koordinaten Oder den Text

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „seby1302“ ()

    seby1302 schrieb:

    FindWindowEx()
    erwartet als ersten Parameter eine Variable vom Typ IntPtr.
    pinvoke.net/default.aspx/user32.findwindowex
    Willst Du im Firefox oder Edge oder so klicken :?:
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Wenn du ein WebbrowserControl nutzt kannst du doch ganz einfach ein Script-Element Injecten oder nicht? Mit ein wenig JS könnte dein Vorhaben umsetzbar sein.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Takafusa“ ()

    @RodFromGermany Du hast natürlich recht, wollte ich noch später korrigieren, da es erst einmal durch den Option Strict Korrigiert wurde und es Funktioniert kümmere ich mich später drum.
    Maus Klicks Kommen ja Richtig an, und auch kann ich ein Screenshot davon aufnehmen.
    Nix Vom Beiden, sondern dem integrierten WebborserControl.


    @Takafusa
    Du hast recht, wo du es sagst werde ich gleich mal probieren :D

    Edit...
    Injektion Ist nicht machbar die Seite ist gut gesichert, hätte mich auch gewundert wenn :whistling:


    Ok hat sich wohl erledigt, das ist eine Abgesicherte Iframe da sagt der mir Zugriff Verweigert xD

    VB.NET-Quellcode

    1. Dim theElementCollection3 As Windows.Forms.HtmlElementCollection
    2. 'This line now includes access to the iFrame document.
    3. theElementCollection3 = WebBrowser1.Document.Window.Frames(0).Document.GetElementsByTagName("id")
    4. For Each Element As HtmlElement In theElementCollection3
    5. Element.SetAttribute("Value", "huhuhu")
    6. Next

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „seby1302“ ()

    Nein muss natürlich nicht, solange ich damit alles machen kann. :)
    Die kenne ich aber nicht, kannte nur Gecko und WebView Die ich aber damals nicht nutzen konnte weil ich vieles nicht gefunden habe.
    Da gabs dann noch einer die Kostenpflichtig war, sonst mit Werbung und Einschränkungen, Hab mich dann auch gar nicht mehr weiter mit beschäftigt.

    Hast du ein Link? und ist das auch mit Vb.net kompatibel?

    Ich hab noch gelesen das Postmessage Sowas Könnte, wenn ich jetzt nicht falsch verstanden habe.

    EDIT............
    Jaaaaaaaaaaaa Postmessage Lebewohl :D
    Kommt was an und nur dort nice allerdings Kommt nur ein 0 an anstelle des Text.
    Warum?

    VB.NET-Quellcode

    1. Friend Declare Function PostMessage Lib "user32.dll" Alias "PostMessageA" (ByVal hWnd As IntPtr, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As String) As IntPtr

    VB.NET-Quellcode

    1. ​Win32.PostMessage(HWndChild7, &H100, &H30, "Hallooo")

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „seby1302“ ()