Beiträge von Oscar
-
-
Hier mal ein Zitat aus der Hilfe zu GuiSwitch:
ZitatUsing the tabitemID allow to create new control in the specified tabitem control. Don't forget to close tabitem definition GUICtrlCreateTabItem("")
Und hier ein Beispielscript:Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include <GUIConstantsEx.au3>$hGui = GUICreate("My GUI Tab", 400, 300)
[/autoit] [autoit][/autoit] [autoit]GUICtrlCreateTab(10, 10, 380, 280)
[/autoit] [autoit][/autoit] [autoit]
$idTab0 = GUICtrlCreateTabItem("tab0")
$idTab1 = GUICtrlCreateTabItem("tab1")
GUICtrlCreateLabel("label1", 30, 80, 50, 20)
$idTab2 = GUICtrlCreateTabItem("tab2")
GUICtrlSetState(-1, $GUI_SHOW)
$idListView = GUICtrlCreateListView("1|2", 20, 50, 160, 140)
GUICtrlCreateTabItem("")
GUISetState(@SW_SHOW)
Sleep(2000)
GUICtrlDelete($idListView)GUISwitch($hGui, $idTab2)
[/autoit] [autoit][/autoit] [autoit]
$idListView = GUICtrlCreateListView("A|B", 20, 50, 160, 140)
GUICtrlCreateTabItem("")Do
[/autoit]
Until GUIGetMsg() = $GUI_EVENT_CLOSE -
Naja, da bleibt die Frage, ob es in 100 Jahren noch ein funktionierendes M-Disc-Laufwerk gibt?


