Prozess auswählen

  • VB.NET

Es gibt 15 Antworten in diesem Thema. Der letzte Beitrag () ist von SystemUnknow.

    Prozess auswählen

    Hallo,
    ich bin neu in diesem Forum und komme direkt zu meinen Fragen:
    1. was muss ich tun, wenn ich auf den Button klicke damit ich da einen prozess auswählen kann, so wie wenn man "öffnen mit" macht.
    ( soll im Hintergrund laufen )
    2. " ", das bei diesem Prozess eine F-Taste permanent die man angeben kann gedrückt wird bis ich auf stop drücke.
    Ich weiß das es für euch eine Frage von Sekunden ist somit bitte nur die Fragen beantworten und nicht mit blöden Kommentaren kommen :D
    Global deklarieren:

    VB.NET-Quellcode

    1. Dim Proc As Process


    Code:

    VB.NET-Quellcode

    1. Sub SelectProcess(ByVal ProcessName As String, ByVal Optional i As Integer = 0)
    2. Proc = Process.GetProcessesByName(ProcessName)(i)
    3. End Sub


    Ich hab's nicht getestet, müsste aber gehen.

    Und zu 2. Verstehe ich nicht wirklich was du damit meinst.
    danke schon mal für die erste Antwort und mit der 2ten Frage meine ich es so wie es da steht^^
    Bei diesem Prozess den ich auswähle soll eine F-Taste permanent laufen ( so als ob ich sie gedrückt halten würde ) solang bis ich auf mein prog wechsel und stop drücke
    Vielleicht mit SendMessage die jeweilige F-Taste an den Prozess senden.
    Zu SendMessage gibts einige Seiten, z.B. pinvoke.net/default.aspx/user32.sendmessage oder vbarchiv.net/api/api_sendmessage.html

    Edit: Vielleicht auch mal das anschauen, da hatte ich auch Probleme bei SendMessage: [VB 2008] Skype-Nachricht senden

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

    Du kannst nicht eine Sub innerhalb einer sub machen ;) .

    VB.NET-Quellcode

    1. Public Class Form1
    2. Dim Proc As Process
    3. Sub SelectProcess(ByVal ProcessName As String, ByVal Optional i As Integer = 0)
    4. Proc = Process.GetProcessesByName(ProcessName)(i)
    5. End Sub
    6. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    7. SelectProcess("Prozessname")
    8. End Sub
    9. End Class

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „gugi-zone.net“ ()

    Nun, du hast in deinem Quellcode die globale deklarierung von "Dim Proc as Process" vergessen. :D
    Edit das mal. :D

    Und das ich eine bestimmte Taste an den Prozess sende.. Mhm..

    Mach das mal unter "Public Class Form1" :

    VB.NET-Quellcode

    1. <DllImport("user32.dll", SetLastError:=True)> _
    2. Public Function SendMessage(ByVal hWnd As IntPtr, ByVal Msg As Integer, ByVal wParam As IntPtr, ByVal lParam As IntPtr) As IntPtr
    3. End Function
    4. Public Const WM_CHAR = &H102


    Dann mache folgendes:

    VB.NET-Quellcode

    1. Sub SendToProcess(ByVal lKey As Keys, ByVal ProcessName As String)
    2. Dim ProcHandle As IntPtr = Process.GetProcessesByName(ProcessName)(0).MainWindowHandle()
    3. SendMessage(ProcHandle, WM_CHAR, lKey, vbNullString)
    4. End Sub


    Eine kleine Anleitung:
    SendToProcess Ist die Anweisung um etwas an den Prozess zu senden.
    Dort sind 2 Params deklariert.
    Der Param "lKey" ist die Taste, die gesendet werden soll. Beispiel: Keys.A (Für die Taste "A").
    Der Param "ProcessName" ist der Prozessname, an den gesendet werden soll. Beispiel: "firefox" (Steht für den Prozess Mozilla FireFox).

    Ein beispiel wäre:

    VB.NET-Quellcode

    1. SendToProcess(Keys.H, "notepad")
    2. SendToProcess(Keys.A, "notepad")
    3. SendToProcess(Keys.L, "notepad")
    4. SendToProcess(Keys.L, "notepad")
    5. SendToProcess(Keys.O, "notepad")


    Dafür müsste der Editor (der normale Windows Editor, bekannt als Notepad) gestartet sein, da "notepad" der ProzessName vom Editor ist. ;)
    Das Beispiel sendet In diesem Fall jeweils ein zeichen der folgenden Zeichenkette: "H A L L O"
    Siehst du ja dann ob's klappt.
    Müsste auf jeden fall funktionieren :D

    Viel Spaß! :)

    powachill schrieb:


    Mach das mal unter "Public Class Form1" :

    VB.NET-Quellcode

    1. <DllImport("user32.dll", SetLastError:=True)> _
    2. Public Function SendMessage(ByVal hWnd As IntPtr, ByVal Msg As Integer, ByVal wParam As IntPtr, ByVal lParam As IntPtr) As IntPtr
    3. End Function
    4. Public Const WM_CHAR = &H102

    Falls wieder eine Fehlermeldung kommt, so wie eigentlich auch schon die ganze Zeit (laut deinen Beiträgen), dann versuch das:

    VB.NET-Quellcode

    1. Imports System.Runtime.InteropServices
    2. <DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
    3. Public Shared Function SendMessage(ByVal hWnd As IntPtr, ByVal Msg As Integer, ByVal wParam As IntPtr, ByVal lParam As IntPtr) As IntPtr
    4. End Function
    5. Public Const WM_CHAR As Integer = &H102

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

    sry guys ich weiß net ob ich zu dumm bin :S aber wo is der Quellcode für den Button1? Schließlich will ich mit ihm den prozess aus der Liste auswählen der zurzeit auch im Taskmanager aktiv ist.
    Anschließend soll auf diesem prozess im Hintergrund eine F-Taste aktiv/permanent geklickt werden bis man auf stop Button klickt.
    Etwa so nur sollen in der Liste die Prozesse sein die man dann öffnet: