Beiträge von BugFix
-
-
Ein Tool für eine komfortablere Kommentierung im Skript.
- Aktivierung und Deaktivierung per Hotkey, Modus ist sichtbar durch geändertes Cursor-Symbol (Hand)
- Fortlaufend schreiben und der Kommentar bricht automatisch um und setzt hinter dem Code in der Folgezeile spaltengleich positioniert fort.
- Bei automatischem Umbruch können für Zeilenende und -Fortsetzung optional Zeichen/-folgen festgelegt werden um optisch sofort zusammenhängende Zeilen zu erkennen
- Umbruch automatisch an definierter Spaltenposition oder manuell durch Pfeil-ab
- Es muß nicht fortlaufend jede Zeile beschrieben werden, sondern es können auch Zeilen übersprungen werden
- Um wirksam zu werden ist ein Neustart von SciTE erforderlichEdit 14.02.2012: kleine Ergänzung, s. blaue Markierung
Edit 15.02.2012: Falls es nicht wie gewollt klappt, werft mal einen Blick hier hin. Dort könnten schon einige Hinweise zur Lösung sein.
Edit 16.02.2012: Wie ihr hier im Thread seht, gab es bei Pitter Probleme. Deshalb noch Folgendes:
- Der Eintrag in der "SciTEStartup.lua" MUSS am Ende, also hinter EventClass:BeginEvents() erfolgen.
- Sollten trotzdem die Ereignisse Pfeiltaste-Ab und Lerzeichen nicht erkannt werden, hilft i.A. einen zusätzlichen, sinnlosen Befehl im Skript zu verbauen, der die Funktion etwas 'bremst'
Bsp.:Spoiler anzeigen
Code
Alles anzeigenfunction CommentHitKey:OnKey(_keycode) local Keycode = _keycode or nil -- Sinnfrei, nur zum Abbremsen <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< if fCommentModeOn then -- fortsetzender Kommentarmodus ist aktiv local fBreak = isLFpos() if _keycode == 32 and fBreak then -- Leerzeichen u. Position für Zeilenwechsel erreicht (automatischer Zeilenwechsel) fNext = true -- Marker neue Zeile elseif _keycode == 40 then -- Pfeil_ab (manueller Zeilenwechsel) fNext = true fIsNewLine = true -- Marker neue Zeile und Marker in-neuer-Zeile elseif fNext then -- in neuer Zeile ==> Kommentarzeichen einfügen fNext = false if not fIsNewLine then -- bei automatischem Wechsel (wenn in den properties ein Umbruchsymbol definiert): editor:InsertText(editor.CurrentPos, charBreak1) -- am Ende Umbruchsymbol aus den properties anhängen end ContinuousComment() end end return nil endEdit 17.02.2012
- Ich habe die Positionsabfrage jetzt verändert, mit der vorigen Methode wurden auch 'halbe Tabs', also Tabs, die z.B. nach 2 Leerzeichen gesetzt wurden, voll mit 4 Leerzeichen ersetzt, was zu Verschiebungen führt.
Nun erhalte ich direkt die Spaltenposition aus der Zeile. Version: 0.6
- Und für die Nutzer von SciTE-RU habe ich auch die entsprechende Version erstellt.Edit 18.02.2012: [NEUE FUNKTIONEN]
- Bei Auto-Umbruch wird das letzte Wort einer Zeile, wenn es die Umbruchmarkierung überschreitet, in die Folgezeile übernommen.
- Manuell kann auch mit ENTER umgebrochen werden. Dann wird hinter der aktuellen Zeile eine Leerzeile eingefügt und genauso positioniert der Kommentar fortgeschrieben. Die Umbruchmarkierungen werden wie beim Auto-Umbruch gesetzt. Dazu ist ein weiterer Eintrag in den properties erforderlich um diese Funktion optional zu de/aktivieren (s. Installationshinweise).Und hier ein kleines Bild dazu:
Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist. Beschreibung
Code
Alles anzeigenFUNKTION: Kontinuierlicher Kommentar Modus ---------------------------------------------------------------------------------------------------------------------------------- BESCHREIBUNG Per Hotkey wird die Funktion aktiviert. Dabei wird an der aktuellen Cursorposition die in den properties ('ContinuousComment.Chars.*.au3') festgelegte Zeichenfolge gesetzt (z.B. "; =="). AUTO UMBRUCH: In den properties 'ContinuousComment.LFpos.*.au3' wird festgelegt an welcher Spaltenposition ein automatischer Wechsel auf die nächste Zeile erfolgen soll (Trigger: Leerzeichen an Position gleich od. größer Spaltenangabe aus den properties). Man kann also einfach fortlaufend seinen Kommentar schreiben und er wird automatisch in der Folgezeile hinter dem Code, an derselben Spaltenposition wie in der vorigen Zeile, fortgesetzt. Ist der Code in der Folgezeile länger, beginnt der Kommentar erst dahinter. Überschreitet der Code die Umbruchposition, so wird das letzte Wort mit in die neue Zeile übernommen MANUELLER UMBRUCH: Manuell kann jeder Zeit mit "Pfeil ab" auf die Folgezeile gewechselt werden. Soll in der Folgezeile kein Kommentar erscheinen, kann wiederum mit "Pfeil ab" zur nächsten Zeile gewechselt werden (in der momentanen Zeile wird dann kein Kommentarzeichen gesetzt). Ausserdem kann mit <ENTER> ein manueller Umbruch erzeugt werden mit gleichzeitigem Einfügen einer Leerzeile. Dabei wird die Umbruchmarkierung (sofern in den properties festgelegt) genau wie beim manuellen Umbruch erzeugt. Der Kommentar wird wiederum spaltengenau fortgesetzt. Beendet wird der Kontinuierliche-Kommentar-Modus wiederum mit dem Hotkey, das auch zum Start verwendet wird. ---------------------------------------------------------------------------------------------------------------------------------- INSTALLATION Das Skript "ContinuousComments.lua" im Ordner "..\SciTE\LUA\" speichern. Einträge in "SciTEUser.properties": ContinuousComment.LFpos.*.au3=170 <== gewünschte Position für automatischen Zeilenwechsel beim Kommentar schreiben ContinuousComment.Chars.*.au3=; <== Zeichenfolge mit der jede Kommentarzeile beginnt (Leerzeichen wird automatisch angefügt) ContinuousComment.BreakCharsLast.*.au3=˜ ˜ › <== [optional] Zeichen am Zeilenende bei automatischem Umbruch ContinuousComment.BreakCharsNext.*.au3=› <== [optional] Zeichen am Anfang der Folgezeile bei automatischem Umbruch ContinuousComment.NewLine.WithEnter.Enable.*.au3' <== neue Zeile (mit Kommentar an derselben Position) einfügen mit Enter im Kommentar-Modus (=1) # 36 Comment Continuous command.name.36.*=Kommentarmodus aktivieren command.36.*=CommentModeActivate command.mode.36.*=subsystem:lua,savebefore:no command.shortcut.36.*=Ctrl+Shift+K <== gewünschter Hotkey Eintrag in "..\SciTE\LUA\SciTEStartup.lua" LoadLuaFile("ContinuousComments.lua") <== Am Dateiende einfügen!! ----------------------------------------------------------------------------------------------------------------------------------So sieht das Skript dazu aus:
v 0.7
Code
Alles anzeigen-- TIME_STAMP 2012-02-18 00:16:13 v 0.7 CommentHitKey = EventClass:new(Common) local ext = props['FileExt'] local lfPos = tonumber(props['ContinuousComment.LFpos.*.' .. ext]) local charComm = props['ContinuousComment.Chars.*.' .. ext]..' ' local charBreak1 = props['ContinuousComment.BreakCharsLast.*.' .. ext] local charBreak2 = props['ContinuousComment.BreakCharsNext.*.' .. ext] local fNewLine = false if tonumber(props['ContinuousComment.NewLine.WithEnter.Enable.*.' .. ext]) == 1 then fNewLine = true end local fCommentModeOn, fNext, fIsNewLine, fIsEnter = false, false, false, false local lastLine, column, col local getSpaces = function() col = editor.Column[editor.CurrentPos] local s = '' if col < column then s = string.rep(' ', column - col) end return s end local isLFpos = function() local pos = editor.Column[editor.CurrentPos] if pos >= lfPos then return true else return false end end local ContinuousComment = function() local autoBreak, w = '', '' if not fIsNewLine then local pos = editor.Column[editor.CurrentPos] if pos > lfPos then editor:WordLeftExtend() w = editor:GetSelText() editor:ReplaceSel('') end editor:GotoLine(editor:LineFromPosition(editor.CurrentPos) +1) if charBreak2:len() > 0 then autoBreak = charBreak2..' ' end else fIsNewLine = false end local strAdd = ' ' editor:LineEnd() strAdd = getSpaces() or strAdd editor:InsertText(editor.CurrentPos, strAdd..charComm..autoBreak..w) editor:LineEnd() end function CommentHitKey:OnKey(_keycode) if fCommentModeOn then -- fortsetzender Kommentarmodus ist aktiv local fBreak = isLFpos() if fIsEnter then fIsEnter = false local s, e = getSpaces(), '' if charBreak2:len() > 0 then e = charBreak2..' ' end editor:InsertText(editor.CurrentPos, s..charComm..e) editor:LineEnd() end if _keycode == 13 then fIsEnter = true editor:InsertText(editor.CurrentPos, ' '..charBreak1) editor:LineEnd() elseif _keycode == 32 and fBreak then -- Leerzeichen u. Position fð² šeilenwechsel erreicht (automatischer Zeilenwechsel) fNext = true -- Marker neue Zeile elseif _keycode == 40 then -- Pfeil_ab (manueller Zeilenwechsel) fNext = true fIsNewLine = true -- Marker neue Zeile und Marker in-neuer-Zeile elseif fNext then -- in neuer Zeile ==> Kommentarzeichen einfð§¥® fNext = false if not fIsNewLine then -- bei automatischem Wechsel (wenn in den properties ein Umbruchsymbol definiert): editor:InsertText(editor.CurrentPos, charBreak1) -- am Ende Umbruchsymbol aus den properties anh寧en end ContinuousComment() end end return nil end function CommentModeActivate() if not fCommentModeOn then editor:LineEnd() column = editor.Column[editor.CurrentPos] editor.Cursor = 8 -- Cursor wechseln (Hand) editor:InsertText(editor.CurrentPos, charComm) editor:LineEnd() else editor.Cursor = -1 -- Cursor zurück auf Standard end fCommentModeOn = not fCommentModeOn endVersion für SciTE-RU
v 0.2
Code
Alles anzeigen-- TIME_STAMP 2012-02-18 00:16:28 v 0.2 --[[ FUNCTION: Continuous Comment Mode ---------------------------------------------------------------------------------------------------------------------------------- DESCRIPTION The function is activated using a hotkey. If the mode is active, the cursor appears as a hand. At the current cursor position will inserted chars from properties ('ContinuousComment.Chars.*.au3') e.g. "; ==". AUTO BRAKE: In properties 'ContinuousComment.LFpos.*.au3' is determinate at which position should skip to next line. It's triggered by press key <space> and position is greater than or equal to position from properties. So you can continuous write comments and if the breakpoint is reached - automatically jumps the cursor to next line and inserts command-char at the same position like in line before. If length of code in next line greather than the comment start position before, the comment in this line starts behind the code. Optional, contiguous comment with automatic line breaks are marked by additional break character. If the last word in line overrides the breakposition, this word will moved to next line. MANUALLY BRAKE: You can manually skip to next line by press key <arrow down>. To appear in the next line no comment can turn "down arrow" to the next line to be changed (in the current row will be no comment character set). In addition, a manual break can generated with simultaneous insertion of a blank line by hit the <ENTER> key. Markers are set, as with a manual break. The comment is continued at the same position like before. Stops the continuous-comment mode again with the hotkey, which is also used for launch. The cursor is reset. ---------------------------------------------------------------------------------------------------------------------------------- INSTALLATION Rename the attached file to "ContinuousCommentsRu.lua". Save the script "ContinuousCommentsRu.lua" to folder "..\SciTE-RU\tools\". entries in "SciTEUser.properties": ContinuousComment.LFpos.*.au3=170 <== line position for automatically line break ContinuousComment.Chars.*.au3=; <== Character(s) that begins each comment line ContinuousComment.BreakCharsLast.*.au3=˜ ˜ › <== [optional] Character(s) at line end on rows with automatically line break ContinuousComment.BreakCharsNext.*.au3=› <== [optional] Character(s) at next line on rows with automatically line break (in front of your text) ContinuousComment.NewLine.WithEnter.Enable.*.au3' <== insert new line (with comment at same position) by hit ENTER in comment mode (=1) # 36 Comment Continuous command.name.36.*=Activate Comment Mode command.36.*=CommentModeActivate command.mode.36.*=subsystem:lua,savebefore:no command.shortcut.36.*=Ctrl+Shift+K <== desired hotkey entrie in "..\SciTE-RU\tools\SciTEStartup.lua" dofile (props["SciteDefaultHome"].."\\tools\\ContinuousCommentsRu.lua") <== at the end of the file !! ---------------------------------------------------------------------------------------------------------------------------------- ]] --[[ FUNKTION: Kontinuierlicher Kommentar Modus ---------------------------------------------------------------------------------------------------------------------------------- BESCHREIBUNG Per Hotkey wird die Funktion aktiviert. Dabei wird an der aktuellen Cursorposition die in den properties ('ContinuousComment.Chars.*.au3') festgelegte Zeichenfolge gesetzt (z.B. "; =="). AUTO UMBRUCH: In den properties 'ContinuousComment.LFpos.*.au3' wird festgelegt an welcher Spaltenposition ein automatischer Wechsel auf die nächste Zeile erfolgen soll (Trigger: Leerzeichen an Position gleich od. größer Spaltenangabe aus den properties). Man kann also einfach fortlaufend seinen Kommentar schreiben und er wird automatisch in der Folgezeile hinter dem Code, an derselben Spaltenposition wie in der vorigen Zeile, fortgesetzt. Ist der Code in der Folgezeile länger, beginnt der Kommentar erst dahinter. Überschreitet der Code die Umbruchposition, so wird das letzte Wort mit in die neue Zeile übernommen MANUELLER UMBRUCH: Manuell kann jeder Zeit mit "Pfeil ab" auf die Folgezeile gewechselt werden. Soll in der Folgezeile kein Kommentar erscheinen, kann wiederum mit "Pfeil ab" zur nächsten Zeile gewechselt werden (in der momentanen Zeile wird dann kein Kommentarzeichen gesetzt). Ausserdem kann mit <ENTER> ein manueller Umbruch erzeugt werden mit gleichzeitigem Einfügen einer Leerzeile. Dabei wird die Umbruchmarkierung (sofern in den properties festgelegt) genau wie beim manuellen Umbruch erzeugt. Der Kommentar wird wiederum spaltengenau fortgesetzt. Beendet wird der Kontinuierliche-Kommentar-Modus wiederum mit dem Hotkey, das auch zum Start verwendet wird. ---------------------------------------------------------------------------------------------------------------------------------- INSTALLATION Das Skript "ContinuousCommentsRu.lua" im Ordner "..\SciTE-RU\tools\" speichern. Einträge in "SciTEUser.properties": ContinuousComment.LFpos.*.au3=150 <== gewünschte Position für automatischen Zeilenwechsel beim Kommentar schreiben ContinuousComment.Chars.*.au3=; <== Zeichenfolge mit der jede Kommentarzeile beginnt (Leerzeichen wird automatisch angefügt) ContinuousComment.BreakCharsLast.*.au3=˜ ˜ › <== [optional] Zeichen am Zeilenende bei automatischem Umbruch ContinuousComment.BreakCharsNext.*.au3=› <== [optional] Zeichen am Anfang der Folgezeile bei automatischem Umbruch ContinuousComment.NewLine.WithEnter.Enable.*.au3' <== neue Zeile (mit Kommentar an derselben Position) einfügen mit Enter im Kommentar-Modus (=1) # 36 Comment Continuous command.name.36.*=Kommentarmodus aktivieren command.36.*=CommentModeActivate command.mode.36.*=subsystem:lua,savebefore:no command.shortcut.36.*=Ctrl+Shift+K <== gewünschter Hotkey Eintrag in "..\SciTE-RU\tools\SciTEStartup.lua" dofile (props["SciteDefaultHome"].."\\tools\\ContinuousCommentsRu.lua") <== Am Dateiende anfügen! ---------------------------------------------------------------------------------------------------------------------------------- ]] local lfPos = tonumber(props['ContinuousComment.LFpos.*.au3']) local charComm = props['ContinuousComment.Chars.*.au3']..' ' local charBreak1 = props['ContinuousComment.BreakCharsLast.*.au3'] local charBreak2 = props['ContinuousComment.BreakCharsNext.*.au3'] local fNewLine = false if tonumber(props['ContinuousComment.NewLine.WithEnter.Enable.*.au3']) == 1 then fNewLine = true end local fCommentModeOn, fNext, fIsNewLine, fIsEnter = false, false, false, false local lastLine, column, col local getSpaces = function() col = editor.Column[editor.CurrentPos] local s = '' if col < column then s = string.rep(' ', column - col) end return s end local isLFpos = function() local pos = editor.Column[editor.CurrentPos] if pos >= lfPos then return true else return false end end local ContinuousComment = function() local autoBreak, w = '', '' if not fIsNewLine then local pos = editor.Column[editor.CurrentPos] if pos > lfPos then editor:WordLeftExtend() w = editor:GetSelText() editor:ReplaceSel('') end editor:GotoLine(editor:LineFromPosition(editor.CurrentPos) +1) if charBreak2:len() > 0 then autoBreak = charBreak2..' ' end else fIsNewLine = false end local strAdd = ' ' editor:LineEnd() strAdd = getSpaces() or strAdd editor:InsertText(editor.CurrentPos, strAdd..charComm..autoBreak..w) editor:LineEnd() end AddEventHandler("OnKey", function(_keycode) if fCommentModeOn then -- fortsetzender Kommentarmodus ist aktiv local fBreak = isLFpos() if fIsEnter then fIsEnter = false local s, e = getSpaces(), '' if charBreak2:len() > 0 then e = charBreak2..' ' end editor:InsertText(editor.CurrentPos, s..charComm..e) editor:LineEnd() end if _keycode == 13 then fIsEnter = true editor:InsertText(editor.CurrentPos, ' '..charBreak1) editor:LineEnd() elseif _keycode == 32 and fBreak then -- Leerzeichen u. Position fð² šeilenwechsel erreicht (automatischer Zeilenwechsel) fNext = true -- Marker neue Zeile elseif _keycode == 40 then -- Pfeil_ab (manueller Zeilenwechsel) fNext = true fIsNewLine = true -- Marker neue Zeile und Marker in-neuer-Zeile elseif fNext then -- in neuer Zeile ==> Kommentarzeichen einfð§¥® fNext = false if not fIsNewLine then -- bei automatischem Wechsel (wenn in den properties ein Umbruchsymbol definiert): editor:InsertText(editor.CurrentPos, charBreak1) -- am Ende Umbruchsymbol aus den properties anh寧en end ContinuousComment() end end return nil end) function CommentModeActivate() if not fCommentModeOn then editor:LineEnd() column = editor.Column[editor.CurrentPos] editor.Cursor = 8 -- Cursor wechseln (Hand) editor:InsertText(editor.CurrentPos, charComm) editor:LineEnd() else editor.Cursor = -1 -- Cursor zurück auf Standard end fCommentModeOn = not fCommentModeOn end -
wo ist das? kann ich sehen ob diese Pfadvariablen noch stimmen?
Kannst du: -
Systemanwendungen brauchen keinen Pfad, der ist bei den Pfadvariablen registriert. Es reicht also vollkommen:
[autoit]Run('calc.exe')
[/autoit]
[autoit]
Alternativ wäre dies der korrekte Pfad:Run(@SystemDir & '\calc.exe')
[/autoit] -
Und wenn du Antworten auf deine Fragen bekommst, solltest du diese lesen und auch testen.
Dann hättest du gemerkt, dass mein Pattern die eckigen Klammern nicht zurückgibt. Und nochmal: Eine Pipe im Set - was soll das? Ein Set setzt ein ODER für alle im Set enthaltenen Zeichen, das ist ja dessen Sinn. Deshalb ist es genauso unsinnig zweimal eine Negation "^" zu setzen.
Setze dich bitte gründlich mit der Hilfe auseinander, das bringt dich am Besten voran.Im übrigen stimme ich Andy zu: In AutoIt solltest du RegExp nur dann einsetzen, wenn es dir einen Vorteil gegenüber String-Funktionen verschafft.
-
Schalte beim Kompilieren auf jedenfall den UPX-Packer ab. Der wird häufig als Schädling interpretiert.
-
Was soll die Pipe im Set?
mit [XYZ] bildest du ein Set, das nach dem enthaltenen Pattern sucht. Mit "[^\[\]]" hast du ein negierendes Set, d.h. du bekommst alles ausser den im Set angegebenen Zeichen. Quantifier kannst du selber anhängen, wenn du nicht jedes Zeichen einzeln haben willst. -
Metazeichen - dazu gehören die Klammern - müssen mit einem Backslash maskiert werden: \[
-
Schau mal in die AutoIt-Hilfe, welchen Datentyp
[autoit]_StringBetween
[/autoit]zurückgibt.

-
Wenn du ein Mehrdimensionales Array hast, kannst du auch nur mehrdimensionale Elemente übergeben. Du versuchst ein 1D-Array zu übergeben, dass ja gar nicht existiert.
Ausserdem stimmt schon die Deklaration nicht. Du deklarierst [2][2] und setzt Elemente für ein [3][2] - Array
Oder soll das keine Deklaration darstellen sondern die Zuweisung an das Arrayelement [2][2] ?
Übergeben könntest du zum Bsp. $array[0][0] -
warum benutzt Du dann nicht die GetExtensionName-Methode.
Boah, da fragst du mich was nach 3 1/2 Jahren...
-
Bau dir am einfachsten direkt in die Funktion deine Ausschlußordner ein:
[autoit]Func _ShowSubFolders($Folder, $Ext='*', $Dir=-1, $Delim=@CRLF)
[/autoit]
If Not IsDeclared("strFiles") Then Global $strFiles = ''
If ($Dir = -1) Or ($Dir = 0) Then
For $file In $Folder.Files
If $Ext <> '*' Then
If StringRight($file.Name, StringLen($Ext)) = $Ext Then _
$strFiles &= $file.Path & $Delim
Else
$strFiles &= $file.Path & $Delim
EndIf
Next
EndIf
For $Subfolder In $Folder.SubFolders
; ================================= Hier die auszuschließenden Ordner einbinden ===================================================================
If $Folder = "Dein_Start_Pfad" And ($Subfolder = "UnterOrdner1_zum_Ausschluß" Or $Subfolder = "UnterOrdner2_zum_Ausschluß" .....) Then ContinueLoop
; ==================================================================================================================================================
If ($Dir = -1) Or ($Dir = 1) Then $strFiles &= $Subfolder.Path & '\' & $Delim
_ShowSubFolders($Subfolder, $Ext, $Dir, $Delim)
Next
EndFunc -
Ganz simpel:
Umlaute gehören NIEMALS in Datei-/Ordnernamen. Auch wenn die deutsche Windows-Version solchen Quatsch zuläßt - es beißt sich - wie du siehst - sehr schnell mit anderen Anwendungen. -
Boah, alles stückweise. Wie wär es denn, wenn du uns dein Skript zeigst?

Edit:
[autoit]
Falls da was mit dem Format nicht stimmt, verwende mal Folgendes um das Format der Zelle auf "Number" zu setzen:$oExcel = _ExcelBookOpen($Path, 0)
[/autoit]
; ....
$oExcel.Activesheet.Range($Spalte & $Zeile).NumberFormat = "#"
;== $Spalte & $Zeile in der Form "A1" -
Ist das jetzt eine AutoIt-Frage (Zugriff auf Excel mit Skript) oder eine pure Excel-Frage?
-
Hau in die Tasten Alter. Auf ein Neues.

-
Also da ja viele bei größeren Projekten in teams arbeiten währe es doch toll wenn man gleich sehen würde was der jeweils andere gerade coded.
Also ich halte es nicht für sinnvoll so etwas zu integrieren, zumal der Aufwand sicher dem Nutzen entgegensteht. Derartige Tools gibt es doch bereits in sehr guter Qualität (z.B. Gobby). Nach meiner Erfahrung werden diese aber wenig genutzt. -
allerdings bekomme ich es nicht ganz hin, dass
es wieder rückgänig gemacht wird, wenn der Coursor nicht über de Control liegt.
Da hast du vergessen die Statusvariable zu verwenden, wie in $var's Skript zu sehen.Hier mal kurz, ungetestet:
[autoit]#include <GUIConstantsEx.au3>
[/autoit][autoit][/autoit][autoit]
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
;~ $CheckboxHover = GUICtrlCreatePic("C:\Users\User\Documents\My\CheckboxHover.jpg", 64, 56, 54, 55)
$picOn = "C:\Users\User\Documents\My\CheckboxOn.jpg"
$picOff = "C:\Users\User\Documents\My\CheckboxOff.jpg"
$fState = False$Form1 = GUICreate("Form1", 183, 165, 192, 124)
[/autoit][autoit][/autoit][autoit]
$Checkbox = GUICtrlCreatePic($picOff, 64, 56, 54, 55)GUISetState(@SW_SHOW)
[/autoit][autoit][/autoit][autoit]While 1
[/autoit]
$nMsg = GUIGetMsg()
$Pos = GuiGetCursorInfo()
Switch $Pos[4]
Case $Checkbox
If Not $fState Then
GUICtrlSetImage($Checkbox, $picOn)
$fState = True
EndIf
Case Else
If $fState Then
GUICtrlSetImage($Checkbox, $picOff)
$fState = False
EndIf
EndSwitch
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd -
Wo ist dein Code?
Warum verwendest du überhaupt die Handle? Sehe dafür keinerlei Notwendigkeit, deshalb wäre es hilfreich deinen Code zu sehen. -
$var
Warum prüfst du die Position ab um zu wissen, ob die Maus über dem Control ist?
Schau mal in die Hilfe zu: "GUIGetCursorInfo"Code$array[4] = ID des Controls, über dem sich der Mauszeiger gerade befindet (0 wenn nicht über einem Item)
Es läßt sich also direkt die Control-ID vergleichen.