-
Das Problem ist bekannt! Du musst einmalig die AutoIt-Cookies löschen, dann funktioniert es wieder.
-
Unter dem Punkt "Benutzer, die heute online waren", werde ich nicht geführt, obwohl ich nach Mitternacht bereits on war. Habe von einem anderen PC aus nachgesehen und das unangemeldet und auch jetzt als angemeldetet Userin bin ich nicht als "Benutzer, die heute online waren" geführt.
In der Liste tauche ich auch nicht auf. -
Genau das ist das Problem! Du erstellst die Buttons während die MessageLoop-Schleife bereits läuft.
Die Button-Variablen haben als "Vorbelegung" den Wert Null. Die Null von $iMsg stimmt also mit der "Vorbelegung" überein und somit wird dieser Switch-Case-Zweig ausgeführt.Bei dynamisch erzeugten Control-Elementen würde ich immer den OnEventMode einsetzen, denn dort kann man einfach jedem Control-Element eine Funktion zuordnen.
Mit Hilfe von @GUI_CtrlId erhält man dann (innerhalb der Funktion) die ControlId, wenn man den Button anklickt. -
Und wie bekomm ich es jetzt hin das mein erstelltes GUI nach einem Klick auf Ja geöffnet wird?
Du schreibst die Zeile an den Anfang Deines Scripts. Alles, was nach der If-Anweisung folgt, wird bei "Ja" abgearbeitet. -
Das ist doch nur ein Einzeiler:
[autoit]If MsgBox(4, 'test', 'Ja oder Nein das ist hier die Frage') = 7 Then Exit
[/autoit] -
Bei den Dateianhängen ist die Dateiendung "au3" nicht erlaubt.
Die max. Dateigröße ist mit 1 MB auch zu gering. -
Hier mal eine Funktion, um eine Datei vom Anwender umbenennen zu lassen.
Man übergibt den Dateinamen (Pfad kann man auch relativ übergeben, wird von der Funktion umgewandelt) und die Funktion übernimmt die Interaktion mit dem Anwender.AutoIt
Alles anzeigen$sTestfile = @ScriptDir & '\test.txt' $hFile = FileOpen($sTestfile, 2) If $hFile <> -1 Then FileWrite($hFile, 'abc') FileClose($hFile) EndIf TraySetState(2) $hGui = GUICreate('Hauptfenster', 640, 480) GUISetState(@SW_SHOW, $hGui) $sNewFilename = _FileRenameBox('test.txt', Default, $hGui) ConsoleWrite('error: ' & @error & @CR & 'Neuer Dateiname: "' & $sNewFilename & '"' & @CR) While True Switch GUIGetMsg() Case -3 Exit EndSwitch WEnd ;=============================================================================== ; Function Name: _FileRenameBox($sOldFilename[, $sTitle = Default][, $hParent = 0]) ; Description: Hiermit kann man eine Datei umbenennen (mit Anwender-Interaktion) ; Parameter(s): $sOldFilename = die Datei, die umbenannt werden soll (muss existieren) ; $sTitle = Ein Text, der als Titelzeile für das Fenster verwendet wird (optional) ; $hParent = das Handle zum Parent-Fenster (optional) ; Requirement(s): - ; Return Value(s): Im Erfolgsfall wird der neue Dateiname zurückgegeben. ; ansonsten: wird ein Leerstring zurückgegeben und ; @error = 1 -> FileMove schlug fehl (z.B. Rechteproblem) ; @error = 2 -> Der Anwender hat das umbenennen abgebrochen ; @error = 3 -> Die Datei existiert nicht ; Author(s): oscar (www.autoit.de) ;=============================================================================== Func _FileRenameBox($sOldFilename, $sTitle = Default, $hParent = 0) $sOldFilename = FileGetLongName($sOldFilename, 1) ; evtl. vorhandenen relativen Pfad umwandeln If Not FileExists($sOldFilename) Then Return SetError(3, 0, '') ; wenn die Datei nicht existiert, dann Funktion abbrechen If $sTitle = Default Or $sTitle = '' Then $sTitle = 'Datei umbenennen...' Local $sPath = StringRegExpReplace($sOldFilename, '(.+\\).+', '$1') ; nur der Pfad vom alten Dateinamen Local $sFilename = StringRegExpReplace($sOldFilename, '.+\\(.+)', '$1') ; nur der Dateiname Local $iError = 0 ; Variable zur Fehlerbehandlung ; nachfolgend ein paar lokale Konstanten deklarieren, falls diese im Hauptscript nicht deklariert wurden If Not IsDeclared('GUI_EVENT_CLOSE') Then Local Const $GUI_EVENT_CLOSE = -3 If Not IsDeclared('WS_SYSMENU') Then Local Const $WS_SYSMENU = 0x00080000 If Not IsDeclared('WS_CAPTION') Then Local Const $WS_CAPTION = 0x00C00000 If Not IsDeclared('ES_READONLY') Then Local Const $ES_READONLY = 0x0800 If Not IsDeclared('ES_AUTOHSCROLL') Then Local Const $ES_AUTOHSCROLL = 0x0080 If Not IsDeclared('GUI_DISABLE') Then Local Const $GUI_DISABLE = 0x80 If Not IsDeclared('GUI_ENABLE') Then Local Const $GUI_ENABLE = 0x40 If Not IsDeclared('GUI_FOCUS') Then Local Const $GUI_FOCUS = 0x100 If Not IsDeclared('WS_EX_STATICEDGE') Then Local Const $WS_EX_STATICEDGE = 0x00020000 Local $sNewFilename = $sFilename, $fFileExists = False Local $iWidth = 480, $iHeight = 260, $iLeft = -1, $iTop = -1 If IsHWnd($hParent) Then ; wenn ein Parent-Fenster vorhanden ist, dann... Local $aPos = WinGetPos($hParent) ; die Position des Fensters holen If $aPos[0] <> -32000 Then ; wenn das Fenster nicht minimiert ist, dann... $iLeft = $aPos[0] + $aPos[2] / 2 - $iWidth / 2 ; die Box relativ zu diesem ausrichten $iTop = $aPos[1] + $aPos[3] / 2 - $iHeight / 2 EndIf GUISetState(@SW_DISABLE, $hParent) ; das Parent-Fenster deaktivieren Else TraySetState(2) ; wenn kein Parent-Fenster vorhanden, dann das Tray-Icon ausblenden EndIf Local $iOldOpt = Opt('GUIOnEventMode', 0) ; auf MessageLoop-Modus schalten und alten Zustand merken Local $hGui = GUICreate($sTitle, $iWidth, $iHeight, $iLeft, $iTop, BitOR($WS_SYSMENU, $WS_CAPTION), Default, $hParent) GUISetFont(9, 400, 0, 'Tahoma', $hGui, 5) GUISetBkColor(0xE0E0E0, $hGui) GUISetIcon('shell32.dll', -24, $hGui) GUICtrlCreateGroup('Pfad:', 10, 10, 460, 52) GUICtrlCreateInput($sPath, 20, 30, 440, 23, BitOR($ES_READONLY, $ES_AUTOHSCROLL)) GUICtrlSetFont(-1, 10, 400, 0, 'Tahoma', 5) GUICtrlSetBkColor(-1, 0xFFFFD0) GUICtrlCreateGroup('', -99, -99, 1, 1) GUICtrlCreateGroup('Dateiname (alt):', 10, 70, 460, 52) GUICtrlCreateLabel('"' & $sFilename & '"', 20, 92, 440, 24) GUICtrlSetFont(-1, 10, 400, 0, 'Tahoma', 5) GUICtrlCreateGroup('', -99, -99, 1, 1) GUICtrlCreateGroup('Dateiname (neu):', 10, 130, 460, 56) Local $idNewFilename = GUICtrlCreateInput($sNewFilename, 20, 152, 440, 24) GUICtrlSetFont(-1, 10, 400, 0, 'Tahoma', 5) GUICtrlCreateGroup('', -99, -99, 1, 1) Local $idRename = GUICtrlCreateButton('Umbenennen', 240, 200, 120, 25) Local $idCancel = GUICtrlCreateButton('Abbrechen', 370, 200, 100, 25) Local $idStatus = GUICtrlCreateLabel(' Bitte den neuen Dateinamen eingeben...', -2, 240, 484, 20, -1, $WS_EX_STATICEDGE) GUICtrlSetFont(-1, 10, 400, 0, 'Tahoma', 5) GUICtrlSetState($idNewFilename, $GUI_FOCUS) GUISetState(@SW_SHOW, $hGui) While True Switch GUIGetMsg() Case $GUI_EVENT_CLOSE, $idCancel $iError = 2 ExitLoop Case $idRename $sNewFilename = StringRegExpReplace(GUICtrlRead($idNewFilename), '.*\\(.+)', '$1') ; evtl. eingegebenen Pfad abtrennen If Not FileExists($sPath & $sNewFilename) Then ; nur umbenennen, wenn bisher keine Datei mit dem neuen Namen existiert $iError = FileMove($sOldFilename, $sPath & $sNewFilename) = 0 ; $iError bekommt hier den Wert "1", wenn das umbenennen nicht geklappt hat ExitLoop ; While-Schleife verlassen EndIf EndSwitch $sNewFilename = GUICtrlRead($idNewFilename) If $sNewFilename <> StringRegExpReplace($sNewFilename, '.*\\(.+)', '$1') Then GUICtrlSetData($idNewFilename, StringRegExpReplace($sNewFilename, '.*\\(.+)', '$1')) If $sNewFilename <> '' And $sPath & $sNewFilename <> $sOldFilename Then ; wenn ein neuer Dateiname eingegeben wurde, dann... If BitAND(GUICtrlGetState($idRename), $GUI_DISABLE) Then If FileExists($sPath & $sNewFilename) Then If Not $fFileExists Then GUICtrlSetData($idStatus, ' Achtung! Es existiert bereits eine Datei mit diesem Namen!') $fFileExists = True Else GUICtrlSetState($idRename, $GUI_ENABLE) ; den "Umbenennen"-Button aktivieren GUICtrlSetData($idStatus, ' Bitte den neuen Dateinamen eingeben...') $fFileExists = False EndIf EndIf Else If $fFileExists Then GUICtrlSetData($idStatus, ' Bitte den neuen Dateinamen eingeben...') $fFileExists = False If BitAND(GUICtrlGetState($idRename), $GUI_ENABLE) Then GUICtrlSetState($idRename, $GUI_DISABLE) ; sonst deaktivieren GUICtrlSetData($idStatus, ' Bitte den neuen Dateinamen eingeben...') EndIf EndIf WEnd If IsHWnd($hParent) Then GUISetState(@SW_ENABLE, $hParent) ; das Parent-Fenster wieder aktivieren GUIDelete($hGui) ; das Eingabefenster löschen Opt('GUIOnEventMode', $iOldOpt) ; und den alten Zustand wiederherstellen If $iError Then Return SetError($iError, 0, '') Return SetError(0, 0, $sPath & $sNewFilename) EndFuncScreenshot:
_FileRenameBox.png -
Ok (diverse Tests später), das Verhalten ist doch etwas komplizierter.
Ein verschieben der Datei (mit gesetztem R-Attribut) ist nur auf dem gleichen Laufwerk möglich.
Sobald man versucht, die Datei auf ein anderes Laufwerk zu verschieben, verhält sich FileMove wie FileCopy. Es wird also eine Kopie erstellt und das Original bleibt erhalten.Jetzt verstehe ich zumindest, warum das mal funktioniert und mal nicht.
So ganz einleuchtend finde ich das aber nicht. READONLY würde ich auch für "nicht löschen" (wird beim FileMove ja eigentlich gemacht) ansehen.
Naja, damit ist das Thema erledigt. -
So:
[autoit]
[/autoit]
#include <Array.au3>
Global $string = 'computername|mitarbeiter' & @CRLF & 'xyz|Heinz, Karl' & @CRLF & 'zxy|Mann, Manfred'
Global $aTemp = StringSplit($string, @CRLF, 3)
Global $aOut[UBound($aTemp)][2], $aSplit
For $i = 0 To UBound($aTemp) - 1
$aSplit = StringSplit($aTemp[$i], '|', 2)
If UBound($aSplit) > 2 Then ReDim $aOut[UBound($aTemp)][UBound($aSplit)]
For $j = 0 To UBound($aSplit) - 1
$aOut[$i][$j] = $aSplit[$j]
Next
Next
_ArrayDisplay($aOut) -
Mir ist noch etwas aufgefallen: und zwar, werden die neuen Beiträge nicht mehr im Forum angezeigt.
Hier mal zwei Screenshots:
Bei der Forenübersicht wird mir angezeigt, dass es 4 neue Beiträge gibt:
Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.
Aber wenn ich dann in das Forum wechsle, dann kann ich die neuen nicht von den alten unterscheiden:
Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist. Früher waren die neuen Beiträge mit einem Sternchen gekennzeichnet.
-
Mir ist gerade etwas komisches aufgefallen. Und zwar kann man mit FileMove Dateien umbenennen und/oder verschieben, obwohl sie das READONLY-Attribut besitzen.
Ich bin mir nicht ganz sicher, ob das schon immer so war, aber meiner Meinung nach ist das doch ein Fehler, oder?
Hier mal ein Testscript:Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
$sTestfile = @ScriptDir & '\test.txt'
$hFile = FileOpen($sTestfile, 2)
If $hFile <> -1 Then
FileWrite($hFile, 'abc')
FileClose($hFile)
FileSetAttrib($sTestfile, '+R')
EndIfFileMove($sTestfile, @ScriptDir & '\test\test_umbenannt.txt',
[/autoit]
-
Poste bitte das komplette Script!
Mit diesem Auszug kann man Dir nicht helfen. -
Heute angemeldet, das erste Script mit _ImageSearch, Du suchst nach "Karotten" und "Acker", Du postest nicht Dein komplettes Script.
Das alles sind klare Indizien für ein Botscript. Also klär uns doch mal auf, wofür das sein soll. -
Bilder, die man in den Beitrag eingefügt hat, werden nicht mehr im Beitrag angezeigt, sondern nur als Link.
Beispiel: Video-Archiv -
Um mal eine andere Möglichkeit vorzuschlagen:
Schau Dir mal das Beispiel zu "_WinAPI_ShellChangeNotifyRegister" an (neue AutoIt-Version).
Damit kannst Du das Verzeichnis überwachen und bekommst eine Meldung, sobald sich etwas ändert (mit der entsprechenden Datei). -
- "Der Prozessor wird vorgeheizt. Bitte warten!"
- "Ich muss noch kurz die Bits und Bytes einparken!"
- "Das abwaschen und abtrocknen der Daten dauert noch etwas!" -
Wir hatten hier ja schonmal so etwas wie ein Punktesystem (Anzahl der Posts) und das führte eben genau zu dem Verhalten, dass möglichst viel gepostet (negative Qualität) wurde.
Ich kann hier AspirinJunkie und Andy nur zustimmen. Ein Bewertungssystem (wie auch immer) verändert das Postingverhalten. Und ich glaube nicht, dass es positiv ausfällt.
Mir ist das Forum, so wie es ist, immer noch am liebsten.