OnEventMode benutzen!
Beiträge von Oscar
-
-
Dieser Codeschnipsel sieht richtig aus und dürfte keinen Fehler produzieren (so es das $Fenster1 gibt).
-
[Thread closed]
-
So ganz stimmt da was aber nicht.
[autoit]
Mit vorherigem Schreibzugriff funktioniert es:
[/autoit][autoit][/autoit][autoit]
$sFile = @ScriptDir & '\test.txt'$hFile = FileOpen($sFile, 2) ; zum Schreiben öffnen
[/autoit]
If $hFile <> -1 Then
FileWriteLine($hFile, Random(1000, 9999, 1))
FileSetPos($hFile, 0, 0)
MsgBox(0, 0, FileRead($hFile))
FileClose($hFile)
EndIf
[autoit]
Macht man aber zuerst den Lesezugriff, dann klappt das nicht (=Leerstring):
[/autoit]
$hFile = FileOpen($sFile, 2) ; zum Schreiben öffnen
If $hFile <> -1 Then
;~ FileSetPos($hFile, 0, 0)
MsgBox(0, 0, FileRead($hFile))
FileWriteLine($hFile, Random(1000, 9999, 1))
FileClose($hFile)
EndIf
Egal, ob mit oder ohne FileSetPos.Edit: Achso, FileOpen(...,2) da wird die Datei ja neu angelegt.
[autoit]
Edit2: Nee, geht auch nicht mit ",1":
[/autoit]
$sFile = @ScriptDir & '\test.txt'
$hFile = FileOpen($sFile, 1) ; zum Anhängen öffnen
If $hFile <> -1 Then
MsgBox(0, 0, FileRead($hFile))
FileWriteLine($hFile, Random(1000, 9999, 1))
FileSetPos($hFile, 0, 0)
MsgBox(0, 0, FileRead($hFile))
FileClose($hFile)
EndIf -
Hmm...im AutoIt Changelog zur neuen Betaversion steht:
Zitat- Changed: It is now possible to read from files opened for writing.
[autoit]
Schön, dachte ich mir, braucht man nicht vorher einlesen. Also mal ein Testskript erstellt:
[/autoit][autoit][/autoit][autoit]
$sFile = @ScriptDir & '\test.txt'
FileWrite($sFile, 'blablabla' & @CRLF) ; Datei erstellen$hFile = FileOpen($sFile, 2) ; zum Schreiben öffnen
[/autoit]
If $hFile <> -1 Then
MsgBox(0, 0, FileRead($hFile)) ; Datei auslesen und anzeigen (erscheint aber nur ein Leerstring)
FileWriteLine($hFile, Random(1000, 9999, 1))
FileClose($hFile)
EndIf
In der Msgbox müsste doch eigentlich der Inhalt der Datei angezeigt werden, oder habe ich das falsch verstanden? -
Mal schnell 'ne Funktion gescriptet:
[autoit]
[/autoit][autoit][/autoit][autoit]
_CDTrayAll()Func _CDTrayAll($iFlag = 1)
[/autoit]
Local $aStatus[2] =['CLOSE', 'OPEN']
Local $aCDROM = DriveGetDrive('CDROM')
If @error Then Return SetError(1, 0, 0)
For $i = 1 To $aCDROM[0]
CDTray($aCDROM[$i], $aStatus[$iFlag])
Next
EndFunc -
Huch, hier war ja noch das alte Skript online.
Die Version 1.2 gibt's doch schon länger.
-
Bin schon seit Jahren bei 1&1 und habe jetzt (seit letztem Monat) auch einen Komplett-Anschluss "INet und Telefon" (VoIP-Telefonie).
Kann bisher nicht klagen. Läuft alles tadellos, auch die Umstellung hat problemlos geklappt (man liest da ja immer schlimme Sachen, aber bei mir hat alles geklappt).
Geschwindigkeitsmäßig habe ich 14000/1000 kBit (Down-/Upload).Was das angeht, bin ich sehr zufrieden.

