Wie wurde Skript aufgerufen?

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

User avatar
Gerdi
Posts: 185
Joined: 03 Aug 2015, 18:48
Location: Germany
Contact:

Wie wurde Skript aufgerufen?

11 Jan 2019, 06:54

Code: Select all

; 	RunGetIn.ahk ermittelt momentan nur teilweise  was bei Programm/SkriptStart uebergeben wird bzw bekannt ist.

Ue0=%0%
Loop, % Ue0
{
	Ue%A_Index% := %A_Index%
	Param .= "Par" A_Index A_Tab Ue%A_Index% "`n"
}
StringTrimRight,Param,Param,1
Ausgabe =
(
Name	%A_ScriptFullPath%
AnzPar	%Ue0%
%Param%
WDir	%A_WorkingDir%
Max	
Min
Hide
UseErrorLevel
)
MsgBox % Ausgabe
Hier ein erster Versuch eines Skriptes zur Ermittlung wie es selbst aufgerufen wird.
Mir ist bekannt, dass schon der Name unscharf ist, wenn z.B. die alten DOS-Namen verwendet wurden.
Auch bin ich relativ unbeleckt was die Run-Parameter Max,Min,Hide,UseErrorLevel auf der Empfaengerseite angeht.
Weiterhin bin ich interessiert an sonstigen nennenswerten Uebergaben, dabei denke ich nicht an A_... Variabeln.
Win 10 Home (x64) and Win 11 Pro N
https://github.com/Grrdi/ZackZackOrdner/archive/master.zip --> get folders on the quick
User avatar
Gerdi
Posts: 185
Joined: 03 Aug 2015, 18:48
Location: Germany
Contact:

Re: Wie wurde Skript aufgerufen?

12 Jan 2019, 03:16

Hier noch ein Beispiel wozu das Ganze:
Ich möchte bspw. bei
https://raw.githubusercontent.com/serzh ... AhkSpy.ahk
heraus bekommen wie die Lupe gestartet wird.

Ersetze dazu temporaer

Code: Select all

		;	Run "%A_AHKPath%" "%A_ScriptFullPath%" "Zoom" "%hGui%" "%ActiveNoPause%" "%isPaused%" "%Suspend%" "%Hotkey%", , , PID

			Run "%A_AHKPath%" "%A_ScriptDir%\RunGetIn.ahk" "Zoom" "%hGui%" "%ActiveNoPause%" "%isPaused%" "%Suspend%" "%Hotkey%", , , PID
die Zeile 2260,
starte die temporär modifizierte AhkSpy.Ahk
Klicke in das neue Fenster
Drücke die Tastenkombination +#Tab
und erhalte

Code: Select all

Name	C:\...\Hilfsprogramme\RunGetIn.ahk
AnzPar	6
Par1	Zoom
Par2	0xf1506
Par3	1
Par4	
Par5	0
Par6	0
WDir	C:\...\Hilfsprogramme
Max
Min
Hide
UseErrorLevel
als Ausgabe.
Diese wiederum kann ich verwenden um die Lupe ohne das HauptGui zu starten.
Win 10 Home (x64) and Win 11 Pro N
https://github.com/Grrdi/ZackZackOrdner/archive/master.zip --> get folders on the quick
User avatar
Gerdi
Posts: 185
Joined: 03 Aug 2015, 18:48
Location: Germany
Contact:

Re: Wie wurde Skript aufgerufen?

16 Jan 2019, 02:45

Bei meiner Teil-Frage:
wurde angefordert das Skript minimized, maximized oder hidden zu starten?
habe ich bereits bei der Internet-Recherche Herausforderungen:
Meine "besten" Suchbegriffe
AutoHotKey get requested state on script startup
brachten mich bisher nicht weiter.

Suchvorschläge willkommen
Win 10 Home (x64) and Win 11 Pro N
https://github.com/Grrdi/ZackZackOrdner/archive/master.zip --> get folders on the quick
just me
Posts: 9442
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Wie wurde Skript aufgerufen?

17 Jan 2019, 10:37

Moin,

