Window Activ mit 2 Programmen?

  • Hallo Profis ich hoffe jemand kann mir helfen.
    Ich möchte das 2 Programme mit WinActivate sich aktiv halten.
    Gestartet Programme : Calc und Powerpoint

    Wenn jetzt Calc geschlossen wird das sich Powerpoint aktiv schaltet.

    Habe schon selbst mit schleifen rumprobiert aber nix hat funktioniert.
    Herzlichen Dank

    Einmal editiert, zuletzt von franzaut (24. Oktober 2013 um 20:14)

  • [autoit]

    Opt("WinTitleMatchMode", 2)
    While 1
    $rechnerCheck = WinActive("Rechner")
    if $rechnerCheck = 0 Then
    WinActivate("PowerPoint")
    ExitLoop
    EndIf
    WEnd

    [/autoit]

    ich hoffe, dass ich deine Frage richtig verstanden habe..., weil eigentlich mach das kein Sinn. Außer du willst abfragen ob das Fenster geschlossen wurde, dann musst du mit WinExists arbeiten.

  • Super Danke für die Hilfe.

    Es geht im Grunde darum.
    Man hat Powerpoint und den Rechner offen. (Und noch zig andere Progs.)
    Wenn man jetzt den Rechner schliest soll sich Powerpoint aktiv schalten damit man direkt im PowerPoint weitermachen kann.
    Wenn der Rechner wieder offen ist soll PowerPoint im Hintergrund wieder warten bis der Rechner wieder geschlossen ist.
    Und dann alles wieder von vorne.

    Habe jetzt mal deinen Code ausprobiert rynow aber das funktioniert auch nicht so richtig.
    Danke für deine Mühen

  • Dan wäre das die Lösung. Bitte beachte, dass PowerPoint oder der Rechner dadurch immer aktiv ist. Ist selbstverständlich ausbaufähig.

    [autoit]

    Opt("WinTitleMatchMode", 2)

    [/autoit][autoit][/autoit][autoit]

    While 1
    $statePowerPoint = WinGetState("PowerPoint")
    $stateRechner = WinGetState("Rechner")

    if BitAND($stateRechner, 16) then
    If BitAND($stateRechner, 16) Then
    WinActivate("PowerPoint")
    EndIf
    endif
    WEnd

    [/autoit]
  • Leider funktioniert das auch nicht so richtig.
    Powerpoint wird einfach nicht aktiv.

    Habs auch mit alternativen Progs versucht (Editor und Rechner)
    Auch hier gehts nicht.

    PS: Bin drauf gekommen das er anscheinend nicht merkt das der Rechner geschlossen wurde, bzw. neu gestartet.

  • Ich glaube wir scheitern hier an deiner Beschreibung weil ich ehrlich gesagt nicht genau weiß was wann gemacht werden soll.
    Beschreib doch bitte nochmal genau von anfang an wann was gestartet wird (Skript, Calc, PP) und wann was passieren soll
    Wird calc geschlossen oder nur minimiert. was soll wann in den Vordergrund geholt werden und was passiert wenn Calc oder PP mehrfach offen ist?
    Ich denke mit ner genauen Beschreibung ist das recht schnell gelöst ;)

  • Ok Danke nochmals für eure Gedult.
    Ich versuchs nochmal besser zu Beschreiben.

    Wenn Powerpoint gestartet ist soll dieses in den Vordergrund sein.
    Wenn Powerpoint geschlossen wird soll der Rechner in den Vordergrund. (egal welches andere Programm noch offen ist.)
    Wenn der Rechner aktiv ist soll Powerpoint in den Hintergrund.
    Wenn der Rechner wieder geschlossen ist soll Powerpoint wieder in den Vordergrund.
    Geil wäre es wenn Excel auch noch mitsteuerbar wäre.

    Powerpoint = 1erstes Programm
    Rechner = 2tes Programm (soll immer vor Powerpoint sein)
    Excel = 3tes Porgramm (soll immer vor den anderen 2en sein)

    Ich hoffe so ists besser zu verstehen.

    Danke

  • Probiers mal so:

    [autoit]


    Opt("WinTitleMatchMode", 2)

    [/autoit][autoit][/autoit][autoit]

    While 1
    While 2
    $statePowerPoint = WinGetState("Microsoft PowerPoint")
    $stateRechner = WinGetState("Rechner")
    If BitAND($statePowerPoint, 16) then
    WinActivate("Rechner")
    Exitloop
    EndIf
    WEnd
    While 3
    $statePowerPoint = WinGetState("Microsoft PowerPoint")
    $stateRechner = WinGetState("Rechner")
    If BitAND($stateRechner, 16) then
    WinActivate("Microsoft PowerPoint")
    Exitloop
    EndIf
    WEnd
    WEnd

    [/autoit]

    Musst vielleicht noch den Titel des PowerPoint Programms anpassen.

    Gruss

  • Also du meinst wenn z.B. PowerPoint offen ist und dann öffnest du Firefox oder sonst was,
    dann soll sich automatisch wieder PowerPoint in den Vordergrund schmeißen?

    Das würde für mich nicht besonders viel Sinn machen wäre aber kein Problem.

    Gruss

  • franzaut es sieht für mich aus, dass du ein fertiges Script benötigst. Hierzu bitte einfach ein Thread unter Programmieranfragen eröffnen. Unter Hilfe solltest du schon etwas selbst rumprobieren und die Fehler mit Code hier posten, damit dir hier geholfen wird.

    Aktuell kam leider nichts produktives von deiner Seite.

  • Achso Sorry
    Der Code steht ja da von den lieben Helfern. ;)

    Ich hab jetzt einfach den Code mit diesem ein paar mal erweitert

    [autoit]

    While 4
    $statePowerPoint = WinGetState("Microsoft PowerPoint")
    $stateRechner = WinGetState("Outlook")
    If BitAND($stateRechner, 16) then
    WinActivate("Microsoft PowerPoint")
    Exitloop
    EndIf

    [/autoit][autoit]

    While 5
    $statePowerPoint = WinGetState("Outlook")
    $stateRechner = WinGetState("Microsoft PowerPoint")
    If BitAND($stateRechner, 16) then
    WinActivate("Outlook")
    Exitloop
    EndIf

    [/autoit]

    usw.
    Ich denke ich muss nur mehr die Richtige reihenfolge herausfinden.
    Danke

  • Also als erstes macht es nicht viel sinn, (zumindest für mich da ich deinen Hintergrund für die Funktion des Skripts nicht kenne)
    dass du das mit mehreren Fenstern machen möchtest, weil dazu brauchst du eine exakten Ablauf welches Fenster sich als nächstest öffnen soll.
    Dann würde ich schon eher mit Zahlen Arbeiten (1 = öffnet PowerPoint 2...)

    2. Du brauchst pro While schlaufe nur 1ne Variable und musst diese ändern.

    [autoit]


    While 4
    $stateOutlook = WinGetState("Outlook")
    If BitAND($stateOutlook, 16) then
    WinActivate("Microsoft PowerPoint")
    Exitloop
    EndIf
    Wend

    [/autoit]

    Die Frage ist jetzt welche Reihenfolge du brauchst? Oder eben mit den Zahlen ?(

    Gruss

  • Die Reihenfolge kann Variieren.
    Mit den Zahlen bin ich überhaupt nicht durchgestiegen wie das gemeint ist.

    Nehmen wir an
    Notepad, Rechner, Outlook, Powerpoint sind in Benutzung.
    So soll wenn man zb. Rechner minimiert oder closed Powerpoint aktiv sein.
    Das selbe mit Notepad.
    Aber im grunde soll egal welches Programm minimiert oder beendet wird, wieder zu Powerpoint gesprungen werden.
    Wenn aber eines von den Programmen maximiert oder offen ist soll Powerpoint nicht aktiv sein.

    Der Hintergrund ist ganz klar das Powerpoint immer wenn nichts getan wird aktiv ist damit man es mit Fernbedienung steuern kann. Ohne es in der Taskleiste immer auswählen zu müssen.

  • Weil ich ein guten Tag haben :)

    [autoit]

    Opt("WinTitleMatchMode", 2)

    [/autoit][autoit][/autoit][autoit]

    while 1
    $state_Rechner = WinGetState("Rechner")
    $state_Editor = WinGetState("Editor")

    [/autoit][autoit][/autoit][autoit]

    if BitAND($state_Rechner, 16) and BitAND($state_Editor, 16) then
    WinActivate("PowerPoint")
    endif

    [/autoit][autoit][/autoit][autoit]

    wend

    [/autoit]