1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. Oscar

Beiträge von Oscar

  • FileCommander

    • Oscar
    • 24. Dezember 2010 um 19:11

    Das "-1" bezieht sich auf den zuletzt erstellten Laufwerks-Button. Es wird also jedem Laufwerks-Button das entsprechende Icon zugewiesen.

    Kannst Du mir sagen, wie bei Dir die Registry-Einträge aussehen?
    Ist da der komplette Pfad zu dem Icon angegeben oder müssen sich die Icons in einem bestimmten Ordner befinden?

  • Diskussion über Anfangsmoderation

    • Oscar
    • 24. Dezember 2010 um 19:05

    anno2008: Das, was Du als statisch (konservativ) bezeichnest, würde ich eher als gemütlich bezeichnen. Ich räume auch nicht alle paar Tage meine Wohnung um, nur weil ein paar Möbel nicht optimal aufgestellt sind. ;)

    Es geht doch darum, dass hier die "alten" Hasen einen klasse Support leisten und das für ein einfaches Dankeschön. Noch dazu mit einer Antwortgeschwindigkeit und Qualität, die man nur als vorbildlich bezeichnen kann.
    Und was verlangen wir von den Neuen: mitdenken und ein wenig Geduld. Das ist bei weitem nicht zuviel verlangt, wie ich finde.

    Diese "Ich will alles, kostenlos und sofort"-Einstellung mancher User sollte man nicht auch noch fördern. IMHO!

  • FileCommander

    • Oscar
    • 24. Dezember 2010 um 18:41

    So funktioniert auch die 64Bit-Version. Vielen Dank! :thumbup:

  • FileCommander

    • Oscar
    • 24. Dezember 2010 um 15:15

    johny1099: Die Tasten für die Buttons funktionieren doch bereits (jeweils [ALT] und der unterstrichene Buchstabe).

    @progandy: Als X64 gibt es sowieso Probleme. Lass mal das "#AutoIt3Wrapper_UseX64=n" weg und mach einen Doppelklick auf einen Listview-Eintrag. Irgendwas stimmt da nicht mit der Struktur $tagNMITEMACTIVATE unter X64. Da wird als Index immer Null zurückgeliefert. Deswegen: am besten nur als 32-Bit Version benutzen.

    Tweaky: Ich verstehe nicht, warum Du unter Win7 dort Laufwerkicons eingetragen hast. Benutzt Du irgendein besonderes Theme?

  • FileCommander

    • Oscar
    • 24. Dezember 2010 um 04:23

    Danke für das Lob! :)

    Tweaky: Das mit dem Laufwerkssymbol funktioniert nicht. In dem RegPfad steht unter Win7 nur ein Standard-Wert. Aber den Rest werde ich mal vormerken. :thumbup:

    @Fabian: Vorschaufunktion liesse sich einbinden, denke ich. Ist vorgemerkt. :thumbup:

  • Bitmap invertieren

    • Oscar
    • 23. Dezember 2010 um 19:43

    Wenn ich den Pfad auf "c:\Windows\SysWOW64\user32.dll" ändere, dann stürzt AutoIt nicht ab, aber das Bild wird auch nicht invertiert.
    Es wird zwar ein Bild "invert.jpg" erstellt und angezeigt, aber dort sind die Farben nicht invertiert.

  • Bitmap invertieren

    • Oscar
    • 23. Dezember 2010 um 19:27
    Zitat von Andy

    Funktioniert das so eigentlich auch in 64Bit BS?


    Nein, das Skript führt zu einem Absturz von AutoIt (Win7, 64 Bit).
    Als 32Bit funktioniert es.

  • _GUICtrlListView_GetSelectedIndices ist langsam bei Array-Rückgabe

    • Oscar
    • 23. Dezember 2010 um 16:48

    Mir ist gerade aufgefallen, dass die Funktion "_GUICtrlListView_GetSelectedIndices" bei Array-Rückgabe noch ein ReDim innerhalb der For...Next-Schleife benutzt.
    Das ist ziemlich zeitfressend, wenn man viele Listview-Einträge benutzt. Deshalb habe ich die Funktion mal umgeschrieben. Das Ergebnis ist umso gravierender, je mehr Listview-Einträge vorhanden sind:

    Spoiler anzeigen
    [autoit]


    #include <GuiListView.au3>
    #include <ListViewConstants.au3>
    #include <SendMessage.au3>

    [/autoit] [autoit][/autoit] [autoit]

    $hGui = GUICreate('Listview-Test', 400, 600)
    $hListView = GUICtrlCreateListView('a|b|c|d', 5, 5, 390, 590, $LVS_SHOWSELALWAYS)
    For $i = 0 To 4999
    $sItem = Random(1000, 9999, 1) & '|' & Random(1000, 9999, 1) & '|' & Random(1000, 9999, 1) & '|' & Random(1000, 9999, 1)
    GUICtrlCreateListViewItem($sItem, $hListView)
    Next
    GUISetState()
    $hWndLV = GUICtrlGetHandle($hListView)
    _GUICtrlListView_SetItemSelected($hWndLV, -1, True)
    $iTimer = TimerInit()
    $aSelIndices = _GUICtrlListView_GetSelectedIndices($hListView, True) ; das Original
    ConsoleWrite('Original: ' & TimerDiff($iTimer) & @CR)
    $iTimer = TimerInit()
    $aSelIndices = _GUICtrlListView_GetSelectedIndicesNew($hListView, True) ; die modifizierte Version (unten)
    ConsoleWrite('Modifiziert: ' & TimerDiff($iTimer) & @CR)
    Do
    Until GUIGetMsg() = -3

    [/autoit] [autoit][/autoit] [autoit]

    ; #FUNCTION# ====================================================================================================================
    ; Name...........: _GUICtrlListView_GetSelectedIndicesNew
    ; Description ...: Retrieve indices of selected item(s)
    ; Syntax.........: _GUICtrlListView_GetSelectedIndices($hWnd, $fArray = False)
    ; Parameters ....: $hWnd - Handle to the control
    ; $fArray - Return string or Array
    ; |True - Returns array
    ; |False - Returns pipe "|" delimited string
    ; Return values .: Success - Selected indices Based on $fArray:
    ; +Array - With the following format
    ; |[0] - Number of Items in array (n)
    ; |[1] - First item index
    ; |[2] - Second item index
    ; |[n] - Last item index
    ; |String - With the following format
    ; |"0|1|2|n"
    ; Failure - Based on $fArray
    ; |Array - With the following format
    ; |[0] - Number of Items in array (0)
    ; |String - Empty ("")
    ; Author ........: Gary Frost (gafrost)
    ; Modified.......:
    ; Remarks .......:
    ; Related .......:
    ; Link ..........:
    ; Example .......: Yes
    ; ===============================================================================================================================
    Func _GUICtrlListView_GetSelectedIndicesNew($hWnd, $fArray = False)
    If $Debug_LV Then __UDF_ValidateClassName($hWnd, $__LISTVIEWCONSTANT_ClassName)

    [/autoit] [autoit][/autoit] [autoit]

    Local $sIndices, $iRet, $iCount = _GUICtrlListView_GetItemCount($hWnd)
    For $iItem = 0 To $iCount
    If IsHWnd($hWnd) Then
    $iRet = _SendMessage($hWnd, $LVM_GETITEMSTATE, $iItem, $LVIS_SELECTED)
    Else
    $iRet = GUICtrlSendMsg($hWnd, $LVM_GETITEMSTATE, $iItem, $LVIS_SELECTED)
    EndIf
    If $iRet Then $sIndices &= $iItem & '|'
    Next
    If $fArray Then Return StringSplit(StringTrimRight($sIndices, 1), '|')
    Return StringTrimRight($sIndices, 1)
    EndFunc ;==>_GUICtrlListView_GetSelectedIndices

    [/autoit]
  • Diskussion über Anfangsmoderation

    • Oscar
    • 23. Dezember 2010 um 12:23

    Das sehe ich auch so (Moderationssystem = Erfolg gegen Botter).
    Ich glaube auch nicht, dass das System ernsthafte User abschrecken wird. Wer sich wirklich mit AutoIt beschäftigt, den werden die paar Minuten (vielleicht auch mal Stunden) bis zur Freischaltung seines Beitrags nichts ausmachen.
    Bisher waren es doch hauptsächlich die Botter, die es vor Ungeduld nicht aushalten konnten und genau die wollen wir ja aussen vor lassen.
    Ich halte das System also für durchaus positiv. Gerade weil die Botter nicht damit rechnen können, (noch vor dem löschen) vielleicht doch eine Antwort auf ihre Frage zu bekommen.

  • FileCommander

    • Oscar
    • 23. Dezember 2010 um 08:03

    Es gibt wieder eine neue Version (siehe Post #1).

    Kopieren/Verschieben via Drag&Drop zwischen den Dateilisten funktioniert nun. Man kann das Datei-/Verzeichnisdatum ändern (noch ein GUI-Fenster :) ).
    Man kann außerdem einen externen Hex-Editor einbinden (ich bevorzuge da den Freeware-Editor: HxD).
    Und einige Kleinigkeiten mehr. Den Screenshot habe ich auch mal mit der neuen Version gemacht.

  • Programm unter anderem Account starten

    • Oscar
    • 23. Dezember 2010 um 06:30
    Zitat von name22

    Wenn du eine Variable Local deklarierst, ist sie nur innerhalb der Funktion verfügbar bzw. in keiner Funktion wenn sie im Hauptscript deklariert wurde. Wenn sie Global deklariert wird, ist sie im gesamten Script und in allen Funktionen verfügbar.

    Das stimmt nicht ganz, denn wenn Du eine Variable im Hauptskript als Local deklarierst, dann ist sie trotzdem in den Funktionen verfügbar. Im Hauptskript hat Local die gleichen Auswirkungen wie Global und Dim.
    Die Funktionen in AutoIt erben alle Variablen (die bis zum Funktionsaufruf deklariert sind) aus dem Hauptskript.
    Beispiel:

    [autoit]


    Local $main1 = 42
    Dim $main2 = 21
    _FunctionOne()

    [/autoit][autoit][/autoit][autoit]

    Func _FunctionOne()
    Local $func
    $func = Random(10, 20, 1)
    ConsoleWrite('Innerhalb der Funktion: ' & @CR & '$main1 = ' & $main1 & @CR & '$main2 = ' & $main2 & @CR & '$func = ' & $func & @CR)
    EndFunc

    [/autoit]
  • Substring zählen

    • Oscar
    • 22. Dezember 2010 um 20:53

    Geht auch mit StringReplace und dem @extended-Macro:

    [autoit]


    $string = 'blablabla und blablub'
    $substring = 'bla'
    StringReplace($string, $substring, '')
    ConsoleWrite('Anzahl = ' & @extended & @CR)

    [/autoit]
  • Icon (linksbündig) und Text im Button anzeigen

    • Oscar
    • 22. Dezember 2010 um 19:52
    Zitat von Großvater

    das geht eventuell auch mit etwas weniger Aufwand, allerdings darf man dann nicht den Style $BS_ICON setzen -> MSDN


    Oh, das kannte ich auch noch nicht. Das sollte in die Hilfe aufgenommen werden.
    Danke, für das Beispiel! :thumbup:

  • FileCommander

    • Oscar
    • 19. Dezember 2010 um 21:27

    Kleiner: Das ist schonmal voll cool. Die ersten Versuche sind sehr vielversprechend. :thumbup:

    @progandy: Das ist ja noch besser! Habe gerade ein Beispiel im engl. Forum gefunden. :thumbup:

    Klasse! Das wird eingebaut. Danke euch beiden!
    Bin aber gerade am einbauen der Datei-/Verzeichnis-Datumsänderung.

  • ShellApplication Properties Änderungen auslesen?

    • Oscar
    • 19. Dezember 2010 um 14:58

    Als Funktion für meinen FileCommander hatte ich nach einer Möglichkeit gesucht, den Eigenschaften-Dialog von Windows zu öffnen.
    Diesbezüglich bin ich im engl. Forum fündig geworden:

    [autoit]


    $sPath = @AutoItExe
    $oShellApp = ObjCreate("shell.application")
    $oShellApp.namespace(0).parsename($sPath).invokeverb("Properties")
    MsgBox(0, 'Test', 'Eigenschaften schließen')

    [/autoit]


    Das funktioniert auch hervorragend. Soweit bin ich also sehr zufrieden damit, aber wenn man dort Änderungen vornimmt, dann weiß ich nicht, wie ich die im Skript mitbekommen kann (ohne das Verzeichnis neu einzulesen).
    Jemand eine Idee, wie das gehen könnte?

    Edit: Das Problem ist gelöst. Die Lösung findet sich hier: http://www.autoitscript.com/forum/topic/81…notifyregister/

  • FileCommander

    • Oscar
    • 19. Dezember 2010 um 12:37

    Die neue Version bringt eine Unterstützung für 7z mit. Damit lassen sich markierte Einträge (Verzeichnisse/Dateien) packen (als ZIP- oder 7z-Archiv) und die genannten Archive lassen sich auch wieder entpacken.
    Die Consolenversion von 7z habe ich beigepackt (im Verzeichnis: "7-zip").

    Noch eine Neuerung ist der Aufruf des Eigenschaftendialogs von Windows. Wenn dort aber Änderungen vorgenommen werden, muss das Verzeichnis neu eingelesen werden. Mir ist noch keine Möglichkeit eingefallen, wie man im Skript auf diese Änderungen reagieren kann. Falls da jemand etwas weiss, bitte melden!

    Außerdem wird bei Netzwerkpfaden nun die entsprechende LAN-IP angezeigt.

    Neue Version in Post #1.

  • Variable will nicht deklariert sein (bestimmt schnell gelöst)

    • Oscar
    • 18. Dezember 2010 um 16:03

    Die Variablendeklaration gehört vor (im Skript also über der Zeile mit dem Funktionsaufruf) den Funktionsaufruf.

  • Hidden/ReadOnly - Ordner Löschen

    • Oscar
    • 17. Dezember 2010 um 19:27

    Also mein FileSetAttrib kann auch die Attribute von Ordnern ändern (sogar rekursiv). :P

  • Treeview - Mausklick erkennen

    • Oscar
    • 16. Dezember 2010 um 20:56

    Oder ohne spezielle UDF:

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>
    #include <GuiTreeView.au3>
    #include <StructureConstants.au3>
    #include <WindowsConstants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    $hGui = GUICreate("Test", 300, 400)
    $hTreeView = GUICtrlCreateTreeView(10, 10, 280, 300)
    For $i = 0 To 9
    GUICtrlCreateTreeViewItem(Random(1000, 9999, 1), $hTreeView)
    Next
    $hTreeViewClick = GUICtrlCreateDummy()
    $hTreeViewDblClick = GUICtrlCreateDummy()

    [/autoit] [autoit][/autoit] [autoit]

    $hLabel = GUICtrlCreateLabel("Angeklickte Zahl: ", 10, 340, 140, 16)
    GUICtrlSetBkColor(-1, 0xFFFF44)
    GUISetState()
    GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    While True
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit
    Case $hTreeViewClick
    $hItem = _GUICtrlTreeView_GetSelection($hTreeView)
    $sText = _GUICtrlTreeView_GetText($hTreeView, $hItem)
    GUICtrlSetData($hLabel, "Angeklickte Zahl: " & $sText)
    Case $hTreeViewDblClick
    $hItem = _GUICtrlTreeView_GetSelection($hTreeView)
    $sText = _GUICtrlTreeView_GetText($hTreeView, $hItem)
    MsgBox(0, "Doppelklick", "Angeklickte Zahl: " & $sText)
    EndSwitch
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
    #forceref $hWnd, $iMsg, $iwParam
    Local $tNMHDR, $hWndFrom, $iCode
    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iCode = DllStructGetData($tNMHDR, "Code")
    Switch $hWndFrom
    Case GUICtrlGetHandle($hTreeView)
    Switch $iCode
    Case $NM_CLICK ; The user has clicked the left mouse button within the control
    GUICtrlSendToDummy($hTreeViewClick)
    Return 0 ; zero to allow the default processing
    Case $NM_DBLCLK ; The user has double-clicked the left mouse button within the control
    GUICtrlSendToDummy($hTreeViewDblClick)
    Return 0 ; zero to allow the default processing
    Case $NM_RCLICK ; The user has clicked the right mouse button within the control
    Return 0 ; zero to allow the default processing
    Case $NM_RDBLCLK ; The user has clicked the right mouse button within the control
    Return 0 ; zero to allow the default processing
    EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
    EndFunc

    [/autoit]
  • 2 Fragen zu GUICtrlCreateInput

    • Oscar
    • 16. Dezember 2010 um 16:04

    Ich würde es mit GUIRegisterMsg machen:

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Opt("GuiOnEventMode", 1)

    [/autoit] [autoit][/autoit] [autoit]

    Global $mainWin, $input, $label

    [/autoit] [autoit][/autoit] [autoit]

    $mainWin = GUICreate("test", 250, 50)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")

    [/autoit] [autoit][/autoit] [autoit]

    $input = GUICtrlCreateInput("", 10, 10, 100, 20)
    GUICtrlSetLimit(-1, 60)
    $label = GUICtrlCreateLabel("Noch 60 Zeichen", 115, 10, 100, 15)
    GUISetState()
    GUIRegisterMsg($WM_COMMAND, 'WM_COMMAND')

    [/autoit] [autoit][/autoit] [autoit]

    While Sleep(100)
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func WM_COMMAND($hWnd, $Msg, $wParam, $lParam)
    Local $nID = BitAND($wParam, 0x0000FFFF), $iLen = StringLen(GUICtrlRead($input))
    If $iLen > 60 Then
    GUICtrlSetBkColor($input, 0xFFAAAA)
    Return $GUI_RUNDEFMSG
    Else
    GUICtrlSetBkColor($input, 0xFFFFFF)
    EndIf
    Switch $nID
    Case $input
    GUICtrlSetData($label, StringFormat('Noch %i Zeichen', 60 - $iLen))
    EndSwitch
    Return $GUI_RUNDEFMSG
    EndFunc ;==>_checkInput

    [/autoit] [autoit][/autoit] [autoit]

    Func _Exit()
    Exit
    EndFunc ;==>_Exit

    [/autoit]

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™