Zugehöriges Fenster zu Prozess "On Top" schalten

  • Morgään,

    hab wieder ein kleines "Problemchen":
    Ist es eigentlich möglich, anhand eines Prozessnamens das zugehörige Programmfenster in den Vordergrund zu holen, sprich zu focussieren?

    Problem: Ich verwende eine Software namens Quicksilver (DTP-Programm). Wenn man das Progrämmchen startet, ist der Prozess "qsilver.exe" aktiv. Innerhalb des Programms kann man nun aber mehrere Fenster aufmachen, es bleibt aber natürlich nur ein Prozess aktiv, d.h. wenn ich 5 Fenster des Programms aufhab, gibts trotzdem nur einen Prozess "qsilver.exe".

    Nun möchte ich gerne irgendeines der 5 Fenster in den Vordergrund holen, ganz egal welches weil ich anschließend ein Makro starten will, dass nur gestartet werden kann, wenn ein Fenster des Programms aktiv geschaltet ist.

    Da die Fensternamen jedes Mal variieren, kann ich nicht mit "WinSetOnTop" arbeiten, weil ich den Fensternamen ja nicht kenne, bzw, weil der jedes Mal anders ist (je nachdem welches Dokument man mit dem Programm geöffnet hat).

    Hat jemand nen Tipp für mich wie man an die Sache ran gehen könnte?

    Viele Grüße

    Daniel

  • Du brauchst:

    • ProcessExists(): Um die ProcessID von deinem Prozess zu ermitteln
    • WinList(): Um alle Fenster in ein Array zu packen
    • For Schleife: Um alle Fenster in dem Array einzeln durchzugehen
    • WinGetProcess(): Um die zugehörige ProcessID eines Fensters zu ermitteln
    • If Verzweigung: Um bei Gleichheit der ProcessIDs eine Aktion durchzuführen
    • WinActivate(): Um das Fenster in den Fokus zu holen, oder WinSetOnTop aber wenns ums fokusieren gehen soll wie du sagst sollte es WinActivate sein.
  • Hi,

    cool danke für die ausführliche Antwort!
    Werd ich gleichmal probieren!

    Viele Grüße

    Daniel

  • Ja ist denn heut scho Ostern ;)
    Danke, sehr hilfreiches Skript, habs mir grad in meiner "Sammlung" gespeichert.

    Grüßen

    Daniel