Hallo. Ich versuche mal mein Problem zu schildern. Also: Ich habe eine Installationsroutine gebaut, für die Installation von verschiedenen Druckermodellen bei uns in der Firma. Allerdings ist das so wie es derzeit ist, nicht das Optimum, es funktioniert aber. Um das Skript bischen übersichtlicher zu gestalten, kann man eine ganze Ecke an Code sparen. Dafür habe ich auch eine Idee, weiß sie aber nicht umzusetzen.
Hier mal Teile zum Code:
Spoiler anzeigen
$Combo1 = GUICtrlCreateCombo("Drucker auswählen", 30, 250, 140, 25)
GUICtrlSetData($Combo1, "Lexmark E232d|Lexmark E240d|Lexmark E350d|Lexmark C532N", "Drucker auswählen") ;Was ist im Dropdownmenü enthalten?
GUICtrlSetOnEvent($Combo1, "Combo1")
Func Combo1()
$read = GUICtrlRead($Combo1)
If $read = "Lexmark E232d" Then
Global $driver_x86 = "E232.exe"
Global $driver_path = @ScriptDir & "\tmp\"
Global $driver_inf = $driver_path & "LMAAL2DA.INF"
Global $driver_current = "Lexmark E232"
Global $driver_old = "Lexmark E232"
Global $print_vbs = $driver_path & "vbs.exe"
Global $print_port = "LPT1:"
Global $script_v = FileGetVersion(@ScriptFullPath)
Global $driver
Global $driver_processor
Global $driver_typ
If Not FileExists($driver_path) Then
DirCreate($driver_path)
EndIf
FileInstall("./vbs.exe", $print_vbs, 1)
$driver = $driver_path & $driver_x86
$driver_processor = "Intel"
FileInstall("./E232.exe", $driver, 1)
entpacken()
RunWait('rundll32 printui.dll,PrintUIEntry /if /b "Lexmark E232" /f "' & $driver_inf & '" /r "' & $print_port & '" /m "' & $driver_current & '"')
_del_Driver()
EndIf
If $read = "Lexmark E240d" Then
Global $driver_x86 = "E240.exe"
Global $driver_path = @ScriptDir & "\tmp\"
Global $driver_inf = $driver_path & "LMAAX2DA.INF"
Global $driver_current = "Lexmark E240"
Global $driver_old = "Lexmark E240"
Global $print_vbs = $driver_path & "vbs.exe"
Global $print_port = "LPT1"
Global $script_v = FileGetVersion(@ScriptFullPath)
Global $driver
Global $driver_processor
Global $driver_typ
If Not FileExists($driver_path) Then
DirCreate($driver_path)
EndIf
FileInstall("./vbs.exe", $print_vbs, 1)
$driver = $driver_path & $driver_x86
$driver_processor = "Intel"
FileInstall("./E240.exe", $driver, 1)
entpacken()
RunWait('rundll32 printui.dll,PrintUIEntry /if /b "Lexmark E240" /f "' & $driver_inf & '" /r "' & $print_port & '" /m "' & $driver_current & '"')
_del_Driver()
EndIf;Hier kommen noch ca. 10 andere Drucker wo sich Druckertyp und Druckeranschluss unterscheiden
Ich habe gezählt: 360 Zeilen sind es derzeit für die installation, weil es sich andauernd wiederholt... Meine Idee jetzt: Ich schreibe die Dinge die sich unterscheiden, also Druckername, .exe-Datei des Druckers, .inf-Datei und Druckeranschlussname jeweils in ein Array. Wähle ich jetzt z. B. den ersten Eintrag aus der DropDown Box aus, werden automatisch die Einträge die an Stelle 1 des jeweiligen Arrays stehen, an den besagten Stellen eingefügt. Irgendwie liegts mir "auf der Zunge", aber ich komme nicht drauf :pinch:
Edit: ich glaube mir ist da was eingefallen...