für die Skriptparameter gibt es seit AHK 1.1.27 das interne Array A_Args. Der Rest wie Max, Min etc. wird meiner Meinung nach nicht an das Skript durchgereicht.
User avatar
Gerdi
Posts: 185
Joined: 03 Aug 2015, 18:48
Location: Germany
Contact:

Re: Wie wurde Skript aufgerufen?

17 Jan 2019, 15:38

Danke JustMe,

damit wird mein Skript etwas kürzer und übersichtlicher:

Code: Select all

; 	RunGetIn.ahk ermittelt momentan nur teilweise  was bei Programm/SkriptStart uebergeben wird bzw bekannt ist.

Loop, % A_Args.Length() 
	Param .= "Par" A_Index A_Tab A_Args[A_Index] "`n"
StringTrimRight,Param,Param,1
AnzPar:=A_Args.Length()
Ausgabe =
(
Name	%A_ScriptFullPath%
AnzPar	 %AnzPar%
%Param%
WDir	%A_WorkingDir%
Max	
Min
Hide
UseErrorLevel
)
MsgBox % Ausgabe
Clipboard:=Ausgabe
Der Rest wie Max, Min etc. wird meiner Meinung nach nicht an das Skript durchgereicht.
Wie machen es andere Programme, die wunschgemäß minimiert, maximiert oder hidden starten?
Oder anderst ausgedrückt, wo kann ich herausfinden wie Skript hätte starten sollen?
Oder kennt jemand ein Program mit der Wunschfunktionalität meines Skriptes?
Win 10 Home (x64) and Win 11 Pro N
https://github.com/Grrdi/ZackZackOrdner/archive/master.zip --> get folders on the quick
just me
Posts: 9442
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Wie wurde Skript aufgerufen?

18 Jan 2019, 01:29

Moin,

die Max|Min|Hide Information lässt sich vielleicht dem Feld wShowWindow der Struktur STARTUPINFO entehmen. Die kannst Du mit der Funktion GetStartupInfo() abgreifen.

UseErrorLevel wird höchstwahrscheinlich intern vom Run Kommando ausgewertet und nicht weitergereicht.
User avatar
Gerdi
Posts: 185
Joined: 03 Aug 2015, 18:48
Location: Germany
Contact:

Re: Wie wurde Skript aufgerufen?

18 Jan 2019, 02:36

Danke JustMe,
das hat mich wesentlich weitergebracht:

Code: Select all

; 	RunGetIn.ahk ermittelt momentan nur teilweise (UseErrorLevel fehlt noch) was bei Programm/SkriptStart uebergeben wird bzw bekannt ist.

Loop, % A_Args.Length() 
	Param .= "Par" A_Index A_Tab A_Args[A_Index] "`n"
StringTrimRight,Param,Param,1
AnzPar:=A_Args.Length()
StartupWindowState := GetStartupWindowState()
Ausgabe =
(
Name	%A_ScriptFullPath%
AnzPar	 %AnzPar%
%Param%
WDir	%A_WorkingDir%
WinState	%StartupWindowState%

UseErrorLevel	?
)
MsgBox % Ausgabe
Clipboard:=Ausgabe

GetStartupWindowState() {	; Danke Lexikos	https://www.autohotkey.com/boards/viewtopic.php?f=76&t=48090&p=215504&hilit=GetStartupInfo#p215504
    static states := {0: "Hide", 1: "Show", 3: "Max", 6: "Min", 7: "MinNA"}  ; https://msdn.com/ms633548
    VarSetCapacity(startupinfo, 9*A_PtrSize+32)
    DllCall("GetStartupInfo", "ptr", &startupinfo)  ; https://msdn.com/ms683230
    if !(NumGet(startupinfo, 4*A_PtrSize+28, "uint") & 1)
        return ""  ; Unspecified (STARTF_USESHOWWINDOW flag is not set).
    wShowWindow := NumGet(startupinfo, 4*A_PtrSize+32, "ushort")
    if state := states[wShowWindow]
        return state
    return wShowWindow
}
Win 10 Home (x64) and Win 11 Pro N
https://github.com/Grrdi/ZackZackOrdner/archive/master.zip --> get folders on the quick

Return to “Ich brauche Hilfe”

Who is online

Users browsing this forum: No registered users and 17 guests