-
Naja...mit der Stabilität von Windows XP bin ich eigentlich ganz zufrieden. An den letzten Komplettabsturz kann ich mich gar nicht mehr erinnern (Nein, ich habe kein Alzheimer
).
Die Boot-Zeit könnte etwas kürzer sein. Aber ansonsten läuft XP sehr gut. Das ist wohl auch (mit) der Grund, warum sich Vista so schlecht verkauft. -
Der Verbindungs-Check-Thread wurde bereits geschlossen. Bei dem anderen erwarten wir noch eine Erklärung.
-
StringSplit macht aus einem String ein Array.
-
Oh, das weiß ich jetzt nicht, ob ein AutoIt-Skript bereits zu diesem Zeitpunkt ausgeführt werden kann.
Und Shutdown fährt natürlich den Rechner runter, auf dem es läuft. Du müsstest es also zum Remote-Rechner übertragen und dort starten.Dabei fällt mir noch ein: Ist die Anmeldemaske bereits in der hohen Auflösung?
-
Teste mal hiermit und schreib, welche Fehlermeldung kommt:
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include <GUIConstantsEx.au3>
#include <EditConstants.au3>Dim Const $Titel = "Verbindung zum HOME_Laufwerk"
[/autoit] [autoit][/autoit] [autoit]
Dim Const $Laufwerk = "h:"
$Freigabe = "\\192.168.0.10\home_sh$\"$d = DriveMapGet($Laufwerk)
[/autoit] [autoit][/autoit] [autoit]
If $d <> "" Then
$text = "Soll die Verbindung " & $d & " (" & $Laufwerk & ") getrennt werden?"
$ret = MsgBox(1, $Titel, $text)
If $ret = 1 Then
$d1 = DriveMapDel($Laufwerk)
If $d1 = 1 Then
MsgBox(0, $Titel, "Verbindung wurde getrennt")
Else
MsgBox(0, $Titel, "Verbindung konnte nicht getrennt werden.")
EndIf
EndIf
EndIfGUICreate($Titel, 320, 120, @DesktopWidth / 2 - 160, @DesktopHeight / 2 - 45)
[/autoit] [autoit][/autoit] [autoit]GUICtrlCreateLabel("Benutzer: ", 10, 10)
[/autoit] [autoit][/autoit] [autoit]
GUICtrlCreateLabel("Passwort: ", 10, 40)$i1 = GUICtrlCreateInput("", 70, 5, 240, 20)
[/autoit] [autoit][/autoit] [autoit]
$i2 = GUICtrlCreateInput("", 70, 35, 240, 20, $ES_PASSWORD)
$ok = GUICtrlCreateButton("Ok", 160, 75, 70, 20, 1)
$esc = GUICtrlCreateButton("Abbrechen", 240, 75, 70, 20)GUISetState()
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit] [autoit][/autoit] [autoit]
$msg = GUIGetMsg()Select
[/autoit]
Case $msg = $ok
$User = GUICtrlRead($i1)
$Pw = GUICtrlRead($i2)
$Freigabe = $Freigabe & $User
$x1 = DriveMapAdd($Laufwerk, $Freigabe, 0, $User, $Pw)
$err = @error
If $x1 = 1 Then
Run("explorer.exe /e," & $Laufwerk)
ExitLoop
Else
Dim $aMeldung[7] = ['kein Fehler', 'Undefinierter/anderer Fehler', 'Der Zugriff wurde verweigert', 'Das Gerät ist bereits zugewiesen', 'Ungültiger Gerätename', 'Ungültige Remote-Freigabe', 'Ungültiges Passwort']
MsgBox(0, "Fehler", $aMeldung[$err])
EndIf
Case $msg = $GUI_EVENT_CLOSE
ExitLoop
Case $msg = $esc
ExitLoop
EndSelect
WEnd -
Die Zählweise bei MS finde ich schon eigenartig.
Andererseits...wenn man mal so überlegt:Windows 3.x
Win98 wäre dann die 4
Windows 2000 / NT bekommt die 5
XP die 6
Windows 7Also...alles dazwischen (95, ME, Vista) war Schrott und zählt nicht.

