Befehle zum arbeiten in Verbindung mit einem externen Programm

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von Ceirados.

    Befehle zum arbeiten in Verbindung mit einem externen Programm

    Guten Morgen.
    Ich schildere mal zuerst mein gesamtes Vorhaben, damit Lösungsansätze/vorschläge tatsächlich anwenbar erarbeitet werden können.

    Es geht darum, dass ich ein Overlay für den Launcher eines Spieles(League of Legends) anfertigen möchte um eine zusätzlich Funktion zu ermöglichen. Quasi eine kleine Informationsdatenbank bequem zugänglich zu machen.
    Hierfür möchte ich einen zusätzlichen Button an einer freien Stelle neben den Vorhanden per TopMost= true einfach drüberlegen so, dass man beim anklicken wiederrum eine weitere Form öffnet, die sich ebenfalls per top most in einem bestimmten Bereich des Launchers öffnet und man die Datenbank vor sich hat.


    Jetzt zu meinen Problemen.
    Ich brauche den Befehl um zu erkennen, ob der Launcher gegenwärtig angezeigt wird, um dann den Button als Overlay anzuzeigen.
    Es wäre hilfreich, wenn ich auch bestimmen könnte ob der Launcher verschoben wird, damit ich den button an der Position der Launcher wieder ausrichten kann.

    Hoffe ihr könnte mir damit weiterhelfen.
    LG,
    Ceirados
    Ich gehe mal daavon aus, dass Du das Handle des Fensters hast. So kannst Du ermitteln, wo sich das Fenster befindet: API.GetWindowRect().
    Die korrekte .NET-Deklaration findest Du hier.
    Du kannst ja mal mit nem Notepad testen, was passiert, wenn das Fenster nicht angezeigt wird.
    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!
    Super Sache!
    Bisschen Einarbeitung gebraucht(bin halt schmallspurprogrammierer xD ) aber jetzt funktioniert die Positionierung bestens.

    Jetzt ergibt sich aber ein weiterführendes Problem: Ich fänd es Klasse, wenn ich abgleichen könnte ob die gegenwärtig angewählte Anwendung der entsprechende Launcher ist. Bin dabei auf den Befehl Prozess.GetCurrentProcess gestoßen.
    habe es bereits hiermit versucht:

    VB.NET-Quellcode

    1. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    2. If Process.GetCurrentProcess Is Process.GetProcessesByName("LoLClient") Then
    3. GetWindowRect(app(0).MainWindowHandle, pos)
    4. Me.Location = New System.Drawing.Point(pos.Right - 299, pos.Bottom - 37)
    5. Me.Visible = True
    6. Else
    7. Me.Visible = False
    8. End If
    9. End Sub


    Aber irgendwo muss ich da einen Fehler drin haben oder den Befehl noch nicht richtig verstanden. Es klappt nicht.
    Also, wie vergleiche ich am besten Die angewählte Anwendung(Process.GetCurrentProcess?) mit der per Process.GetProcessByName festgelegten Anwendung?

    BTW: Ich weiß, dass der Timer nicht die optimale Variante ist. Ist nur eine provisorische Übergangslösung, bis alles klappt^^



    Hoffe, dass mir jmd Nachhilfe bei den Process. Befehlen geben kann

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

    Die Abfrage

    Ceirados schrieb:

    VB.NET-Quellcode

    1. Process.GetProcessesByName("LoLClient")
    reicht völlig, da bekommst Du ein Array der entsprechenden Process-Instanzen, sollte nur 1 lang sein.
    Dies verwende.
    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!
    Danke für die Antwort.
    Kannst du mir noch einmal etwas detailierter ausführen, wie ich genau das Ganze in einer If-Verzweigung zu verwerwenden hätte um damit dann bei erfüllter Bedingung(sprich LoLClient ist im vordergrund/aktiv) mein Overlay zu Positionieren bzw bei Nichterfüllen es dann auszublenden?

    Oder gibts da allgemein noch eine geschicktere/leichtere Variante um zu verhindern, dass das Overlay auch auf dem Mediaplayer liegt, wenn der Launcher noch im hHintergrund läuft?

    Steh da gerade etwas auf dem Schlauch wie ich das anstellen muss.

    Ceirados schrieb:

    sprich LoLClient ist im vordergrund/aktiv
    Kannst Du mal SDeine Bedingung genauer definieren?
    So was hier: API.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!

    RodFromGermany schrieb:

    Zitat von »Ceirados«sprich LoLClient ist im vordergrund/aktivKannst Du mal SDeine Bedingung genauer definieren?So was hier: API.GetForegroundWindow()?


    Genau das wars, das mir fehlte. mit API.GetForegroundWindow kann ich das jetzt realisieren. Nur der genaue Befehl hat mir gefehlt ^^
    Allerherzlichesten Dank für die Hilfe und Geduld.
    Liebe Grüße