- Offizieller Beitrag
Hi,
okay, dann versuche ich mal zu helfen.
Welches ist denn jetzt der aktuelle Code?
So long,
Mega
Hi,
okay, dann versuche ich mal zu helfen.
Welches ist denn jetzt der aktuelle Code?
So long,
Mega
Hi Xeno!
Vielen Dank!
Das aktuelle Script ist wohl das:
#include <GUIConstants.au3>
#include <File.au3>
#Include <Array.au3>
Opt("GUIOnEventMode", 1)
$Gui1 = GUICreate("Stockwerk", "701", "661")
GUISetOnEvent($GUI_EVENT_CLOSE, "Exit2")
GUICtrlCreateButton("Obergeschoss 1", "50", "50")
GUICtrlSetOnEvent(-1, "Og1")
GUICtrlCreateButton("Obergeschoss 2", "50", "150")
GUICtrlSetOnEvent(-1, "Og2")
GUICtrlCreateButton("Obergeschoss 3", "50", "250")
GUICtrlSetOnEvent(-1, "Og3")
GUICtrlCreateButton("Obergeschoss 4", "50", "350")
GUICtrlSetOnEvent(-1, "Og4")
GUICtrlCreateButton("Obergeschoss 5", "50", "450")
GUICtrlSetOnEvent(-1, "Og5")
GUICtrlCreateButton("Obergeschoss 6", "50", "550")
GUICtrlSetOnEvent(-1, "Og6")
$Exit = GUICtrlCreateMenu("Beenden")
GUICtrlCreateMenuitem("Exit", $Exit)
GUICtrlSetOnEvent(-1, "ExitMenu")
GUISetState(@SW_SHOW, $Gui1)
$msgn = "ERROR!"
$n = "ERROR!"
$ort = "ERROR!"
Dim $Array
$Gui2 = GUICreate("Ort", "701", "661")
GUISetOnEvent($GUI_EVENT_CLOSE, "Exit2")
$Zens = GUICtrlCreateButton("Zens", "20", "200")
GUICtrlSetOnEvent(-1, "Zens")
$Zens = GUICtrlCreateButton("Zens", "600", "300")
GUICtrlSetOnEvent(-1, "Zens")
$Zens = GUICtrlCreateButton("Zens", "20", "500")
GUICtrlSetOnEvent(-1, "Zens")
$Exit = GUICtrlCreateMenu("Beenden")
GUICtrlCreateMenuitem("Exit", $Exit)
GUICtrlSetOnEvent(-1, "ExitMenu")
GUISetState(@SW_HIDE, $Gui2)
While 1
Sleep(100)
WEnd
;####################################- OBERGESCHOSSE -###########################################
Func Og1()
$msgn = "ers"
$n = "1"
GUISetState(@SW_HIDE, $Gui1)
GUISetState(@SW_SHOW, $Gui2)
GUICtrlCreatePic(@ScriptDir & "\System\Zens.bmp", "5", "5", "691", "631")
EndFunc ;==>Og1
Func Og2()
$msgn = "zwei"
$n = "2"
GUISetState(@SW_HIDE, $Gui1)
GUISetState(@SW_SHOW, $Gui2)
GUICtrlCreatePic(@ScriptDir & "\System\Zens.bmp", "5", "5", "691", "631")
EndFunc ;==>Og2
Func Og3()
$msgn = "drit"
$n = "3"
GUISetState(@SW_HIDE, $Gui1)
GUISetState(@SW_SHOW, $Gui2)
GUICtrlCreatePic(@ScriptDir & "\System\Zens.bmp", "5", "5", "691", "631")
EndFunc ;==>Og3
Func Og4()
$msgn = "vier"
$n = "4"
GUISetState(@SW_HIDE, $Gui1)
GUISetState(@SW_SHOW, $Gui2)
GUICtrlCreatePic(@ScriptDir & "\System\Zens.bmp", "5", "5", "691", "631")
EndFunc ;==>Og4
Func Og5()
$msgn = "fünf"
$n = "5"
GUISetState(@SW_HIDE, $Gui1)
GUISetState(@SW_SHOW, $Gui2)
GUICtrlCreatePic(@ScriptDir & "\System\Zens.bmp", "5", "5", "691", "631")
EndFunc ;==>Og5
Func Og6()
$msgn = "sechs"
$n = "6"
GUISetState(@SW_HIDE, $Gui1)
GUISetState(@SW_SHOW, $Gui2)
GUICtrlCreatePic(@ScriptDir & "\System\Zens.bmp", "5", "5", "691", "631")
EndFunc ;==>Og6
;###################################- Ende OBERGESCHOSSE -#######################################
Func Zens()
$ort = "Zens"
MsgBox(0, "Zens Drucker", "Die Drucker des " & $msgn & "ten Stockes am Zens wurden eingerichtet.")
Exit
EndFunc ;==>Zens
Func Zens()
$ort = "Zens"
MsgBox(0, "Zens Drucker", "Die Drucker des " & $msgn & "ten Stockes am Zens wurden eingerichtet.")
Exit
EndFunc ;==>Zens
Func Zens()
$ort = "Zens"
$Array = _FileListToArray ("\\Zens\Zens\Group\Public\Printers\" & $n & "Obergeschoss\" & $ort,(""),1)
For $i = 1 To $Array[0]
ShellExecute ("\\Zens\Zens\Group\Public\Printers\" & $n & "Obergeschoss\" & $ort & "\" & $Array[$i])
Next
MsgBox(0, "Zens Drucker", "Die Drucker des " & $msgn & "ten Stockes an der Zens wurden eingerichtet.")
Exit
EndFunc ;==>Zens
Func ExitMenu()
Exit
EndFunc ;==>ExitMenu
Func Exit2()
Exit
EndFunc ;==>Exit2
teh_hahn's script ist auch gut, leider versteh ichs nicht.
besser währe deshalb wenn du mein selbst geschriebenes verbesserst.
mfg
Manu
PS: Zens ist nur Zensiert (es ist nicht der selbe begriff beim richtigen script.)
Hi,
tausch mal diese Fkt aus:
[autoit]
Func Zens()
$ort = "Zens"
$Array = _FileListToArray("\\Zens\Zens\Group\Public\Printers\" & $n & "Obergeschoss\" & $ort, (""), 1)
If Not IsArray($Array) Then MsgBox(16, 'error', 'kein Array')
For $i = 1 To $Array[0]
ConsoleWrite("\\Zens\Zens\Group\Public\Printers\" & $n & "Obergeschoss\" & $ort & "\" & $Array[$i] & @CRLF)
ShellExecute("\\Zens\Zens\Group\Public\Printers\" & $n & "Obergeschoss\" & $ort & "\" & $Array[$i])
Next
MsgBox(0, "Zens Drucker", "Die Drucker des " & $msgn & "ten Stockes an der Zens wurden eingerichtet.")
Exit
EndFunc ;==>Zens
So long,
Mega
Es gibt mir wieder folgende Meldungen aus:
Hi,
also meine Version funktioniert 100%. Bitte überprüfe noch einmal folgendes:
1. Ist ein Pfad z.B. wirklich: \\Zens\Zens\Group\Public\Printers\1Obergeschoss\Zens? Versuch den Pfad mal (ohne Verbindungen zum Host Zens zu haben) genau so bei Start-Ausführen einzutippen. Kommt dann eine Verbindung zustande?
2. Brauchst Du wirklich keine Anmeldung an den Host?
3. Ist das FilePattern korrekt.
Wie gesagt, bei mir funktioniert es einwandfrei! (Auch mit ShellExecute!)
Hi teh_hahn,
Deine Version funktioniert nicht (Meldung: parameter inkorrekt oder so).
1. Der Pfad ist zu 100% korrekt, ich hab den min. 10x überprüft (ausserdem ist der Pfad des scripts rüberkopiert)
2. Ja ich brauch wirklich keine Anmeldung. Ich kann einfach den Pfad eingeben (wie auf dem Scrnshot zu erkennen ist)
3. Was ist FilePattern?
Geht es bei dir mit .lnk Dateien?
mfg
Manu
PS: Ich bin wirklich nicht verrückt!
Hi,
ersetz mal
[autoit]
$Array = _FileListToArray("\\Zens\Zens\Group\Public\Printers\" & $n & "Obergeschoss\" & $ort, (""), 1)
durch
$Array = _FileListToArray("\\Zens\Zens\Group\Public\Printers\" & $n & "Obergeschoss\" & $ort, '*.*' , 1)
So long,
Mega
Hi,
mit FilePattern halt die Endung: ("*.lnk")
Nim mal folgendes Skript und passe in der Zeile 79 den Pfad einmal fix an. Es funktioniert bei mir zu 100% mit Verknüpfungen:
#NoTrayIcon
#include <Array.au3>
#include <File.au3>
#include <GUIConstants.au3>
main()
Func OnAutoItStart()
Opt("GUICoordMode", 2)
Opt("MustDeclareVars", 1)
EndFunc ;==>OnAutoItStart
Func main()
Local $ah_ogbts[2], $as_files = 0
Local $h_zensbt = 0, $h_filemenu = 0, $h_exitmitem = 0, $h_msg = 0
Local $s_path = "", $s_ogtext = ""
Local $j = 1, $i_tmpog = 0, $i_og = 0
GUICreate("Stockwerk", 320, 240)
GUISetCoord(10, -20, 100, 20)
For $i = 1 To 6
ReDim $ah_ogbts[$j + 1]
$ah_ogbts[$j] = GUICtrlCreateButton("Obergeschoss " & $i, -1, 10)
$j += 1
Next
$ah_ogbts[0] = $j - 1
$h_zensbt = GUICtrlCreateButton("&Zens", -1, 10)
GUICtrlSetState(-1, $GUI_DISABLE)
$h_filemenu = GUICtrlCreateMenu("&File")
$h_exitmitem = GUICtrlCreateMenuItem("E&xit", $h_filemenu)
GUISetState()
While 1
$h_msg = GUIGetMsg()
Switch $h_msg
Case $GUI_EVENT_CLOSE, $h_exitmitem
Exit
Case $h_zensbt
GUISetState(@SW_DISABLE)
SplashTextOn("NOTICE", "Please wait...", 120, 60)
$as_files = _FileListToArray($s_path, ("*.lnk"), 1)
If @error = 1 Then
MsgBox(16 + 262144, "ERROR", $s_path & " not found or invalid!")
Exit (1)
ElseIf @error = 4 Then
MsgBox(16 + 262144, "ERROR", "No file(s) found in " & $s_path & "!")
Exit (2)
EndIf
SplashOff()
GUISetState(@SW_ENABLE)
For $i = 1 To $as_files[0]
ShellExecute($s_path & "\" & $as_files[$i])
Next
Switch $i_og
Case 1
$s_ogtext = "ers"
Case 2
$s_ogtext = "zwei"
Case 3
$s_ogtext = "drit"
Case 4
$s_ogtext = "vier"
Case 5
$s_ogtext = "fünf"
Case 6
$s_ogtext = "sechs"
EndSwitch
MsgBox(64, "Zens Drucker", "Die Drucker des " & $s_ogtext & "ten Stockes an der Zens wurden eingerichtet.")
Exit
EndSwitch
$i_tmpog = _ArraySearch($ah_ogbts, $h_msg)
If $i_tmpog <> -1 Then
$i_og = $i_tmpog
$s_path = "\\Delphi\NETLOGON"
For $i = 1 To $ah_ogbts[0]
GUICtrlSetState($ah_ogbts[$i], $GUI_DISABLE)
Next
GUICtrlSetState($h_zensbt, $GUI_ENABLE)
GUICtrlCreatePic(@ScriptDir & "\system\Zens.bmp", 120, 10, 200, 240) ;~ To-Do: An aktuelle GUI-Begebenheiten anpassen!
EndIf
WEnd
EndFunc ;==>main
Func OnAutoItExit()
GUIDelete()
EndFunc ;==>OnAutoItExit
Deine ErrorMeldung: (Meldung: parameter inkorrekt oder so) kommt in meinem Skript überhaupt nicht vor!
Teste bitte einmal anhand meines Skriptes und baue das dann um. Bei mir funzt es wirklich.
PS: Halte dich nicht für verrückt!
Hi Leute...
@Xeno,
Dank deiner Idee, kommt das programm wenigstens bis zur Fehlermeldung die auch das Script von teh_hahn hat.
teh_hahn
Immernoch die selbe Fehlermeldung...
Der einzige unterschied zu meinem script ist, dass es über das Laufwerk S: zugreift (was auch korrekt sein müsste).
Mfg
Manu
Ja, dann läuft doch alles. Dann liegt es nur am ShellExecute. Versuch mal:
[autoit]ShellExecute($s_path & "\" & $as_files[$i], "", "", "open")
[/autoit]oder mit Run!
EDIT: Jetzt sag nicht, da sind Leerzeichen in deinem Pfad!
Geht nicht.
Selbe Meldung. (habs auch mit run versucht)
Da sind keine Leerzeichen im Pfad.
Das muss ja fast ein Bug sein...
Nein, Problem wird hier die Dateiendung (lnk) sein. Was gibt er denn bei Run aus? Versuch die Verknüpfung mal mit der rundll32.exe (PrinterDialog usw.) zu öffnen, wenn das möglich ist.
Ich habe die Vermutung, dass er beim _FileListToArray die Endung .lnk findet und beim ShellExecute nach der Datei ohne die Endung .lnk sucht. Komischerweise zeigt es mir die Endung nicht an wenn ich in dem Ordner bin, obwohl ich das "Hide known extensions" oder was auch immer das häklein entfernt habe.
Verstehst du?^^
wie kann ich das .lnk beim shellexecute entfernen?
mfg
Manu
Wer sagt denn, dass diese Art von Verknüpfung überhaupt eine Endung geschweige denn lnk hat?
StringTrimRight kannst du zum Abschneiden verwenden.
peethebee
Das mit dem .lnk sagt mir das _FileListToArray.
thxXx an alle für eure Hilfe.
Ich probier mich mal schlau zu machen über das StringTrimRight.
(edit: rechtschreibfehler^^)
Nein, kannst Du gleich vergessen!
Das kann doch gar nicht funktionieren! Du hast in Deinem Ordner Verknüpfungen auf die Druckerverbindungen eines anderen Hosts. Wenn Du diese öffnest (lokal) dann gehst natürlich. Remote sieht das aber ganz anders aus. Du kannst nicht einfach die Druckereinstellungen eines anderen Hosts remote öffnen. Versuch mal die Verknüpfungen remote über den explorer zu öffnen. Da tut sich nix!!!
Ich kann die Dateien per draufklicken installieren.
sogar über cmd.
Aussichtslose Lage...
das mit stringtrim hat auch nicht gefunzt.
Schönes Wochenende!
Ich geh jetzt nach Hause
teh_hahn: Ich habe jetzt das ganze noch lokal versucht.
Es hat auch nicht geklappt.
Hast dus wirklich mit .lnk dateien versucht?
Hat wirklich keiner eine Ahnung, wieso das Script keine .lnk dateien ausführen kann?
ganz dumme Frage aus dem Bauch heraus:
sind Leerzeichen im Pfad und spielt das bei shellexecute eine Rolle?
Es sind im aktuellen Pfad keine Leerzeichen und ich denke das spielt keine Rolle.
Danke trotzdem, Vollnoob.
Ich kann auch die dümmsten Fragen gebrauchen.
MfG
Manu
Edit: Ich dachte immer, AutoIt kann verdammt viel.
schade, dass es nicht mal Drucker verknüpfungen ausführen kann...