Parameter bei einer Funktion

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

User avatar
LuckyJoe
Posts: 340
Joined: 02 Oct 2013, 09:52

Parameter bei einer Funktion

02 May 2018, 01:44

Hallo zusammen,

ich entwickle derzeit ein Script, das mir im Tray alle laufenden Programme durchläuft und auf Nachfrage beendet. Dazu nutze ich die TrayIcon library (Download hier), die einige Funktionen in diesem Zusammenhang zur Verfügung stellt.
Meine Frage stellt sich aber nicht zu dieser Bibliothek, sondern zu dem grundsätzlichen Aufruf einer Funktion und den zu übergebenden Parametern. Meine Schleife ist folgendermaßen aufgebaut:

Code: Select all

#Include TrayIcon.ahk
DetectHiddenWindows, On
SetTitleMatchMode, 2

TrayPrg := TrayIcon_GetInfo()
Loop % TrayPrg.MaxIndex()
{
	; Programm 01
	If (TrayPrg[A_Index].Process = "Programm01.exe")
	{
		hWnd := TrayPrg[A_Index].hWnd
		idx := TrayPrg[A_Index].idx
		MsgBox, 1,, % TrayPrg[A_Index].Process . "`ngefunden - beenden?"
		IfMsgBox Ok
		{
			WinClose, ahk_id %hWnd%
			TrayIcon_Delete(idx, 0)
		}
	}

	; Programm 02
	If (TrayPrg[A_Index].Process = "Programm02.exe")
	; statt diesem Konstrukt ...:
	; {
		; hWnd := TrayPrg[A_Index].hWnd
		; idx := TrayPrg[A_Index].idx
		; MsgBox, 1,, % TrayPrg[A_Index].Process . "`ngefunden - beenden?"
		; IfMsgBox Ok
		; {
			; WinClose, ahk_id %hWnd%
			; TrayIcon_Delete(idx, 0)
		; }
	; }

	; ... soll eine Funktion aufgerufen werden,
	; aber mit welchem Parameter?
		MeClose(???)
}
Return

; Wie sieht der Parameter der Funktion aus?:
MeClose(???)
{
	hWnd := ???
	idx := ???
	MsgBox, 1,, % ??? . "`ngefunden - beenden?"
	IfMsgBox Ok
	{
		WinClose, ahk_id %hWnd%
		; ??? -> TrayIcon_Delete(idx, 0)
	}

}
Wie müssen die Parameter an die Funktion MeClose() aussehen und wie kann ich damit innerhalb der Funktion weiterarbeiten?

Danke schon mal im Voraus für euer Lesen.
Lucky Joe
Herzliche Grüße aus dem Rheinland
Lucky Joe
just me
Posts: 9442
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Parameter bei einer Funktion

02 May 2018, 02:02

Moin,

das in der Schleife abgearbeitete Element TrayPrg[A_Index] ist ein Objekt. Das kannst Du direkt an eine Funktion übergeben, die in Deinem Fall auch nur diesen einen Parameter braucht:

Code: Select all

   ; Programm 02
   If (TrayPrg[A_Index].Process = "Programm02.exe")
      MeClose(TrayPrg[A_Index])

...
...
; Wie sieht der Parameter der Funktion aus?:
MeClose(TrayItem)
{
   hWnd := TrayItem.hWnd
   idx := TrayItem.idx
   MsgBox, 1,, % TrayItem.Process . "`ngefunden - beenden?"
   IfMsgBox Ok
   {
      WinClose, ahk_id %hWnd%
      TrayIcon_Delete(idx, 0)
}
Das sollte funktionieren, ist aber ungetestet.
User avatar
LuckyJoe
Posts: 340
Joined: 02 Oct 2013, 09:52

Re: Parameter bei einer Funktion

02 May 2018, 02:25

... jau! Klappt - Dankeeee!
Herzliche Grüße aus dem Rheinland
Lucky Joe
User avatar
nnnik
Posts: 4500
Joined: 30 Sep 2013, 01:01
Location: Germany

Re: Parameter bei einer Funktion

02 May 2018, 03:23

Die TrayIcon library sollte jemand bei Zeiten mal in OOP umarbeiten
Recommends AHK Studio

Return to “Ich brauche Hilfe”

Who is online

Users browsing this forum: No registered users and 27 guests