Ich habe das Script mal etwas angepasst, damit es auch mit der aktuellen AutoIt-Version läuft.
Jetzt auch besserer Schutz unter Windows7. Auch mit [STRG] + [ALT] + [ENTF] kann man den Schutz nicht mehr umgehen.
Alles weitere in Post #1.
Beiträge von Oscar
-
-
Der Fehler liegt beim Switch in der Funktion "_WM_NOTIFY":
[autoit]
Statt:
[/autoit]
Switch $hWndFrom
Case $ListeWE
[autoit]
Muss es:
[/autoit]
Switch $hWndFrom
Case $hListeWE
heißen. -
-
-
Wenn Du die Unterordner nicht brauchst, warum benutzt Du dann nicht "_FileListToArray"?
-
Nun, da Du kein lauffähiges Scriptbeispiel mitlieferst kann man nur raten.
In Zeile 14 addierst Du zwei "Spalten" (Trenner "|" vorhanden) in das Array $treffer_arry.
Beim erstellen des Listview benutzt Du eine Variable ($texts[$language][70]), dessen Inhalt ich nicht kenne. Wird hier ebenfalls ein Listview mit zwei Spalten erzeugt?
Wenn nein, dann hast Du Deinen Fehler gefunden.
-
Hier mal ein Beispiel:
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Opt('GUIOnEventMode', 1)Global $hGUI = GUICreate('Test', 600, 600, -1, -1, BitOR($WS_MINIMIZEBOX, $WS_CAPTION, $WS_POPUP, $WS_SYSMENU, $WS_SIZEBOX))
[/autoit] [autoit][/autoit] [autoit]
GUISetOnEvent($GUI_EVENT_CLOSE, '_End')GUISetState()
[/autoit] [autoit][/autoit] [autoit]
GUIRegisterMsg($WM_GETMINMAXINFO, "MY_WM_GETMINMAXINFO")While True
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
Sleep(100)
WEndFunc _End()
[/autoit] [autoit][/autoit] [autoit]
Exit
EndFunc ;==>_EndFunc MY_WM_GETMINMAXINFO($hWnd, $msg, $wParam, $lParam)
[/autoit]
If $hWnd = $hGUI Then
Local $minmaxinfo = DllStructCreate("int;int;int;int;int;int;int;int;int;int", $lParam)
DllStructSetData($minmaxinfo, 7, 200) ; min X
DllStructSetData($minmaxinfo, 8, 200) ; min Y
DllStructSetData($minmaxinfo, 9, 800) ; max X
DllStructSetData($minmaxinfo, 10, 800) ; max Y
EndIf
EndFunc ;==>MY_WM_GETMINMAXINFO -
Das funktioniert bei mir mit der kompilierten Exe.
Beendet sich denn Dein Programm normal? Eventuell liegt da noch ein Lock auf der Datei. Kannst Du es (Kopie) von Hand löschen? -
Möglicherweise gibt es Probleme, weil in der Funktion die Backslashes nach dem Pfad fehlen. Probiere es mal so:
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
_SelfDelete()Func _SelfDelete()
[/autoit]
Local $cmdfile
FileDelete(@TempDir & "\scratch.cmd")
$cmdfile = ':loop' & @CRLF _
& 'del "' & @ScriptFullPath & '"' & @CRLF _
& 'if exist "' & @ScriptFullPath & '" goto loop' & @CRLF _
& 'del ' & @TempDir & '\scratch.cmd'
FileWrite(@TempDir & "\scratch.cmd", $cmdfile)
Run(@TempDir & "\scratch.cmd", @TempDir, @SW_HIDE)
EndFunc -
Von mir auch alles Gute zum Geburtstag!
Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist. -
Ich schließe diesen Thread (vorerst)!
Solange Du nicht konkret sagst was Du vorhast, werden wir hier keine weitere Hilfe anbieten.Edit: Thread ist wieder offen! Die AGB der Seite verbieten das Vorhaben nicht. Aber bitte hier keine Links zu der Seite posten!
-
In der engl. Hilfe steht es unter "Language Reference - Variables":
ZitatNote that all variable names are case insensitive: MyVariable() is the same as MyvARiAblE()
-
Du kannst den Text auch aus einer Datei lesen!
Du musst nur darauf achten (Errorhandling), dass es genau so viele Texteinträge wie Treeview-Elemente gibt. Gibt es mehr Treeview-Elemente als Textarray-Elemente, dann bricht das Script mit einem Arrayfehler ab. -
Wenn irgendjemand ein Wasserzeichen in seine Bilder einbaut, dann hat das auch einen Grund!
Wir werden hier auf keinen Fall Hilfe zu dem entfernen dieser Wasserzeichen geben. [Thread closed] -
Ich würde es so machen:
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include <GUIConstantsEx.au3>
#include <TreeViewConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 253, 342, 192, 124)
$TreeView1 = GUICtrlCreateTreeView(12, 12, 229, 219)
$TreeView1_0 = GUICtrlCreateTreeViewItem("1", $TreeView1)
$TreeView1_1 = GUICtrlCreateTreeViewItem("1a", $TreeView1_0)
$TreeView1_2 = GUICtrlCreateTreeViewItem("1b", $TreeView1_0)
$TreeView1_3 = GUICtrlCreateTreeViewItem("2", $TreeView1)
$TreeView1_4 = GUICtrlCreateTreeViewItem("2a", $TreeView1_3)
$TreeView1_5 = GUICtrlCreateTreeViewItem("2b", $TreeView1_3)
$TreeView1_6 = GUICtrlCreateTreeViewItem("3", $TreeView1)
$TreeView1_7 = GUICtrlCreateTreeViewItem("3a", $TreeView1_6)
$TreeView1_8 = GUICtrlCreateTreeViewItem("3b", $TreeView1_6)
$Edit = GUICtrlCreateEdit("", 12, 230, 229, 109)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
Global $iDblClkTimer = TimerInit(), $iDoubleClickSpeed = RegRead('HKCU\Control Panel\Mouse', 'DoubleClickSpeed')
Global $aText[3][3] = [['Text1', 'Text1a', 'Text1b'],['Text2', 'Text2a', 'Text2b'],['Text3', 'Text3a', 'Text3b']] ; <- hier den zugeordneten Text eintragen
Global $iSelItem, $aSelItem, $aCursorInfoWhile 1
[/autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $GUI_EVENT_PRIMARYUP ; Linke Maustaste losgelassen
$aCursorInfo = GUIGetCursorInfo($Form1) ; GUI-Element ermitteln, damit nur beim Klick auf das Treeview reagiert wird
If $aCursorInfo[4] = $TreeView1 Then ; wenn auf's Treeview geklickt wurde, dann...
$iSelItem = StringReplace(ControlTreeView($Form1, '', $TreeView1, 'GetSelected', 1), '#', '') & '|-1' ; Index vom Treeview holen und # entfernen
$aSelItem = StringSplit($iSelItem, '|', 2) ; Index trennen
;~ ConsoleWrite($aSelItem[0] & ' ' & $aSelItem[1] & @CR)
GUICtrlSetData($Edit, $aText[$aSelItem[0]][$aSelItem[1] + 1]) ; Text in Edit-Control eintragen
If TimerDiff($iDblClkTimer) < $iDoubleClickSpeed Then ; Zeitdifferenz kleiner als Doppelklick-Geschwindigkeit, dann...
MsgBox(0, 'Test', 'Doppelklick' & @CRLF & $aText[$aSelItem[0]][$aSelItem[1] + 1]) ; <- Doppelklick-Event
EndIf
$iDblClkTimer = TimerInit()
EndIf
EndSwitch
WEndEdit: Wenn Dir die Doppelklickgeschwindigkeit nicht schnell genug ist, dann im System anpassen oder den Wert von $iDoubleClickSpeed auf die entsprechenden Millisekunden setzen.
-
Wenn ich (mit Version 3.3.10.2) den Wert (letzte Ziffer) ändere, dann erhalte ich auch einen anderen Wert für die Sekunden. An der 3.3.10.2 kann das nicht liegen.
Eventuell bereits vorher (FTP-Server liefert "falsche" Werte)? -
Ich weiß nicht so recht, ob ich das vielleicht falsch verstehe, aber suchst Du nicht einfach sowas:
Spoiler anzeigen
[autoit]
[/autoit]
#include <GUIConstantsEx.au3>
#include <TreeViewConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 253, 342, 192, 124)
$TreeView1 = GUICtrlCreateTreeView(12, 12, 229, 219)
$TreeView1_0 = GUICtrlCreateTreeViewItem("1", $TreeView1)
$TreeView1_1 = GUICtrlCreateTreeViewItem("1a", $TreeView1_0)
$TreeView1_2 = GUICtrlCreateTreeViewItem("1b", $TreeView1_0)
$TreeView1_3 = GUICtrlCreateTreeViewItem("2", $TreeView1)
$TreeView1_4 = GUICtrlCreateTreeViewItem("2a", $TreeView1_3)
$TreeView1_5 = GUICtrlCreateTreeViewItem("2b", $TreeView1_3)
$TreeView1_6 = GUICtrlCreateTreeViewItem("3", $TreeView1)
$TreeView1_7 = GUICtrlCreateTreeViewItem("3a", $TreeView1_6)
$TreeView1_8 = GUICtrlCreateTreeViewItem("3b", $TreeView1_6)
$Edit = GUICtrlCreateEdit("", 12, 230, 229, 109)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
Global $iDblClkTimer = TimerInit(), $iDoubleClickSpeed = RegRead('HKCU\Control Panel\Mouse', 'DoubleClickSpeed')
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $GUI_EVENT_PRIMARYUP ; Linke Maustaste losgelassen
$iSelItem = ControlTreeView($Form1, '', $TreeView1, 'GetSelected')
$sItemText = ControlTreeView($Form1, '', $TreeView1, 'GetText', $iSelItem)
GUICtrlSetData($Edit, $sItemText)
If TimerDiff($iDblClkTimer) < $iDoubleClickSpeed Then ; Zeitdifferenz kleiner als Doppelklick-Geschwindigkeit, dann...
MsgBox(0, 'Test', 'Doppelklick' & @CRLF & $sItemText)
EndIf
$iDblClkTimer = TimerInit()
EndSwitch
WEnd -
Merkwürdig...
Hast Du es schonmal mit "FileGetShortName" versucht? -
Kannst Du das schreiben in die Registry nicht von einem dritten Script ausführen lassen?
Parameterübergabe und dort dann #RequireAdmin benutzen? -
Also ich habe Windows 7, 64 Bit. Aber das wird es wohl kaum sein...
Welche AutoIt-Version benutzt Du?