Tasten in minimiertes Fenster senden

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von Datzju.

    Tasten in minimiertes Fenster senden

    Ich arbeite momentan an einem Programm womit ich eine Taste an ein minimiertes, inaktives Fenster senden will. Über Google hab ich zwar einiges gefunden, aber verstanden bzw. einbauen konnte ich nichts davon..

    Bisherige Ansätze:
    - SendMessage (da sind mir die Parameter total undurchsichtig -> habe keine Ahnung was ich übergeben muss)
    - Fokus auf inaktives Fenster legen, dann vllt mit keybd_event..??

    SendMessage schien mir da die beste Möglichkeit zu sein, aber ich habe wie gesagt keine Ahnung was die Parameter bedeuten geschweige denn wie ich die belegen muss.. Habe einige Threads hier im Forum bereits dazu gelesen inkl. der Links die in den Threads gegeben wurden, aber wirklich schlauer bin ich dadurch nicht..

    Hoffe auf Hilfe
    Greets

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Trerkor“ () aus folgendem Grund: tags einfügen

    hm...
    also da wird ja anscheinend nur besprochen wie man das richtige Handle findet..
    da hab ich glaube ich keine probleme mit..
    weil soweit ich das sehe muss ich diese taste an kein bestimmtes objekt 'in' diesem programm senden.. sondern einfach an das programm, den prozess selber.
    und den handle habe ich bereits..
    bei mir haperts lediglich daran wie ich die taste "1" an das programm gesendet bekomme..
    sprich die letzten drei Attrbute (wobei ich glaub das das zweite WM_SETTEXT sein muss)

    VB.NET-Quellcode

    1. SendMessage(WindowHandle, WM_SETTEXT, ?, ?)
    an was für ein Programm willst du denn senden? Was willst du damit auslösen? Weil auch beim normalen Notepad Editor von Win musst du das komplette Handle angeben, es genügt nicht einfach nur das Handle des Fensters zu verwenden, da sobald das Fenster nicht aktiv ist, kann auch kein Objekt innerhalb aktiv sein..
    bei einem einzelnen zeichen funktioniert auch WM_CHAR(oder wie das in dem Thread dort deklariert wurde...) bei dem ersten Fragezeichen kommt(bei WM_CHAR) Asc("dasZeichen"c) hin, beim zweiten Fragezeichen sollte entweder String.Empty oder vbNullString hinkommen...für WM_SETTEXT benötigst du natürlich wie dir evtl. aufgefallen ist eine andere API Dekleration, wie bei WM_CHAR, diese sollte wiederum in dem Link, welchen ich zuvor gepostet habe zu finden sein...
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    ich will das zeichen an ein Spiel senden.. wird bestandteil eines Makros..
    bin zu faul immer die gleichen tasten zu drücken.. -.-"
    daher glaube ich auch das man da kein untergeordnetes objekt wie eine textbox oder sowas braucht..
    weil man ist ja quasi einfach im spiel drin und drückt i-was un dann geht zb. das Inventar auf.. (bei einem Rollenspiel)

    /edit: soooo.. habs hinbekommen..
    hier die entsprechenden Codezeilen:

    VB.NET-Quellcode

    1. Quellcode:
    2. Private Declare Ansi Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As Integer, ByVal wMsg As Integer, _
    3. ByVal wParam As Keys, ByVal lParam As Integer) As Integer
    4. Private Const WM_KEYDOWN = &H100
    5. Private Const WM_KEYUP = &H101
    6. SendMessage(WindowHandle.Item(nmbr), WM_KEYDOWN, Keys.D1, 0)
    7. SendMessage(WindowHandle.Item(nmbr), WM_KEYUP, Keys.D1, 0)

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