Script startet mit Fehler aber warum? Topic is solved

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

PIcard_1983
Posts: 6
Joined: 13 Nov 2017, 04:18

Script startet mit Fehler aber warum?

13 Nov 2017, 04:34

Hallo zusammen,

ich neu hier aber nicht im AHK Bereich. Ich programmiere schon ein paar Jahre mit AHK jedoch stoße ich gerade auf ein Problem, wo ich in Moment nicht weiter komme.

Ich habe ein Script, welches ein paar Dinge ausführt und am Ende ein anderes Script starten soll. Mittels RUN Befehl. Das tut es auch.

Jetzt ist es so, das andere Script startet völlig normal wenn ich es alleine im Explorer starte.

Aber wenn es über mein 1. Script gestartet wird, dann erschein immer ei Load Icon Fehler vom Tray Menü.

Was ich nicht verstehe weil, wenn ich es ohne das zusätzliche Script mit dem RUN Befehl starte, dann kommt dieser Fehler nicht. Nur über das 2. Script mittels des RUN Befehls.

Hat jemand so etwas schon einmal gehabt?

Ich hoffe ich konnte es irgendwie verständlich Beschreiben.

LG
Picard
BoBo
Posts: 6564
Joined: 13 May 2014, 17:15

Re: Script startet mit Fehler aber warum?

13 Nov 2017, 04:49

Fehler lässt sich ohne bereitstellung der skripte, bzw aufgrund weiterer fehlender basisinformationen (OS, AHK version, etc) schwerer ermitteln.
Spräche etwas dagegen das 2. script einzubetten/es zu :arrow: #Include..n ?
just me
Posts: 9453
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Script startet mit Fehler aber warum?

13 Nov 2017, 05:13

Moin,

die Anweisung Tray, Icon, Dateiname, ... sucht die Icondatei im aktuellen Arbeitsverzeichnis, wenn kein Pfad angegeben wird. So kannst Du entweder den vollständigen Pfad angeben (Hinweis: A_ScriptDir) oder das Arbeitsverzeichnis im Skript mit SetWorkingDir oder auch im 2. Parameter des Run Kommandos setzen.
PIcard_1983
Posts: 6
Joined: 13 Nov 2017, 04:18

Re: Script startet mit Fehler aber warum?

13 Nov 2017, 05:36

Hallo,

vielen Dank für eure Antworten. Ich poste mal mein Script. Es ist ein Update Script welches nix anderes macht als eine Datei von A nach B zu kopieren und danach die Datei startet.

Code: Select all

#NoEnv

Suche_Pfad(exe) 
{
	for process in ComObjGet("winmgmts:").ExecQuery("Select * from Win32_Process where name ='" exe "'")
		pfad_komplett := process.ExecutablePath
		SplitPath, pfad_komplett,, Verz
		return verz
}

client_exe := "Client.exe"
pfad_update := "C:\Test-Datei"

;#### Pürfen ob Client überhaupt gestartet ist

Process, Exist, %client_exe%
If (ErrorLevel != 0)
{
 client_verzeichnis := Suche_Pfad( client_exe ) ;--> Pfad holen, wo Client gespeichert wurde.
 
 ;#### Nachfragen, ob das Update gestartet werden soll
 msgbox, 4, Update Client ,Es ist ein Update für den Client verfügbar.`nSoll das Update gestartet werden?`n %client_verzeichnis%
 IfMsgBox No
 {
 ExitApp
 Return
 }

 ;#### JA, dann wird der Updateprozess gestartet
 IfMsgBox YES
 {
  msgbox, 262208, ,Es wurde JA geklickt %client_exe%
  Process, Close, %client_exe% ;--> Client schließen
  Process, WaitClose, %client_exe%, 60 ;--> Warten bis Prozess geschlossen wurde
  If (ErrorLevel = 0) ;--> Prüfen ob Client wirklich geschlossen wurde!
  {
   msgbox, 262208, ,Client wurde geschlossen
   
   ;#### UPDATE STARTEN
   Dir = %pfad_update%
   CopyDir = %client_verzeichnis%
   SetWorkingDir, %Dir%
   
   msgbox, 4, Test, %CopyDir%

   Gui, Add, Text, xm w360 vProgressFile, Update wird gestartet...`nBitte warten
   Gui, Add, Progress, xm w300 h20 vProgressBar -Smooth
   Gui, Add, Button, yp-1 hp+2 xp+305 w60 gButtonCancel, Abbrechen
   Gui, Add, Text, xm w360 vProgressText
   Gui, Show,, Update wird gestartet...

   Loop, %Dir%\*
    FileCount++

   Loop, %Dir%\*
   {
    If CancelCopy
    {
     CancelCopy := false
     Break
    }

    GuiControl,, ProgressFile, Dateien kopieren  `n%A_LoopFileName%...

    FileCopy, %A_LoopFileName%, %CopyDir%\%A_LoopFileName%, 1

    Percent := Floor( A_Index / FileCount * 100 )
    GuiControl,, ProgressBar, %Percent%
    GuiControl,, ProgressText, %Percent%`% Komplett
   
    if (Percent = 100)
    {
	 GuiEscape:
     GuiClose:
     sleep, 5000
	 Gui, Destroy
     msgbox, 262208, ,Client Update Erfolgreich durchgeführt.`n%client_verzeichnis%\%client_exe%
	 sleep, 1000
	 
	 pfad_client = %client_verzeichnis%\%client_exe%
	 
	 Run, %pfad_client%
	 ExitApp
     Return
    }
   }
   Return
   
   ButtonCancel:
   ExitApp
   Return
  }
  else
  {
   Sleep, 500 
   msgbox, 16, ,FEHLER-FEHLER-FEHLER-FEHLER-FEHLER-FEHLER`n`nClient konnte nicht beendet werden.`nDas Update wurde nicht durchgeführt!`n`n!
   ExitApp
   Return
  }
 }
}
else
{
 msgbox, 262208, ,Client ist schon zu
 ExitApp
 Return 
}

Das Script funktioniert super. Es sind dazwischen ein paar MSG BOxes drin, einfach zur Überprüfung.

Am Ende starte ich das Script mit dem RUN Befehl. Dann folgt der Fehler "Can't load icon....." von dem anderen Script.

Starte ich das andere Script ganz normal, funktionert es und das icon wird geladen.

Klar könnte ich das Menü mit "A_ScriptDir" anpassen aber eigentlich holt er sich ja immer aus dem Programmverzeichnis das icon wenn kein anderen angegeben ist.

Meine Frage: GIbt es Probleme wenn ich ein Script aus einem anderen Script starte? Mittels RUN? Cache etc.?

Vielen Dank


LG
Picard
PIcard_1983
Posts: 6
Joined: 13 Nov 2017, 04:18

Re: Script startet mit Fehler aber warum?  Topic is solved

13 Nov 2017, 05:53

Hallo,

ich habe den Fehler gefunden: Ich muss vor dem RUN Befehl nochmal "SetWorkingDir %A_ScriptDir%" einfügen.

Deshalb klappte es nicht. Danke für den Hinweis. Das hat mich auf die richtige Spur gelockt.

Danke für die Gedankenstütze....

Return to “Ich brauche Hilfe”

Who is online

Users browsing this forum: No registered users and 62 guests