Hi,
da ist es mal wieder passiert: Der GeräteManager meldet Fehler
(mit der Netzwerkkonfiguration stimmt etwas nicht, Einzelheiten erspar ich mir und euch )
Jedenfalls mußte ich prüfen, ob die Dateien @WindowsDir &"\inf\NetNBF.Inf" bzw.
@SystemDir &"\drivers\NBF.Sys" vorhanden sind. Bei einer einmaligen Sache verwende ich dazu
kein Skript, dafür habe ich meine DateiManager..
Das war jedoch ein wiederholter Fall und so überlegte ich mir mit Koda eine GUI-Lösung.
Das Skript sollte erkennen:
-ob die Dateien vorhanden sind(Meldung in einer Read/Only Checkbox)
-ob im aktuellen Verzeichnis die nötigen Dateien vorhanden sind(Meldung in einer Read/Only Checkbox)
-fehlen die Dateien, soll ein 'Durchsuchen'-Button eingeblendet werden
-Der 'Kopieren'-Button soll ausgeblendet werden, wenn die Dateien vorhanden sind
-Eine Statusmeldung in passender Farbe soll ausgegeben werden
Ich liebe es, in den Array-Klammern die Indizes zu berechnen und habe davon reichlich Gebrauch
gemacht.
Da es bei mir um SystemDateien geht, hier im Forum aber eher um das 'Wie funktioniert das Skript?',
habe ich die Const-Zeile mit den SystemVerzeichnissen auskommentiert und durch 'ungefährliche"
Verzeichnisangaben ersetzt(wer mag, kann das natürlich ändern..).
Wer dies Skript als solches nicht braucht, kann auf alle Fälle Erkenntnisse für die eigene
GUI-Entwicklung daraus gewinnen(hoffe ich zumindest..)
Gruß
ytwinky
Hier steht das Skript:
Spoiler anzeigen
;<AutoItScript>
#NoTrayIcon
;+----------------------------------------------------------------------------+
;| Header: Bestimmen der Übergabeparameter |
;| ( Alles Strings(!!!), bis auf ArgC ) |
;| FontAnzeigeCheck: |Il1 sind Alt-0124, Großes i, Kleines L, Eins |
Const $Author="NetBEUI.au3 ©2006 by ytwinky, MD"; |
;| EMail: piii1ksystem-autoit3forum@yahoo.de |
;| (Tastenkombination: keine) |
;| AutoIt3-Version: 3.1.1.116(beta) |
;| Zweck : Schablone für den Anfang, nach Bedarf anpassen |
;| Tab auf 2 setzen wg. Lesbarkeit |
;+----------------------------------------------------------------------------+
#include <GUIConstants.au3>
; == GUI generated with Koda ==
Const $NBFSys="NBF.SYS", $NetNBFInf="NETNBF.INF"
;~ Const $SysVerz=@Systemdir &"\drivers\", $InfVerz=@WindowsDir &"\inf\"
Dim $ChkSts[2]=[$GUI_UNCHECKED, $GUI_CHECKED], $DarfKopieren[2]=[$GUI_HIDE, $GUI_SHOW], $Beide
Dim $Msg[2]=["Ooops, ist nicht okay", "Scheint okay zu sein"], $Farbe[2]=[0xD00000, 0x008000]
Dim $SrchSysDta, $SrchInfDta
$SysVerz=@ScriptDir &"\"
$InfVerz=@ScriptDir &"\"
$Form1 = GUICreate("Chk-NetBEUIFiles", 450, 183, 192, 125)
GUICtrlCreateLabel("Chk-NetBEUIFiles.au3", 96, 0, 245, 25)
GUICtrlSetFont(-1, 18, 400, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0x000080)
GUICtrlSetTip(-1, "©2006 by ytwinky, MD")
$SysDir = GUICtrlCreateLabel($SysVerz &$NBFSys, 8, 80, 244, 20)
GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
$InfDir = GUICtrlCreateLabel($InfVerz &$NetNBFInf, 8, 112, 224, 20)
GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
$SrchSys = GUICtrlCreateButton("Durchsuchen", 288, 77, 89, 25)
GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
$SrchInf = GUICtrlCreateButton("Durchsuchen", 288, 110, 89, 25)
GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
$Ergebnis=GUICtrlCreateLabel("", 155, 150, 200, 29)
GUICtrlSetFont(-1, 16, 400, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0xD00000)
$Kopie = GUICtrlCreateButton("Kopieren", 8, 152, 113, 25)
$SysChk = GUICtrlCreateCheckbox("", 255, 80, 17, 17, $WS_Disabled)
$InfChk = GUICtrlCreateCheckbox("", 255, 112, 17, 17, $WS_Disabled)
GUICtrlCreateLabel("vorhanden", 234, 64, 55, 17)
GUICtrlCreateLabel("gefunden", 392, 64, 49, 17)
$FndChkSys = GUICtrlCreateCheckbox("", 408, 80, 17, 17, $WS_Disabled)
$FndChkInf = GUICtrlCreateCheckbox("", 408, 112, 17, 17, $WS_Disabled)
$Ende = GUICtrlCreateButton("Ende", 368, 152, 75, 25)
GUICtrlCreateLabel($NetNBFInf &" und " &$NBFSys &" auf ", 8, 40, 215, 20)
GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
GUICtrlCreateLabel(@ComputerName, 216, 37, 140, 16, $SS_CENTER)
GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif")
GUICtrlCreateLabel("prüfen:", 368, 38, 44, 20)
GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
GUISetState(@SW_SHOW)
GUICtrlSetState($SysChk, $ChkSts[FileExists(GUICtrlRead($SysDir))])
GUICtrlSetState($InfChk, $ChkSts[FileExists(GUICtrlRead($InfDir))])
GUICtrlSetState($FndChkSys, $ChkSts[FileExists(@ScriptDir &"\" &$NBFSys)])
GUICtrlSetState($FndChkInf, $ChkSts[FileExists(@ScriptDir &"\" &$NetNBFInf)])
$Beide=(FileExists(GUICtrlRead($SysDir))) And (FileExists(GUICtrlRead($InfDir)))
GUICtrlSetState($Kopie, $DarfKopieren[Not $Beide])
GUICtrlSetState($SrchInf, $DarfKopieren[Not FileExists(GUICtrlRead($InfDir))])
GUICtrlSetState($SrchSys, $DarfKopieren[Not FileExists(GUICtrlRead($SysDir))])
GUICtrlSetData($Ergebnis, $Msg[$Beide])
GUICtrlSetColor($Ergebnis, $Farbe[$Beide])
While 1
Switch GuiGetMsg()
Case $GUI_EVENT_CLOSE, $Ende
ExitLoop
Case $SrchSys
$SrchSysDta=FileOpenDialog($NBFSys &" suchen..", "Desktop", "SystemDateien(*.Sys)", 1)
If StringUpper(StringRight($SrchSysDta, StringLen($NBFSys)))=StringUpper($NBFSys) Then
GUICtrlSetState($FndChkSys, $ChkSts[FileExists(@ScriptDir &"\" &$NBFSys)])
GUICtrlSetState($FndChkSys, $ChkSts[FileExists($SrchSysDta)])
GUICtrlSetState($SrchSys, $DarfKopieren[Not FileExists($SrchSysDta)])
EndIf
Case $SrchInf
$SrchInfDta=FileOpenDialog($NetNBFInf &" suchen..", "Desktop", "InstallationsDateien(*.Inf)", 1)
If StringUpper(StringRight($SrchInfDta, StringLen($NetNBFInf)))=StringUpper($NetNBFInf) Then
GUICtrlSetState($FndChkInf, $ChkSts[FileExists($SrchInfDta)])
GUICtrlSetState($SrchInf, $DarfKopieren[Not FileExists($SrchInfDta)])
EndIf
Case $Kopie
If FileExists($SrchSysDta) And Not FileExists(GUICtrlRead($SysDir)) Then FileCopy($SrchSysDta, GUICtrlRead($SysDir))
If FileExists($SrchInfDta) And Not FileExists(GUICtrlRead($InfDir)) Then FileCopy($SrchInfDta, GUICtrlRead($InfDir))
If (FileExists(GUICtrlRead($SysDir))) And (FileExists(GUICtrlRead($InfDir))) Then
$Beide=(FileExists(GUICtrlRead($SysDir))=1) And (FileExists(GUICtrlRead($InfDir))=1)
GUICtrlSetData($Ergebnis, $Msg[$Beide])
GUICtrlSetColor($Ergebnis, $Farbe[$Beide])
GUICtrlSetState($InfChk, $ChkSts[FileExists(GUICtrlRead($InfDir))])
GUICtrlSetState($SysChk, $ChkSts[FileExists(GUICtrlRead($SysDir))])
EndIf
GUICtrlSetState($Kopie, $DarfKopieren[Not $Beide])
Case Else
;
EndSwitch
Wend
Exit
;</AutoItScript>
Alles anzeigen