Ok ragazzi........ A volte la soluzione la hai sotto al naso..... ho trovato semplicemente con google:
Bastava mettere @ScriptDir sulla variabile e da quello che ho capito il file .ini viene salvato sulla stessa cartella dov'è il file .au3.
Credo funzioni alla stessa maniera una volta convertito il file .au3 in .exe e tale file .ini venga creato nella stessa cartella dov'è il file .exe.
Visto che ci sono......mi sembra giusto mettervi a conoscenza dell'intera gui cosi che potrete rendervi conto di cosa ho fatto e se magari sapete come poterla migliorare
CODICE
#NoTrayIcon
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <MsgBoxConstants.au3>
#include <WinAPIFiles.au3>
;Legge Variabili dal file .ini
Global Const $SettingsFile = @ScriptDir & "\ShutdownGUI_settings.ini"
;Global $VarFileExist = FileExists($FilePath)
;If $VarFileExist then
;ReadIniFile()
;EndIf
ReadIniFile()
#Region ### START Koda GUI section ### Form=D:\AutoIT\Miei Progetti\Shutdown GUI\ShutdownGUI.kxf
$Main = GUICreate("Shutdown GUI 3.0", 508, 205, 192, 124)
$Label1 = GUICtrlCreateLabel("Ore", 72, 24, 21, 17)
$Label2 = GUICtrlCreateLabel("Minuti", 208, 24, 32, 17)
$Label3 = GUICtrlCreateLabel("Secondi", 344, 24, 43, 17)
$Checkbox1 = GUICtrlCreateCheckbox("Riavvia PC", 64, 112, 97, 17)
$Checkbox2 = GUICtrlCreateCheckbox("Spegni PC", 168, 112, 97, 17)
If $ValCheckbox = 0 then
GUICtrlSetState($Checkbox1, $GUI_CHECKED)
GUICtrlSetState($Checkbox2, $GUI_UNCHECKED)
Else
GUICtrlSetState($Checkbox1, $GUI_UNCHECKED)
GUICtrlSetState($Checkbox2, $GUI_CHECKED)
EndIf
$Input1 = GUICtrlCreateInput("", 8, 168, 361, 21,$ES_READONLY)
$Label4 = GUICtrlCreateLabel("Preview Comando:", 8, 144, 93, 17)
$Esegui = GUICtrlCreateButton("Esegui", 376, 128, 113, 65)
$SetOre = GUICtrlCreateInput($ValOre, 56, 48, 73, 54, $ES_READONLY)
GUICtrlSetFont(-1, 30, 400, 0, "MS Sans Serif")
GUICtrlSetBkColor(-1, 0xE3E3E3)
GUICtrlCreateUpdown(-1)
GUICtrlSetLimit(-1, 59, 0)
$SetMinuti = GUICtrlCreateInput($ValMinuti, 208, 48, 73, 54, $ES_READONLY)
GUICtrlSetFont(-1, 30, 400, 0, "MS Sans Serif")
GUICtrlSetBkColor(-1, 0xE3E3E3)
GUICtrlCreateUpdown(-1)
GUICtrlSetLimit(-1, 59, 0)
$SetSecondi = GUICtrlCreateInput($ValSecondi, 344, 48, 73, 54, $ES_READONLY)
GUICtrlSetFont(-1, 30, 400, 0, "MS Sans Serif")
GUICtrlSetBkColor(-1, 0xE3E3E3)
GUICtrlCreateUpdown(-1)
GUICtrlSetLimit(-1, 59, 0)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
;Run ("shutdown /a")
Global $MainCommand = "shutdown "
Global $Opt1 = "/r "
Converti()
Global $Opt2 = "/t " & $TotaleSecondi
GUICtrlSetData ( $Input1, $MainCommand & $Opt1 & $Opt2 )
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Checkbox1
GUICtrlSetState ( $Checkbox2 , $GUI_UNCHECKED )
GUICtrlSetState ( $Checkbox1 , $GUI_CHECKED )
Global $ValCheckbox = 0
Global $Opt1 = "/r "
GUICtrlSetData ( $Input1, $MainCommand & $Opt1 & $Opt2 )
Case $Checkbox2
GUICtrlSetState ( $Checkbox1 , $GUI_UNCHECKED )
GUICtrlSetState ( $Checkbox2 , $GUI_CHECKED )
Global $ValCheckbox = 1
Global $Opt1 = "/s "
GUICtrlSetData ( $Input1, $MainCommand & $Opt1 & $Opt2 )
Case $Esegui
WriteIniFile()
$Comando = $MainCommand & $Opt1 & $Opt2
;Run ($Comando)
Exit
Case $SetOre
Converti()
Global $Opt2 = "/t " & $TotaleSecondi
GUICtrlSetData ( $Input1, $MainCommand & $Opt1 & $Opt2 )
Case $SetMinuti
Converti()
Global $Opt2 = "/t " & $TotaleSecondi
GUICtrlSetData ( $Input1, $MainCommand & $Opt1 & $Opt2 )
Case $SetSecondi
Converti()
Global $Opt2 = "/t " & $TotaleSecondi
GUICtrlSetData ( $Input1, $MainCommand & $Opt1 & $Opt2 )
EndSwitch
WEnd
Func Converti()
Global $OreInSecondi = GUICtrlRead ($SetOre) * 3600
Global $MinutiInSecondi = GUICtrlRead ($SetMinuti) * 60
Global $Secondi = GUICtrlRead ($SetSecondi)
Global $TotaleSecondi = $OreInSecondi + $MinutiInSecondi + $Secondi
EndFunc
Func ReadIniFile()
Global $ValOre = IniRead($SettingsFile, "LastUsage", "LastOre", "0")
Global $ValMinuti = IniRead($SettingsFile, "LastUsage", "LastMinuti", "10")
Global $ValSecondi = IniRead($SettingsFile, "LastUsage", "LastSecondi", "0")
Global $ValCheckbox = IniRead($SettingsFile, "LastUsage", "LastCheckbox", "0")
EndFunc
Func WriteIniFile()
IniWrite($SettingsFile, "LastUsage", "LastOre", GUICtrlRead ($SetOre))
IniWrite($SettingsFile, "LastUsage", "LastMinuti", GUICtrlRead ($SetMinuti))
IniWrite($SettingsFile, "LastUsage", "LastSecondi", GUICtrlRead ($SetSecondi))
IniWrite($SettingsFile, "LastUsage", "LastCheckbox", $ValCheckbox)
EndFunc
Ovviamente tutte le varie righe commentate sono quelle che di volta in volta andavo per tentativi........
Ora se c'è una cosa che c'è da decommentare sono i comandi RUN che vanno ad eseguire i veri e propri comandi dal prompt dello "shutdown".
Ed ecco una cosa che vorrei cercare di fixare ? Come vedete all'inizio del programma (o della gui) io faccio avviare un "shutdown /a". Questo in pratica fa si che tutte le varie pianificazioni attive al momento vengano appunto annullate in modo che poi puoi ricrearla e magari correggere il timing.
Una cosa che sarebbe da fare è quella di interrogare eventuali pianificazioni..... e appunto invece di cancellarli a priori inserire un qualcosa tipo una richiesta che ti dica "C'è un RIAVVIO (o un REBOOT) già programmato" e che magari quindi ti dia delle info in merito e ti chieda se vuoi modificarlo o meno e se si lancia lo "shutdown /a" e se invece dai no semplicemente termina il programma senza toccare niente...........
Sotto questo aspetto devo capire dov'è che lo shutdown piazza i suoi riavvi o spegnimenti programmati.... se avete consigli sono ben accettati.