Hallo allerseits, ich versuche für ein kleines Formatierungstool, eine Settings GUI zu schreiben, diese liesst zunächst aus einer vorhandenen INI Datei die Werte, das klappt auch. Bei setzen von Haacken bei trayitem Einträgen hatte ich dass schon gemacht, aber hier funktioniert es irgendwie nicht. Er läuft irgendwie in eine Art Dauerschleife. Hier mal der wesentliche Teil des Scrips: Vielleicht sieht ja einer was ich falsch gemacht habe. Wahrscheinlich nur wieder den falschen Befehl verwendet:(
C
#include <Array.au3>
#include <Constants.au3>
#include <ScreenCapture.au3>
#include <File.au3>
#include <GuiButton.au3>
#include <GUIConstantsEx.au3>
#include <WinAPIError.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GuiEdit.au3>
Opt("TrayMenuMode",1) ; Hide default tray menu items
Opt("TrayAutoPause", 0); This will allow you to click on the TrayIcon without pause the script
TraySetIcon("Shell32.dll",-27)
TraySetClick(8) ;only show the menu when right clicking
#Tray Tip
TraySetToolTip ("TrayTool")
global $idButton_200, $Formatartset, $editradio
global $checkPathF = _PathFull("usf.ini", @ScriptDir)
$autostartitem = TrayCreateItem("mit Windows starten")
$Settings= TrayCreateItem("Einstellungen")
$exititem = TrayCreateItem("Exit")
Firststartcheck()
startcheck()
;CHECKS------------------------------------------------------------------------------------------------------
;------------------------------------------------------------------------------------------------------------
Func Firststartcheck()
If FileExists ($checkPathF) = 1 Then ;Checkdatei auf Existenz prüfen
; Nichts tun
Else
_FileCreate($checkPathF);ini Datei erstellen
;Standard Settings setzen
$formatart = "1" ;1:Qickformat 0:Longformat
$formattyp = "FAT32"
$ILWprev = "1"
IniWrite("USF.ini","settings","Formatart", $formatart); StandardSetting LangFormat
IniWrite("USF.ini","settings","Formatyp", $formattyp); StandardSetting LangFormat
IniWrite("USF.ini","settings","Preview", $ILWprev); StandardSetting LangFormat
FileCreateShortcut(@ScriptFullPath, @StartupDir & "\USB-Formatter.lnk", @ScriptDir, "", "AutoIT Script Description")
;TrayItem Stati Grundeinstellung setzen
TrayItemSetState($autostartitem, $TRAY_CHECKED)
; TrayItemSetState($ILWprevItem, $TRAY_CHECKED)
SplashTextOn("Achtung", "Das Tool befindet sich im Traymenu ⇲ ! ", 1000, 100, 900, 950, 1, "Verdana")
sleep(5000)
SplashOff()
EndIf
EndFunc
;------------------------------------------------------------------------------------------------------------
;------------------------------------------------------------------------------------------------------------
Func startcheck();Auslesen Ini Datei
If FileExists(@StartupDir & "\USB-Formatter.lnk") Then
TrayItemSetState($autostartitem, $TRAY_CHECKED)
Else
TrayItemSetState($autostartitem, $TRAY_UNCHECKED)
EndIf
;Einlesen der Parameter aus IniDatei
Global $Formatart = IniRead("USF.ini","settings","Formatart", "")
Global $Formattyp = IniRead("USF.ini","settings","Formatyp", "")
Global $ILWprev = IniRead("USF.ini","settings","Preview", "")
;TrayItemStati neu setzen
EndFunc
;------------------------------------------------------------------------------------------------------------
;MAIN LOOP---------------------------------------------------------------------------------------------------
While 1
Switch TrayGetMsg() ;switch seems nicer in this case
Case 0
ContinueLoop
Case $TRAY_EVENT_PRIMARYDOWN ;reaction to left clicking
Case $settings
TrayItemSetState($settings,$TRAY_UNCHECKED) ;stop the automated (un)checking when clicked
Settings()
Case $autostartitem
If BitAND(TrayItemGetState($autostartitem), $TRAY_CHECKED) Then
FileCreateShortcut(@ScriptFullPath, @StartupDir & "\USB-Formatter.lnk", @ScriptDir, "", "AutoIT Script Description")
Else
FileDelete(@StartupDir & "\USB-Formatter.lnk")
EndIf
Case $exititem
ExitLoop
EndSwitch
WEnd
Exit
;------------------------------------------------------------------------------------------------------------
Func Settings()
;Create a GUI with various controls.
Local $hGUI = GUICreate("SETTINGS", 400, 200)
Local $idOK = GUICtrlCreateButton("OK", 310, 370, 85, 25)
Local $aWindow_Size = WinGetPos($hGUI)
Local $aWindowClientArea_Size = WinGetClientSize($hGUI)
AutoItSetOption ( "option" )
; Display the GUI.
GUISetState(@SW_SHOW, $hGUI)
GUIStartGroup()
$hRadio_1 = GUICtrlCreateRadio("FAT32", 20, 30, 200, 20)
$hRadio_2 = GUICtrlCreateRadio("ExtFAT", 20, 50, 200, 20)
$hRadio_3 = GUICtrlCreateRadio("NTFS", 20, 70, 200, 20)
GUIStartGroup()
$hRadio_4 = GUICtrlCreateRadio("Qick Format", 20, 130, 200, 20)
$hRadio_5 = GUICtrlCreateRadio("Long Format", 20, 150, 200, 20)
GUIStartGroup()
$hGroup_1 = GUICtrlCreateGroup("Group 1", 10, 10, 120, 90)
$hGroup_2 = GUICtrlCreateGroup("Group 2", 10, 110, 120, 70)
Local $idInputName = GUICtrlCreateInput("Ihr Name", 170, 20, 150, 20)
Local $idInputStickName = GUICtrlCreateInput("Stickname", 170, 40, 150, 20)
;Einlesen aus Ini
If $Formattyp = "FAT32" Then
GUICtrlSetState ($hRadio_1, $GUI_CHECKED)
EndIf
If $Formattyp = "ExtFat" Then
GUICtrlSetState ($hRadio_2, $GUI_CHECKED)
EndiF
If $Formattyp = "NTFS" Then
GUICtrlSetState ($hRadio_3, $GUI_CHECKED)
ENDIF
If $Formatart = "1" Then
GUICtrlSetState ($hRadio_4, $GUI_CHECKED)
ENDIF
If $Formatart = "0" Then
GUICtrlSetState ($hRadio_5, $GUI_CHECKED)
ENDIF
; Loop until the user exits.
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE, $idOK
ExitLoop
; Select
; Case BitAND(GUICtrlRead($hRadio_3), $GUI_CHECKED)
; MsgBox(4096, "$hRadio3", GUICtrlRead($hRadio_3, 1))
; Case BitAND(GUICtrlRead($hRadio_2), $GUI_CHECKED) = $GUI_CHECKED
; MsgBox(4096, "$hRadio2", GUICtrlRead($hRadio_2, 1))
Case BitAND(GUICtrlRead($hRadio_3), $GUI_CHECKED) = $GUI_CHECKED
MsgBox(4096, "$hRadio3", GUICtrlRead($hRadio_3, 1))
EndSwitch
WEnd
GUIDelete($hGUI)
EndFunc ;==>Example
Alles anzeigen
Liebe Dank schon mal und eine schöne Woche noch