Wie wurde Skript aufgerufen?

Post a reply


In an effort to prevent automatic submissions, we require that you complete the following challenge.
Smilies
:D :) ;) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :!: :?: :idea: :| :mrgreen: :geek: :ugeek: :arrow: :angel: :clap: :crazy: :eh: :lolno: :problem: :shh: :shifty: :sick: :silent: :think: :thumbup: :thumbdown: :salute: :wave: :wtf: :yawn: :facepalm: :bravo: :dance: :beard: :morebeard: :xmas: :HeHe: :trollface: :cookie: :rainbow: :monkeysee: :monkeysay: :happybday: :headwall: :offtopic: :superhappy: :terms: :beer:
View more smilies

BBCode is ON
[img] is OFF
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Wie wurde Skript aufgerufen?

Re: Wie wurde Skript aufgerufen?

Post by Gerdi » 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
}

Re: Wie wurde Skript aufgerufen?

Post by just me » 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.

Re: Wie wurde Skript aufgerufen?

Post by Gerdi » 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?

Re: Wie wurde Skript aufgerufen?

Post by just me » 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.

Re: Wie wurde Skript aufgerufen?

Post by Gerdi » 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

Re: Wie wurde Skript aufgerufen?

Post by Gerdi » 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.

Wie wurde Skript aufgerufen?

Post by Gerdi » 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.

Top