Hier mal die Erklärung:
Es ist wieder einmal ein exemplarisches Beispiel dafür, dass man nach Möglichkeit (und die besteht hier) immer "absolute" Pfade verwenden sollte. Wie ich schon so oft geschrieben habe wird bei relativen Pfadangaben nicht das tatsächliche Scriptverzeichnis verwendet, sondern das Arbeitsverzeichnis. Das erste Script befindet sich im Ordner
Code:
C:\Users\Moritz\Desktop\test123\teswt
Das Zweite Script befindet sich im Ordner
Code:
C:\Users\Moritz\Desktop\test123\teswt\testordner
Wo besteht jetzt aber das Problem? Ganz einfach!
Du startest das zweite Script mittels ShellExecute(), verwendest aber nur den 1. Parameter:
Code:
ShellExecute(@SCriptDir & "\testordner\script2.au3")
Was heißt das nun? Die relative Pfadangabe bezieht sich wie schon geschrieben auf das Arbeitsverzeichnis und nicht auf den tatsächlichen Scriptpfad. Da du den dritten Parameter von ShellExecute() nicht verwendest wird das Arbeitsverzeichnis vom ersten Script verwendet. Unter diesem Pfad befindet sich nun mal nicht die .ini, deshalb kann es nicht funktionieren.
Das Problem kannst du ganz einfach lösen, indem du "absolute" Pfade verwendest.
Hier mal eine angepasste Version deiner zwei Scripts:
Code:
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 297, 161, 192, 124)
$Input1 = GUICtrlCreateInput("", 80, 40, 129, 21)
$Button1 = GUICtrlCreateButton(".ini schreiben", 104, 64, 75, 25)
$Button2 = GUICtrlCreateButton("script2 starten", 104, 96, 75, 25)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
Global Const $iniFile = @ScriptDir & "\testordner\Passwort.ini"
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
IniWrite($iniFile, "Passwort", "PW", GUICtrlRead($Input1))
Case $Button2
ShellExecute(@SCriptDir & "\testordner\script2.au3")
EndSwitch
WEnd
Das zweite Script habe ich etwas mehr anpassen müssen:
Code:
#NoTrayIcon
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Test", 355, 223, 450, 360,$WS_POPUPWINDOW, $WS_EX_TOPMOST)
$input1 = GUICtrlCreateInput("", 56, 112, 233, 21,BitOR($ES_PASSWORD, $GUI_SS_DEFAULT_INPUT))
$unlock = GUICtrlCreateButton("Entsperren", 128, 160, 75, 33)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
Global Const $iniFile = @ScriptDir & "\Passwort.ini"
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
;~ Case $GUI_EVENT_CLOSE
;~ Exit
Case $unlock
_prove()
EndSwitch
WEnd
Func _prove()
$pwread = GUICtrlRead($input1)
$pw = IniRead($iniFile, "Passwort", "PW", "")
If $pwread == $pw Then Exit
EndFunc