$array[0][0] = 1
$array[0][1] = 2
$array[0][2] = 3
$array[1][0] = 4
$array[1][1] = 5
$array[1][2] = 6
$array[2][0] = 7
$array[2][1] = 8
$array[2][2] = 9
Beiträge von funkey
-
-
Prinzipiell funktioniert es so, wie du gepostet hast, aber: Wenn du z.B. $CmdLine[3] abfragst und nur 2 Parameter hast, dann ist das Array zu klein und du bekommst einen Fehler, also vielleicht vorher mit $CmdLine[0] überprüfen wieviele Parameter überhaupt mitgegeben wurden und nicht nur ob mehr als ein Parameter angegeben wurde.
-
Ich weiß nicht wie das bei den anderen ist, aber ich nehme GUICtrlSetOnEvent bei größeren Projekten der Übersicht halber, für Kleinigkeiten immer GUIGetMsg. Ich denke aber es ist performanter GUICtrlSetOnEvent zu verwenden.
-
Ich hab's mal ein bisschen abgeändert, habe den Fehler nicht simulieren können, aber vielleicht passts jetzt!

Spoiler anzeigen
[autoit]#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
[/autoit] [autoit][/autoit] [autoit]
#AutoIt3Wrapper_icon=Printer 2.ico
#AutoIt3Wrapper_Compression=4
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <GuiConstants.au3>
#include <GuiListView.au3>
#include <File.au3>
#include <GUIConstantsEx.au3>
#include <ListViewConstants.au3>;Drucker-Daten aus drucker.csv einlesen
[/autoit] [autoit][/autoit] [autoit]
;Format:
;Nr.;Drucker;Abt.;Standort;IP;SAP-Name;Freigabe-Name;Bemerkung
Dim $arCSV
$csvFile = "drucker.csv"
_FileReadToArray($csvFile, $arCSV);Felder am ";" trennen
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
For $i = 1 To $arCSV[0]
$arCSV[$i] = StringSplit($arCSV[$i], ";")
NextOpt('MustDeclareVars', 1)
[/autoit] [autoit][/autoit] [autoit]
Dim $listview, $Btn_Get, $Btn_Exit, $Btn_Help, $Btn_Printer, $Icon1, $msg, $i, $Status, $ret, $is_Checked, $SS_NOTIFY, $WS_GROUP, $SS_SUNKEN, $SS_CENTER, $drucker, $drucker1, $y, $server, $serverini, $radio1, $radio2;Vorauswahl Server aus drucker.ini auslesen
[/autoit] [autoit][/autoit] [autoit]
$serverini = IniRead("drucker.ini", "Server", "Servername", "Server2");GUI erstellen
[/autoit] [autoit][/autoit] [autoit]
GUICreate("Druckerinstallation", 900, 800) ; Name, Größe GUI
GUISetIcon("Printer 2.ico") ;Icon einbinden
GUICtrlCreateLabel("Druckerinstallation", 10, 10, 500, 25) ; Überschrift
GUICtrlSetFont(-1, 18, 400, 0, "Arial") ;Format Überschrift;Radiobuttons für Serverauswahl
[/autoit] [autoit][/autoit] [autoit]
GUICtrlCreateLabel("Server:", 675, 22, 35, 25)
$radio1 = GUICtrlCreateRadio ("Server1", 720, 20, 80, 20)
$radio2 = GUICtrlCreateRadio ("Server2", 820, 20, 80, 20);Vorbelegen der Radiobuttons je nach Eintrag in drucker.ini
[/autoit] [autoit][/autoit] [autoit]
Switch $serverini
Case "Server1"
GUICtrlSetState($radio1, $GUI_CHECKED)
Case "Server2"
GUICtrlSetState($radio2, $GUI_CHECKED)
EndSwitch;Liste aufbauen
[/autoit] [autoit][/autoit] [autoit]
$listview = GUICtrlCreateListView("#|Modell |Abteilung|Standort |IP-Adresse |SAP-Name |Freigabe-Name |Bemerkung ", 10, 40, 880, 720) ;Listenkopf
GUICtrlSendMsg($listview, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_GRIDLINES, $LVS_EX_GRIDLINES)
GUICtrlSendMsg($listview, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_FULLROWSELECT, $LVS_EX_FULLROWSELECT)
GUICtrlSendMsg($listview, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_CHECKBOXES, $LVS_EX_CHECKBOXES);Einträge in Liste schreiben, dabei erste Zeile der drucker.csv wegen Spaltenköpfen ignorieren
[/autoit] [autoit][/autoit] [autoit]
For $x = 2 to $arCSV[0]
$i = $arCSV[$x]
GUICtrlCreateListViewItem($x-1 & "|" & $i[2] & "|" & $i[3] & "|" & $i[4] & "|" & $i[5] & "|" & $i[6] & "|" & $i[7]& "|" & $i[8], $listview)
Next;Buttons platziern
[/autoit] [autoit][/autoit] [autoit]
_GUICtrlListView_SetColumnWidth ($listview, 0, 100)
$Btn_Get = GUICtrlCreateButton("Installieren", 10, 765, 90, 30) ;Button Installieren
$Btn_Printer = GUICtrlCreateButton("Drucker", 620, 765, 70, 30) ; Button Drucker
$Btn_Help = GUICtrlCreateButton("Hilfe", 720, 765, 70, 30) ; Button Hilfe
$Btn_Exit = GUICtrlCreateButton("Beenden", 820, 765, 70, 30) ;Button Beenden;Statuszeile für Hinweise
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$Status = GUICtrlCreateLabel("Bitte Drucker wählen", 370,780, 200, 20, BitOR($SS_SUNKEN, $SS_CENTER))
GUISetState();Abfrage
[/autoit] [autoit][/autoit] [autoit]
While 1
$msg = GUIGetMsg();Welcher Radiobutton ist markiert?
[/autoit]
If GUICtrlRead($Radio1) = $GUI_CHECKED Then
$serverini = "Server1"
Else
$serverini = "Server2"
EndIf
Select
Case $msg = $GUI_EVENT_CLOSE Or $msg = $Btn_Exit ;Programm mit Beenden oder X beenden
ExitLoop
Case $msg = $Btn_Help ;Hilfe aufrufen
MsgBox(0, "Hilfe", "Druckerinstallation" & @CRLF & @CRLF & "Ermöglicht das Installieren der an den Servern 'Server1' und 'Server2' freigegebenen Netzwerkdrucker." & @CRLF & @CRLF & "1. Server wählen" & @CRLF & "2. Drucker wählen" & @CRLF & "3. Installieren" & @CRLF & @CRLF & "Die Daten werden aus der Datei 'drucker.csv' geholt, welche folgendes Format (Kopfzeile) hat:" & @CRLF & @CRLF & "Nr.;Drucker;Abt.;Standort;IP;SAP-Name;Freigabe-Name;Bemerkung"& @CRLF & @CRLF & "Trennung durch Semikolon, keine Anführungszeichen für den Text!"& @CRLF)
Case $msg = $Btn_Printer ;Drucker aufrufen
Run("rundll32.exe shell32.dll,SHHelpShortcuts_RunDLL PrintersFolder")
Case $msg = $Btn_Get ;Installieren
GUICtrlSetData($Status, "Bitte Drucker wählen ") ; Status setzen
For $x = 0 to $arCSV[0]-2 ;alle Listeneinträge überprüfen - beginnend bei 0!
Local $is_Checked = _GUICtrlListView_GetItemChecked ($listview, $x)
If $is_Checked = TRUE Then ;Checkbox gesetzt?
GUICtrlSetData($Status, "Drucker wird installiert")
$y = $x+2
$drucker = $arCSV[$y]
$drucker1 = $drucker[7] ;Freigabename ermitteln
If $drucker1 = "" Then ;Fehlt der Freigabename?
MsgBox(48, "Fehler", "Freigabe-Name fehlt!")
Else
Runwait("rundll32.exe printui.dll,PrintUIEntry /in /n \\" & $serverini & "\" & $drucker1) ;Drucker installieren, warten bis Vorgang abgeschlossen
MsgBox(0, "Fertig", "Drucker installiert: \\" & $serverini & "\" & $drucker1)
EndIf
Else
GUICtrlSetData($Status, "Bitte Drucker wählen") ; Status setzen
EndIf
Next
IniWrite("drucker.ini", "Server", "Servername", $serverini) ; $Radiobutton wird in die Ini Datei geschrieben
EndSelect
WEnd
Exit -
Du solltest dir vielleicht diese Befehle ansehen:
[autoit]ControlHide
[/autoit]
ControlShow
ControlDisable
ControlEnable
ControlMoveDamit kannst du fremde und eigene Gui's verändern.
-
Einfach ist immer relativ! Wenn man etwas nicht weiß, kann das einfachste Problem unlösbar sein!
Viel Spaß noch mit Autoit und aber auch mit C/C++.
-
Wenn man den Mauszeiger ändert wie z.B. bei einem Link, dann schaut's auch nicht mehr so schlecht aus. Ist zwar kein '3D', aber man sieht sofort, dass man hier klicken kann.
[autoit]GUICtrlSetCursor($idBtn, 0)
[/autoit] -
[autoit]
If $msg = $id_input1 Then $afile[7] = "aa" & GUICtrlRead($id_input1)
[/autoit] -
Kann sein dass sich der Name der Funktion geändert hat. Mit _GUICtrlListView_SetColumnWidth bzw. _GUICtrlListView_GetItemChecked funktioniert's. Also ein Unterstrich mehr.
-
Zum Beispiel so:
[autoit]#include <GUIConstants.au3>
[/autoit][autoit][/autoit][autoit]
#Include <File.au3>Dim $afile
[/autoit][autoit][/autoit][autoit]
_FileReadToArray("Test.txt",$afile)GUICreate("MeineGUI",250,200)
[/autoit][autoit][/autoit][autoit]
GUISetState(@sw_show)$id_input1=GUICtrlCreateInput("Wert 1",21,30,171,20,-1,-1)
[/autoit][autoit][/autoit][autoit]
$id_input2=GUICtrlCreateInput("Wert 2 ",20,80,171,20,-1,-1)
$id_input3=GUICtrlCreateInput("Wert 3",20,130,171,20,-1,-1)While 1
[/autoit][autoit][/autoit][autoit]
$msg=GUIGetMsg()
If $msg = $GUI_EVENT_CLOSE Then ExitLoop
If $msg = $id_input1 Then $afile[7] = GUICtrlRead($id_input1)
If $msg = $id_input2 Then $afile[8] = GUICtrlRead($id_input2)
If $msg = $id_input3 Then $afile[9] = GUICtrlRead($id_input3)
WEnd_FileWriteFromArray("Test.txt",$afile,1)
[/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit] -
Zitat
Ich habe Word Dokumente, und es sollen alle Zeichen darin, die Durchgestrichen sind gelöscht werden und alle Zeichen, die Unterstrichen sind, soll die Unterstreichung entfernt werden. Und zwar auf allen Seiten..
Davon war nie die Rede. Ich versteh aber natürlich, dass das dann so nicht funktioniert.

-
Nur falls es jemanden interessiert
. Hier ist auch meine Version vom µIT September-Wettbewerb. -
Schau dir doch mal die FF.au3 von Stilgar an? Da gibt's die Funktion _FFClickLink.
Hab's aber noch nie getestet. -
Hallo Alina, hab's mal mit dem verherigen Beispiel verknüpft.
Spoiler anzeigen
[autoit]#include <GUIConstantsEx.au3>
[/autoit] [autoit][/autoit] [autoit]Dim $Test
[/autoit] [autoit][/autoit] [autoit]
$Daten = IniReadSection("Test.ini","dieerste")GUICreate("Input Test", 320, 180, @DesktopWidth / 2 - 160, @DesktopHeight / 2 - 45)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$input1 = GUICtrlCreateInput("", 10, 5, 300, 20)
$input2 = GUICtrlCreateInput("", 10, 35, 300, 20) ; will not accept drag&drop files
GUICtrlSetState(-1,$GUI_DISABLE)
$label = GUICtrlCreateLabel("Label", 10, 95, 300, 60) ; will not accept drag&drop files
$btn = GUICtrlCreateButton("Show", 10, 65, 300, 20)GUISetState()
[/autoit] [autoit][/autoit] [autoit]
$msg = 0While $msg <> $GUI_EVENT_CLOSE
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit]
$msg = GUIGetMsg()
Select
Case $msg = $input1
If GUICtrlRead($input1) = $Daten[1][0] Then GUICtrlSetData($input2,$Daten[1][1])
Case $msg = $input2
Case $msg = $btn
For $i = 2 To $Daten [0][0]
$Test &= @CRLF& $Daten[$i][0]&" = "&$Daten[$i][1]
Next
GUICtrlSetData($label,$Test)
EndSelect
WEnd -
Du musst mit WinGetPos die Koordinaten des Fensters holen und zu den Positionsangaben bei _ScreenCapture_Capture hinzuzählen.
[autoit]
ControlGetPos gibt nur Koordinaten relativ zum Fenster zurück.
Also so ungefähr:_ScreenCapture_Capture(WinGetTitle("Systemeigenschaften", "")&".jpg", $gridpos[0] + $windowpos[0], $gridpos[1] + $windowpos[1], $gridpos[0] + $gridpos[2] + $windowpos[0], $gridpos[1] + $gridpos[3] + $windowpos[1])
[/autoit] -
-
So?
Spoiler anzeigen
[autoit]#include <GUIConstantsEx.au3>
[/autoit] [autoit][/autoit] [autoit]$Daten = IniReadSection("Test.ini","First")
[/autoit] [autoit][/autoit] [autoit]GUICreate("Input Test", 320, 120, @DesktopWidth / 2 - 160, @DesktopHeight / 2 - 45)
[/autoit] [autoit][/autoit] [autoit]
$input1 = GUICtrlCreateInput("", 10, 5, 300, 20)
$input2 = GUICtrlCreateInput("", 10, 35, 300, 20) ; will not accept drag&drop filesGUISetState()
[/autoit] [autoit][/autoit] [autoit]
$msg = 0While $msg <> $GUI_EVENT_CLOSE
[/autoit]
$msg = GUIGetMsg()
Select
Case $msg = $input1
If GUICtrlRead($input1) = $Daten[1][0] Then GUICtrlSetData($input2,$Daten[1][1])
Case $msg = $input2
EndSelect
WEndEdit: Hatt noch einen Fehler im Konzept

-
Oscar : Wenn ich Bluetooth bei meinem Handy einschalte, dann kratzt das meinen PC überhaupt nicht, weil mein Handy nicht sagt, dass es da ist und mein PC auch nicht danach sucht. Ich denke dein Bluetooth-Headset sendet nach dem einschalten immer: 'Ich bin da, ich bin da, ich bin da!'

-
Ich habe hier einen Bastel-Ersatz, der erstaunlich gut funktioniert!
[autoit]
HotKeySet("!q", "Ende")
[/autoit][autoit][/autoit][autoit]While 1
[/autoit][autoit][/autoit][autoit]
$var = WinList()
For $i = 1 to $var[0][0]
If $var[$i][0] <> "" AND IsVisible($var[$i][1]) And StringInStr(WinGetText($var[$i][0]),"FolderView") Then
$text = WinGetText($var[$i][0],"FolderView")
If StringInStr($text,"Neuer Ordner",1) Then Send(@YEAR&@MON&@MDAY&"_"&@HOUR&@MIN&@SEC)
EndIf
Next
Sleep(200)
WEndFunc IsVisible($handle)
[/autoit][autoit][/autoit][autoit]
If BitAnd( WinGetState($handle), 2 ) Then
Return 1
Else
Return 0
EndIf
EndFuncFunc Ende()
[/autoit]
Exit
EndFunc -
GuiCtrlSetImage