-
Bei meinem Beispiel fehlt aber noch die Fehlerbehandlung (wenn der Benutzer beim FileOpenDialog auf abbrechen klickt, wird ein leerer Eintrag erstellt).
Aber das wollen wir ihm mal zur Übung allein machen lassen.
-
Wahrscheinlich eine zu alte AutoIT Version.
Warum updatest Du dann nicht?
Die neuen AutoIt-Versionen besitzen mehr Funktionen und weniger Fehler.
-
So geht's:
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include <GUIConstantsEx.au3>
#include <ListViewConstants.au3>
#include <GUIConstantsEx.au3>
#include <ListViewConstants.au3>
#include <array.au3>#Region ### START Koda GUI section ### Form=
[/autoit] [autoit][/autoit] [autoit]
$Form1 = GUICreate("Form1", 700, 510, 257, 323)
$ListView1 = GUICtrlCreateListView("Listview1", 24, 48, 170, 342)
GUICtrlSendMsg($ListView1, $LVM_SETCOLUMNWIDTH, 0, 160) ; setzt die 1. Spalte des Listviews auf 160 Pixel Breite$ListView2 = GUICtrlCreateListView("Listview2", 224, 48, 170, 342)
[/autoit] [autoit][/autoit] [autoit]
$ListView3 = GUICtrlCreateListView("Listview3", 424, 48, 186, 342)
$Button1 = GUICtrlCreateButton("PC`s Laden", 24, 400, 75, 25, 0)
$Button2 = GUICtrlCreateButton("Check", 24, 432, 75, 25, 0)
$Button3 = GUICtrlCreateButton("export1", 136, 400, 59, 25, 0)
$Button4 = GUICtrlCreateButton("export2", 336, 400, 59, 25, 0)
$Button5 = GUICtrlCreateButton("export3", 552, 400, 59, 25, 0)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
_insert()
EndSwitch
WEndFunc _insert()
[/autoit]
$string = FileOpenDialog("Pc Liste Wählen", @ScriptDir & "\", "Pc Liste (*.txt;*.csv)", 1 + 4)
$array = StringSplit($string, '|')
For $i = 1 To $array[0]
If $array[0] = 1 Then
GUICtrlCreateListViewItem($array[$i], $ListView1)
Else
If $i > 1 Then GUICtrlCreateListViewItem($array[1] & $array[$i], $ListView1)
EndIf
Next
EndFunc ;==>_insert -
AutoIt ist keine Programmiersprache, die eine "echte" Kompilierung verwendet. Das Skript bleibt ein Skript und wird zur Laufzeit interpretiert.
Einige grundsätzliche Resourcen (auf die Du gar keinen Einfluss hast) werden daher bereits für den Interpreter benötigt. -
Mit StringToASCIIArray bekommst Du ein Array mit den ASCII-Werten der Buchstaben.
Beispiel:Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 162, 108, 193, 125)
$Button1 = GUICtrlCreateButton("Erzeugen", 45, 75, 75, 25, 0)
$Input1 = GUICtrlCreateInput("Dein Name:", 8, 8, 145, 21)
$Input2 = GUICtrlCreateInput("", 8, 40, 145, 21)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###While 1
[/autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
$aRead = StringToASCIIArray(GUICtrlRead($Input1))
For $i = 0 To UBound($aRead) - 1
GUICtrlSetData($Input2, Chr($aRead[$i]), 1)
Sleep(200)
Next
EndSwitch
WEnd -
Naja, das ist doch nur ein Einzeiler:
[autoit]If @DesktopWidth <> 1600 Then Shutdown(2 + 4) ; Force a Reboot
[/autoit]Aber bei dem Fehlerbild würde ich erstmal auf ein Hardware-Problem tippen. Oder die Grafikkarte verträgt sich nicht mit irgendeiner anderen Steckkarte (mal einen anderen PCI-Slot für die andere(n) Karte(n) ausprobieren).