#IfWinActive Hilfe

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

hansherb
Posts: 4
Joined: 07 Jun 2018, 05:48

#IfWinActive Hilfe

22 Oct 2018, 03:15

Hallo zusammen,

ich bin noch ein blutiger Anfänger was Autohotkey angeht und bräuchte mal eure Hilfe..
Ich möchte mit dem Script den Electron starten (funktioniert). Nach einer gewissen Zeit startet ein anderes
Programm was sich in den Vordergrund setzt. Jetzt soll das Script erkennen dass das andere Programmfenster aktiv ist
und soll ! an den Electron senden um ihn zu schließen (ist so hinterlegt). Eigentlich könnte man auch den Elektron Prozess direkt mit ahk killen..
Leider bekomme ich es nicht hin..:/

Code: Select all

#SingleInstance force
Run, %A_ScriptDir%\electron.exe
Sleep 3000

SetTitleMatchMode, 2

{

#IfWinActive, ahk_exe gewünschte.exe

Send {!}

}
Grüße
swagfag
Posts: 6222
Joined: 11 Jan 2017, 17:59

Re: #IfWinActive Hilfe

22 Oct 2018, 05:26

Code: Select all

#persistent
#singleinstance force
settitlematchmode 2

run electron.exe

settimer checkotherprocess

checkotherprocess:
  if winactive("ahk_exe otherprocess.exe") ; Text muss in Anführungszeichen eingeschlossen werden
  {
    process close, ahk_exe otherprocess.exe
    exitapp
  }
return
edit: see https://autohotkey.com/boards/viewtopic ... 85#p245485
Last edited by swagfag on 23 Oct 2018, 05:27, edited 2 times in total.
User avatar
nnnik
Posts: 4500
Joined: 30 Sep 2013, 01:01
Location: Germany

Re: #IfWinActive Hilfe

22 Oct 2018, 05:38

#IfWinActive beeinflusst nur Hotkeys und an sich sonst keinen anderen Code.
An sich gibt es für dieses Problem dann mehrere Möglichkeiten.
Eine davon ist es WinWaitActive zu verwenden oder die Möglichkeit zu verwenden die swagfag vorschlägt.
Recommends AHK Studio
hansherb
Posts: 4
Joined: 07 Jun 2018, 05:48

Re: #IfWinActive Hilfe

22 Oct 2018, 10:45

Hallo,

vielen Dank für die Antworten aber leider hat der Vorschlag von swagfag nicht funktioniert.
Also ich möchte das der electron gestartet wird (das Programm was sich später automatisch in den Vordergrund setzt läuft
bereits, liegt aber hinter dem electron). Nach einer gewissen Zeit, legt sich das im Hintergrund laufende Programm vor den electron.
Jetzt soll das Script erkennen, dass das andere Programm im Vordergrund ist und den electron schließen.

Code: Select all


#persistent
#singleinstance force
settitlematchmode 2

run electron.exe

settimer checkotherprocess

checkotherprocess:
  if winactive(ahk_exe otherprocess.exe)
  {
    process close, ahk_exe otherprocess.exe     // soll hiermit der electron geschlossen werden oder das andere Programm?
    exitapp
  }
return


Wie würde denn ein Lösungsansatz mit WinWaitActive aussehen?
Das habe ich probiert aber hat so nicht funktioniert....:/

Code: Select all


#persistent
#singleinstance force
settitlematchmode 2

run electron.exe

WinWaitActive, ahk_exe belibige.exe

  {
    Send {esc}   //der elecron wird mit esc geschlossen
    exitapp
  }
return

Grüße
just me
Posts: 9442
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: #IfWinActive Hilfe

23 Oct 2018, 01:50

Moin,

Dein letzter Versuch kann nicht funktionieren, weil Send immer an das aktive Fenster sendet. Weil Du darauf wartest, dass ein anderes Fenster aktiv wird, kommt bei 'Electron' nichts an.

swagfag's Vorschlag scheitert zumindest daran, dass die WinActive() Funktion verwendet wird. Die erwartet ihre Parameter aber als Expression/Ausdruck:

Code: Select all

  if winactive("ahk_exe otherprocess.exe") ; Text muss in Anführungszeichen eingeschlossen werden
hansherb
Posts: 4
Joined: 07 Jun 2018, 05:48

Re: #IfWinActive Hilfe

23 Oct 2018, 04:23

Hey,

es funktioniert jetzt so halb. Danke. :) .. Das Problem was ich noch habe ist, dass der Electron automatisch drei Tasks öffnet und durch "close" nicht geschlossen wird.
Gibt es nicht eine Möglichkeit, in der Schleife zu sagen send {esc} an ahk_exe electron.exe auch wenn er nicht im Vordergrund ist? Damit bekomme ich ihn immer geschlossen (wenn er im Vordergrund ist)..


just me wrote:
23 Oct 2018, 01:50
Moin,

Dein letzter Versuch kann nicht funktionieren, weil Send immer an das aktive Fenster sendet. Weil Du darauf wartest, dass ein anderes Fenster aktiv wird, kommt bei 'Electron' nichts an.

swagfag's Vorschlag scheitert zumindest daran, dass die WinActive() Funktion verwendet wird. Die erwartet ihre Parameter aber als Expression/Ausdruck:

Code: Select all

 if winactive("ahk_exe otherprocess.exe") ; Text muss in Anführungszeichen eingeschlossen werden

Return to “Ich brauche Hilfe”

Who is online

Users browsing this forum: No registered users and 8 guests