hi oscar
ja das funktioniert jetzt so wie ich mir das vorgestellt habe.
vielen, vielen dank.
gruß viper67
hi oscar
ja das funktioniert jetzt so wie ich mir das vorgestellt habe.
vielen, vielen dank.
gruß viper67
Hi Oscar
Sorry. Hier kommt das Skript
[autoit]
#include <GUIConstants.au3>
$server_1 = "server1"
$share_1 = "temp1"
$drive_1 = "G:"
$name_1 = "Temp1"
$server_2 = "server2"
$share_2 = "temp2"
$drive_2 = "H:"
$name_2 = "Temp2"
global $StatusPic = GUICtrlCreatePic(@ScriptDir & "\Online.bmp", 250, 70, 20, 20)
global $StatusPic2 = GUICtrlCreatePic(@ScriptDir & "\Online.bmp", 250, 110, 20, 20)
func drive1_on ()
$drive1_on = DriveMapAdd ( $drive_1, "\\"& $server_1 &"\"& $share_1 &"" ,
EndFunc
Func drive1_off ()
$drive1_off = DriveMapDel ( $drive_1 )
EndFunc
func drive2_on ()
$drive2_on = DriveMapAdd ( $drive_2, "\\"& $server_2 &"\"& $share_2 &"" ,
EndFunc
Func drive2_off ()
$drive1_off = DriveMapDel ( $drive_2 )
EndFunc
func status()
If DriveStatus( $drive_1 ) = "Ready" Then
GUICtrlSetImage($StatusPic, @ScriptDir & "\Online.bmp")
Else
GUICtrlSetImage($StatusPic, @ScriptDir & "\Offline.bmp")
EndIf
If DriveStatus( $drive_2 ) = "Ready" Then
GUICtrlSetImage($StatusPic2, @ScriptDir & "\Online.bmp")
Else
GUICtrlSetImage($StatusPic2, @ScriptDir & "\Offline.bmp")
EndIf
EndFunc
[/autoit][autoit][/autoit][autoit]$Form1_1 = GUICreate("", 400, 400, 477, 121)
$Checkbox1 = GUICtrlCreateCheckbox($name_1, 40, 70, 185, 17)
$Checkbox2 = GUICtrlCreateCheckbox($name_2, 40, 110, 185, 17)
$connect = GUICtrlCreateButton("connect", 16, 308, 113, 33, 0)
$disconnect = GUICtrlCreateButton("disconnect", 262, 308, 113, 33, 0)
status()
GUISetState(@SW_SHOW)
While 1
$msg=GuiGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
ExitLoop
Case $msg = $connect
$Checkbox1_ReadCheck = GUICtrlRead($Checkbox1)
$Checkbox2_ReadCheck = GUICtrlRead($Checkbox2)
If $Checkbox1_Readcheck = $GUI_CHECKED Then
drive1_on()
Else
;~ do nothing
EndIf
If $Checkbox2_Readcheck = $GUI_CHECKED Then
drive2_on()
Else
;~ do nothing
EndIf
status()
Case $msg = $disconnect
If $Checkbox1_Readcheck = $GUI_CHECKED Then
drive1_off()
Else
;~ do nothing
EndIf
If $Checkbox2_Readcheck = $GUI_CHECKED Then
drive2_off()
Else
;~ do nothing
EndIf
status()
EndSelect
WEnd
Exit
[/autoit]Dachte es wird dann zu unübersichtlich wenn ich alles poste.
Danke im voraus.
Gruß viper67
hi fast2
vielleicht hab ich mich nicht richtig ausgedrückt.
ich erkläre nochmal kurz mein script.
eine gui mit checkboxen und connectbutton. neben den checkboxen soll der status wiedergegeben werden in form einer zustandsanzeigen on oder off.
ich hake je nach auswahl checkboxen an und drücke auf connect. die zur checkbox gehörigen zustandsanzeigen zeigen online oder offline an.
so richtig funktioniert das nur wenn die gui geschlossen und neu gestartet wurde. eigentlich klar. innerhalb der gui wechselt das bild (on oder off) nach drücken des connect buttons nicht. bzw so wie ich es heute um 11:55 geschrieben hatte war ja teilweise lauffähig.
alle anderen dinge die ich is jetzt ausprobiert hatte gingen garnicht oder brachten nur flicker zwischen den wechsel der bilder online.bmp und offline.bmp
gruß viper67
Hallo Oscar
Erstmal Danke für Deine Hilfe.
Leider hat das nicht funktioniert. .
So ganz verstehe ich das skript nicht. Ein Bild wird nicht angezeigt.
Ich hab mal $filename mit
global $filename definiert ?
und alles so übernommen wie Du geschrieben hast.
Kannst Du mir erklären wie das abläuft ? In GuiSetCtrlImage wird der Wert der Variable $StatusPic geschrieben. Und $filename ?
Na irgendwie hab ich einen Denkfehler
gruß viper67
Hallo
Ich hatte erstmals mein script mit GUICtrlSetImage() erstellt.
[autoit]
func status ()
$status_button1 = GUICtrlCreateButton("", 25, 70, 20, 20, $BS_BITMAP)
If DriveStatus( $drive_1 ) = "Ready" Then
GUICtrlSetImage (-1, "online.bmp",22)
Else
GUICtrlSetImage (-1, "offline.bmp",22)
EndIf
.....
EndFunc
generell hat das erstmal funktioniert.
In der Anleitung zu GUICtrlSetImage steht
Bestimmt das Bitmap- oder Iconbild, das für ein Steuerelement verwendet wird.
Bemerkungen
Wenn die Funktion auf einen Button angewendet wird, wird das Bild auf der Schaltfläche angezeigt. Bilder können auch für Checkbox-Elemente (Kontrollkästchen) verwendet werden, wenn der $BS_PUSHLIKE Stil benutzt wird. In beiden Fällen muss der $BS_ICON- oder $BS_BITMAP-Stil angegeben werden, um den Typ des verwendeten Bildes festzulegen.
Hier war das Problem, dass es nach dem Überfahren des Buttons mit der Maus das Bild gewechselt hat.
Nun den Button wollte ich ohnehin nicht haben, aus diesem Grund nur das Bild als Anzeige ob das Laufwerk vorhanden ist.
Und jenachdem mit welchem Laufwerk ich mich connected habe die Anzeige wechselt.
Dann kam mir die Idee, dass ich nur GUICtrlCreatePic ( "online.bmp", 25, 70 , 20 , 20) nehme. Das haut allerdings nur hin, wenn ich die Gui schließe und wieder öffne. Oder was mir komischerweise aufgefallen ist, mit irgendeinem Windowsfenster überlagere. Danach ist der Zustand korrekt.
Die Idee von jiyan006 hab ich probiert. Was hast Du als $StatusBild definiert ?
Im Grund genommen ja eigenlich das gleich wie ich es einmal angedacht hatte.
Gruß und Danke
viper67
Hallo zusammen
Ich möchte gerne einen Status als Bitmap in einer Gui aktualisiert angezeigt bekommen.
In einer Funktion habe ich dazu folgendes geschrieben.
[autoit]
func status()
If DriveStatus( $drive ) = "Ready" Then
GUICtrlCreatePic ( "online.bmp", 25, 70 , 20 , 20)
Else
GUICtrlCreatePic ( "offline.bmp", 25, 70 , 20 , 20)
EndIf
EndFunc
Betätige ich nun einen Button... ich nenn Ihn mal Connect soll die Grafik aktualisiert werden.
Ich kürze mal mein Skript ab....
$connect = GUICtrlCreateButton("Connect", 16, 100, 100, 30, 0)
.....
While 1
$msg=GuiGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
ExitLoop
Case $msg = $connect
Run .......
status()
EndSelect
WEnd
Ich habe jetzt das Problem, dass das Statusbild nicht automatisch aktualisiert wird.
Hat das jemand eine Idee wie man das realisieren kann ?
Vielen Dank im voraus.
Gruß viper67
hi
folgendes script war für meine bedürfnisse völlig ausreichend.
[autoit]
If $checkbox1_readcheck = $GUI_CHECKED Then
_Check1_on()
Else
_Check1_off()
EndIf
If $checkbox2_readcheck = $GUI_CHECKED Then
_Check2_on()
Else
_Check2_off()
EndIf
Vielen Dank an alle
Gruß viper67
Hallo zusammen
vielen vielen Dank dass Ihr Euch so zahlreich gemeldet habt und auch so schnell. DANKE
Ich teste das mal im Laufe der nächten Woche.
Um die Frage zu beantworten möchte ich mit den checkboxen Laufwerke mappen.
wenn die Haken gesetzt sind dann sollen freigegebene Verzeichnisse gemappt werden und wenn der Haken rausgenommen wird dann diese wieder trennen.
Momentan sollen in den Funktionen func(x)_on oder func(x)_off weiter keine Befehle mehr ausgeführt werden.
Ist aber Erweiterungsfähig mal sehen was mir noch so einfällt.
Gruß viper67
Hallo zusammen
Ich hab ein kleines Problem mit checkbox in einer GUI.
Die Gui besteht aus 10 Checkboxen jenachdem welche gewählt ist soll nach Drücken des OK Buttons ein script ausgeführt werden.
Möglich ist jede Kombination
Beispiel
1 checked
9-10 unchecked
oder 1, 2 6,9 checked
rest unchecked u.s.w.
für checked z.B. Einschalten
für unchecked z.B. Ausschalten.
gelöst habe ich das ganze bis jetzt und auch lauffähig wie folgt.
[autoit]
If $checkbox1_readcheck = $GUI_CHECKED AND $checkbox2_readcheck = $GUI_UNCHECKED AND .... AND $checkbox10_readcheck = $GUI_CHECKED Then
func1_on ()
func2_off ()
...
func10_on ()
wie gesagt klappt gut.
Problem ist hier ... muss ja für jeden Zustand wieviel checkboxen angeklickt sind oder nicht eine Schleife schreiben.
Wie kann ich mir die ganze Arbeit sparen und mein skript kleiner gestallten ?
Geht sowas mit arrays ?
Wenn ja kann mir da jemand einen Rat geben ?
Vielen Dank im voraus
Gruß viper 67
Hi BugFix, Hi Peethebee
Dank Eurer Hilfe geht es hier Schritt für Schritt weiter.
Das mit den Arrays ist ne fette Sache.
Ist ein richtiger Sprung für mich in Sachen Autoit.
Und die Info's im Wiki kommen bestimmt vielen zu Gute.
So und nun in Bezug auf das Beispiel mit psinfo mein Script wie es bis jetzt aussieht.
Zum Ablauf des Skriptes ganz kurz.
Benutzername Passwort und Rechnername eingeben.(damit man das von jedem Account abrufen kann)
Dann wird psinfo.exe gestartet und liest die Konfiguration aus und gibt das an eine Liste weiter.
Ich denke als Übungsobjekt für den Anfang eine schöne Aufgabe
Da ist bestimmt noch nicht alles so wie es sein sollte, deshalb nehme ich gerne auch Kritik an wenn ich etwas falsch gemacht habe.
Vielleicht möchte das jemand so ins Wiki übernehmen.
Wenn ich da was zu schreiben soll sprich Erklärung oder oder oder ... dann erkläre ich mich gerne zu bereit.
#include <GUIConstants.au3>
#include <file.au3>
#Include <GuiListView.au3>
#include <Process.au3>
$remote_pc = InputBox ("Remote PC", "Geben sie den Rechnernamen ein")
$remote_admin = InputBox ("Remote Username", "Geben Sie den Usernamen ein.")
$remote_password = InputBox ("Remote Password", "Geben Sie das Passwort ein.", "", "*")
Local $i, $Apps, $even = 1, $lv_item
$psinfo = "psinfo \\"& $remote_pc &" -u "& $remote_admin &" -p "& $remote_password &" > psinfo.txt"
Runwait(@ComSpec & " /c " & ''& $psinfo &'', "", @SW_SHOW)
GUICreate("PC Info",420,520, 200,200,-1,$WS_EX_ACCEPTFILES)
GUISetBkColor (0x00FFFFDD)
$listview = GuiCtrlCreateListView ("Systeminfo|Ergebnis",10,10,400,300)
Dim $array
If Not _FileReadToArray("psinfo.txt",$array) Then
MsgBox(4096,"Error", " Error reading log to Array error:" & @error)
Exit
EndIf
Local $i = 0, $text = ""
For $i = 1 To UBound($array) - 1
$text = StringStripWS( $array[$i], 4 )
$text = StringReplace($text, ": ", "|")
$text = StringReplace($text, "System information for \\", "PC-Name|")
$text = StringReplace($text, ": ", "|")
$item=GuiCtrlCreateListViewItem($text,$listview)
_GUICtrlListViewSetColumnWidth ($listview, 1, $LVSCW_AUTOSIZE_USEHEADER)
Next
GuiSetState()
Do
$msg = GuiGetMsg ()
Until $msg = $GUI_EVENT_CLOSE
[/autoit]Wie Ihr im Dateianhang seht, sind in der Liste noch einige Fehler.
vielleicht gibt es da eine Lösung
z.B. im Feld Systeminfo wird die Spaltenbreite nicht angepasst.
Dann hab ich hinter dem Rechnernamen noch einen Doppelpunkt, den ich nicht wegbekomme.
Dann wäre es schick, wenn ich die Inputfelder im gleichen Fenster hätte mit einem Abfragebutton.
Hab das zwar schon probiert, aber mehr als eine Abfrage nach dem Starten des Skriptes bekomme ich da nicht hin,...
...wenn ich danach die Inputfelder ändere und die Abfrage erneut ausführe wird nur ein null - Wert überliefert.
Ja und zu guter letzt würde es nicht schlecht aussehen, wenn man während der Laufzeit das Dos-Fenster auf @SW_HIDE setzt dafür aber irgendeinen Laufbalken hinbekommt.
Nun ja so nach und nach halt das Skript aufbaut...
Was haltet Ihr davon, wenn man so eine Art Workshop im Wiki daraus macht ?
Also nicht nur einfach das Skript posten wenn es fertig ist, sonder das ganze auch noch beschriften was da Zeile für Zeile geschieht.
Hilft vielleicht auch dem ein oder anderen.
Müssen ja auch nicht elendig lange Skripte sein Aber so der ein oder andere Tipp den es in der Autoit Hilfe gibt ist bestimmt der Renner unter der Autoit Fangemeinde.
Gruß Viper67
Hi peethebee
ich probiere das heute Abend mal aus.
wäre das nicht mal was für's Wiki ?
Ein Array HowTo das über die eigentliche Autoit Hilfe hinausgeht.
Und zwar mit Beschreibung was der Code gerade macht.
Ich denke ich bin da nicht der Einzige, der von Arrays keine Ahnung hat oder doch ?
Nun ja jedenfalls vielen Dank erstmal für Deine Hilfe.
Gruß viper67
@ Bugfix
Jetzt läuft es. Danke
So jetzt frag ich aber mal weiter um im großen Array-Dschungel zurechtzukommen.
Ich hab mir mal PSTools runtergeladen und hole erstelle mir mittels psinfo eine Textdatei (Systeminformationen von einem entfernten PC)
Ich weiß es wurden schon mit Autoit und pstools Programme geschrieben. Soll hier auch nur für mich zum test sein um ein wenig zu üben.
Na egal jedenfalls hab ich nun eine Textdatei
die unter anderem folgendes Format hat.
....
Physical memory: 1024 MB
Video driver: NVIDIA GeForce FX 5200
....
Wie man sieht, kommt nach jedem Doppelpunkt Leerzeichen.
In der Textdatei dteht das alles wunderbar untereinander.
Im ausgelesenen Array sieht das dann weniger schön aus.
OK ein Schritt bin ich schon weiter und hab folgendes ersetzt...
von For $iCounter = 0 To UBound($avArray) - 1
$sMsg = $sMsg & StringStripCR($avArray[$iCounter]) & @CR
Next
das StringStripCR mit StringStripWS
So jetzt sieht das alles ein wenig aufgeräumter aus.
Jetzt aber meine Frage.
Wie würdet Ihr die eingelesenen Daten verarbeiten ?
Damit man daraus optisch was anspruchsvolles bekommt ?
Mit anspruchsvoll meine ich z.B. Sowas in einer Gui ausgeben. Vielleicht in Tabellenform etc.
Und besser gefragt wie funktioniert das dann ?
erst dachte ich mir, ich sollte die Textdatei so verändern , das ich ein iniRead anwenden kann. Und aus dieser lese ich dann die Daten wieder ein.
Für mein Beispiel hier würde ich dann
Physical memory: 1024 MB nehmen und
Physical_memory=1024daraus machen
Dann kann ich das mit iniRead schön einbinden.
Geht das überhaupt ?
Schätze aber da mehr geht wenn man direkt mit den Arrays arbeitet.
Aber wie ?
Gruß und Danke
viper67
Hi Bi
Bugfix
19 Zeilen sind in dem textfile vorhanden.
und 19 mal hat er die 19 angezeigt anstatt den Inhalt jeder Zeile anzuzeigen.
Frag mich warum.
Vielleicht hatte ich mich auch verschrieben.
Danke für die Ubound Beschreibung. Habs verstanden.
Hi leviathan, Hi Bufix.
Erstmal vielen Dank für eure Hilfe.
BugFix
Ausgabe über msgbox hat nicht so richtig funktioniert.
Als Ausgabe erfolgte die Anzeige der Zeilen und das so oft wie es die Zeilen gibt.
@levithan
das hat funktioniert.
Kannst Du mir noch die folgenden Zeilen erklären was da genau abläuft ?
For $iCounter = 0 To UBound($test) - 1
Ich denke mal hier wird Zeile für Zeile hochgezählt. Aber was macht genau der Ubound Befehl mit der - 1 hinten dran =?
$sMsg = $sMsg & StringStripCR($test[$iCounter]) & @CR
Und in dieser Zeile ? warum $sMsg & ? was passiert da genau.
Ja dann nochwas. gibt es irgendwo eine gute Anleitung für das Arbeiten mit den Arrays ? Da fehlt es mir doch an dem grundlegendem Fachwissen. und die original Hilfe gibt da nicht soviel her finde ich.
Danke Gruß viper67
Hallo
Kann mir jemand erklären, wie ich ein Array in eine Liste ausgeben kann
?
Dim $aRecords
If Not _FileReadToArray("test.txt",$aRecords) Then
MsgBox(4096,"Error", " Error reading log to Array error:" & @error)
Exit
EndIf
For $x = 1 to $aRecords[0]
Msgbox(0,'Remote PC:' & $x, $aRecords[$x])
Next
Hier kann ich zwar das Array in einer msgbox sehen aber jeden Eintrag muss ich mit OK bestätigen.
Mit diesem Zeile geht das zwar aber die Arraynr z.B
[1] = abcde
[2] = fghij
stört mich
Ja und wie geht das ganze dann in einer GUI ?
Also ein ganz einfacher Button, der dann in der Gui diese Liste anzeigt.
Vielleicht kann mir da jemand helfen.
So richtig werde ich da nicht schlau wie das funktioniert.
Danke im voraus
Gruß Viper67
Thanx th.meger
hat funktioniert.
Gruß viper67
Hallo
Ich möchte in einer GUI ein Hintergrundbild haben. Lege ich dann die Buttons drüber funktionieren diese nicht.
Kann mir da jemand einen Rat geben oder funktioniert das generell nicht ?
$Form1 = GUICreate("Menu", 801, 601, 193, 115)
$Bild1 = GUICtrlCreatePic("hintergundbild.jpg", 0, 0, 800, 600)
GUISetState(@SW_SHOW)
$Button1 = GUICtrlCreateButton("", 2, 572, 53, 24, $BS_BITMAP)
GUICtrlSetImage (4, "start.bmp")
Vielen Dank
Hallo
Ich möchte gerne mit eine Datei (ini Datei) aus der Autoit Datein einliest verschlüsselt ablegen. Beim Aufruf liest mein Skript die ini Datei ein entschlüsselt sie vorher und verschlüsselt diese dann wieder. Der Einlesevorgang geh ja recht schnell.
Ich hab zwar schon sowas über ein Kommandozeilentool realiesier, aber wenn das mit Autoit auch funktionieren würde wäre das etwas schicker.
Gruß Viper67
Hallo
Ui da bin ich aber platt. und ich such mir hier nen Wolf
und schreib ein eigenes Skript.
Die Datei liegt bei mir unter C:\Windows\ShellNew und nicht wie ich erst gedacht habe unter C:\Programme\Autoit3
Tja dann ist mein Skript wohl sinnlos.
Das einzigste, was ich noch hinzugefügt habe, ist die Möglichkeit einen eigenen Dateinamen in einem Fenster einzugeben, sowie Skriptbeschreibung, Versionsnnummer manuell einzugeben und, dass das Datum zur Erstellungszeit automatisch eingetragen wird.
Falls ein Skript mit dem gleichen Namen in diesem Order schon existiert hab ich eine fortlaufende Nummer vergeben. Ganz im Stil von Windows.
Aber trotzdem. War ne schöne Übung. Ach ja den Eintrag mit dem Kontextmenü hab ich nun auch hinbekommen. ... nix mit Hexeinträgen oder inf Datei. Ging wirklich rein per Registryeinträgen unter Autoit.
Vielen Dank trotzdem an Eure Mithilfe.
Und weiter so im Forum. Schön dass das nun auch in Deutscher Sprache im Internet zu finden ist.
Gruß Viper67
Hi Wolkenloser
Ja da genau liegt mein Problem.
die hex Einträge und,..." die Funktionen mit aktuell ausgewählten Dateien anstellen". Um eine neue Datei zu generieren, brauche ich hier aber schon eine vorhandene.
Das Problem hab ich auch mit der Installation der von mir erstellten inf Datei.
Diese erstellt im gleichen Kontext wie die Einträge von Scite.
Es funktioniert wunderbar, wenn eine au3 schon vorhanden ist.
Gruß und danke viper67