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. autoBert

Beiträge von autoBert

  • Probleme mit Arrays

    • autoBert
    • 5. Februar 2016 um 22:31
    Zitat von Raupi

    Ich sehe kein Problem darin eine Lokale Datei für sich selbst aufzubereiten. Für mich hat das keinerlei Einfluss auf das Spiel.

    Hab ich auch kein Problem damit, war ja auch nur ein Vorschlag um ihm den Spass und Erfolg nicht zu verderben, < 2 Std. Suche im Entwicklerforum und er hätte gute Vorlagen (afair Melba) gefunden, sprich er könnte selbst schon fertig damit sein.

    Edit: deine Lösung wirft bei mir einen Fehler in der array.au3 (_ArrayUnique) muß ich wohl neu installieren.

    noch ne andere Lösung
    C
    #include <array.au3>
    #include <file.au3>
    
    
    Global $log = @MyDocumentsDir & '\RIFT\log.txt'
    Global $plog = @ScriptDir & "\pickup.txt"
    Global $file = FileRead($log)
    
    
    f1()
    
    
    Func f1()
    	Local $a_split, $z
    	Local $aResult_u = StringRegExp($file, 'Ihr erhaltet: (.*)', 3)
    	If Not @error Then
    		_ArrayDisplay($aResult_u, "RegExp Ergebnis")
    		_ArrayColInsert($aResult_u,1)
    		For $h = 0 To UBound($aResult_u) - 1
    			$a_split = StringSplit($aResult_u[$h][0], "x")
    			$aResult_u[$h][0] = StringStripWS($a_split[1], 7)
    			If $a_split[0]>1 Then
    				$aResult_u[$h][1] = Int($a_split[2])
    			Else
    				$aResult_u[$h][1] = 1
    			EndIf
    		Next
    		_ArrayDisplay($aResult_u, '2D')
    		Do
    			$aFound=_ArrayFindAll($aResult_u,$aResult_u[$z][0]);,0,0,0,2)
    			For $f=UBound($aFound)-1 to 1 Step -1
    				$aResult_u[$z][1] += $aResult_u[$aFound[$f]][1]
    				_ArrayDelete($aResult_u,$aFound[$f])
    			Next
    			$z+=1
    		Until $z = UBound($aResult_u)
    		;_FileWriteFromArray($plog, $aResult_u)
    		_ArrayDisplay($aResult_u, "2D mit Summen")
    	EndIf
    EndFunc   ;==>f1
    Alles anzeigen

    mfg autoBert

  • Makierter/ausgewählter Text (ohne Clipboard) kopieren/importieren

    • autoBert
    • 5. Februar 2016 um 21:44

    egal in welcher Anwendung geht nicht, nicht alle Anwendungen lassen sich fernsteuern.

    Du darfst es aber gerne versuchen. Berichte anschliessend bitte über Erfolg/Misserfolg.

    Selbst dieses kleine Beispiel benötigt das Mitwirken des Users: (Markiertes auf DropBox ziehen) funktioniert (ohne Änderung) nur mit URL's

    Dateien

    RichEditAsDropbox.au3 1,72 kB – 229 Downloads
  • Probleme mit Arrays

    • autoBert
    • 5. Februar 2016 um 21:31
    Zitat von thewanderer

    Wo bleibt der Spielspass, wenn man irgendwelche Funktionen durch Programme abnehmen lässt? Werde ich nie verstehen...

    Genau wie neim spielen im RL auch: wenn du Spass haben und andere abzocken willst musst du in der Lage sein deine Statistik nebenbei im Kopf zu führen.
    Und damit du weiter Spass hast solltest du dies trainieren und nicht outsourcen.

    Falls du dein Wissen in AutoIt verbessern willst: 2 Wochen sollten reichen um eine (wenn auch nicht unbedingt die beste) Lösung zu finden. Und eine gute Übung ist es außerdem. Solange du nicht selbst einen Versuch der Lösung postest, schlage ich Spasses halber 1) und zu Lernzwecken 2) vor: Niemand supported dieses Thema bis dahin.

    1) wir wollen dir ja nich deinen Spass nehmen.
    2) probieren und selbst testen ist mehr wert als etwas vorgekautes zu verwenden.

  • Coder für ein kleines Tool gesucht

    • autoBert
    • 5. Februar 2016 um 21:16

    Nenn mal die Anwendung die automatisiert werden soll. 1 mal hier ist einfacher als es in jeder Antwort zu erklären.

  • WinGetHandle als .dll Aufruf

    • autoBert
    • 4. Februar 2016 um 17:57

    Da es ein native (fest eingebaute) AutoItFunktion ist und die Lizenz sagt:

    Zitat von Jonathan Bennett and the AutoIt Team (support@autoitscript.com)

    Reverse engineering. You may not reverse engineer or disassemble the SOFTWARE PRODUCT.

    musst du dich schon direkt dahin wenden. Stell aber mal den WinTitleMatchMode auf 3 und du verzweifelst auch bei deinem AutoIt-Skript.

  • Alles gute Andy!

    • autoBert
    • 4. Februar 2016 um 16:55

    Hallo Andy,

    auch von mir alles Gute für die nächsten 50 Jahre.

    Und da du am Wochenende ja mindestens ein großes Fass aufmachst hier die Theorie dazu: http://www.oktoberfest-live.de/essen-trinken/…ng-3013152.html

    Bin mir sicher, daß du in der Praxis kein Problem damit hast. :theke:

    autoBert

  • Funktion für Zeilenanzahl

    • autoBert
    • 4. Februar 2016 um 16:17

    Dann solltest du lernen die Suche zu benutzen, denn sie ist dein wichtigstes Hilfsmittel.

  • Wörter ersetzen bsp abkürzungen vervollständigen

    • autoBert
    • 3. Februar 2016 um 23:39
    Zitat von chesstiger

    @autoBert
    Ich will dir nichts unterstellen, aber bist du sicher, dass du die Fragestellung richtig verstanden hast?
    Für mich klingt das eher nach einer Art AutoComplete-Funktion.

    Für mich auch allerdings für eine Anwendung z.B.: Word:

    Zitat von BRainXstorming

    Bei Autohotkey war es so

    Code
    ::MFG::
    Send, Mit freundlichen grüßen
    return

    Wenn dann in Word MFG geschrieben wurde wurde dies durch Mit freundlichen grüßen ersetzt.

    Gibt es da in AutoIt was vergleichbares?

    Und da ist ein Scripting.Dictonary wunderbar einszusetzen.

  • Wörter ersetzen bsp abkürzungen vervollständigen

    • autoBert
    • 3. Februar 2016 um 22:41

    Objekt: Scripting.Dictionary solltest du unbedingt lesen.

  • Combobox Inhalt einen Wert zuweisen

    • autoBert
    • 3. Februar 2016 um 13:31

    Du must die Funktion auch bei Änderun in der Combo auch aufrufen:

    Code
    While 1
    	$nMsg = GUIGetMsg()
    	Switch $nMsg
    		Case $GUI_EVENT_CLOSE
    			Exit
    		Case $Combo1   ;combobox slection changed
    			_comboread()
    	EndSwitch
    WEnd


    Des weiteren solltest du dich mit Arrays beschäftigen sons wird dein Skript unübersichtlich und schlecht wartbar. Siehe dazu: http://www.autoit.de/index.php?page=Thread&postID=164341#post164341

  • MouseClicks bei einber VM simulieren

    • autoBert
    • 3. Februar 2016 um 02:42
    Zitat von Mojo

    Evtl drücke ich mich ja falsch aus. Die VM läuft 24/7 und der User mit dem der Check laufen soll, ist auch 24/7 eingeloggt. Allerdings ist eine RDP-Verbindung in den seltensten Fällen aufgebaut, sodass weder Bild, noch Tastatur/Mouse angeschlossen ist.

    Der User ist aber nicht connected. Weils so treffend gesagt wurde:

    Zitat von Andy

    Hi,
    ohne RDP-Verbindung keine RDP-Verbindung!

    und die Lösung kennst du ja schon:

    Zitat von Mojo

    Momentan läuft das Skrpit nämlich genau zu dem Punkt, an dem ein MouseClick stattfinden soll und hält dann an bis der User connected ist.

  • Hotkeyset entfernen / befehl in einem neuen Fenster ausführen

    • autoBert
    • 3. Februar 2016 um 01:25

    Zeile 2:

    Code
    HotKeySet( "F2" [ ,"ende"])

    zeigt mir du kannst noch nicht einmal die Grundlagen. Wenn du dir diese erarbeitet und die zu automatisierende Anwendung genannt hast kannst du ja noch einmal nachfragen, sofern es nicht gegen die Forenregeln verstößt.
    Afaik ist Bluestack ein Androit-Emulator in einer Art Sandbox. Ich bezweifle dahe, daß ein Anfänger das Problem zufrieden stellend lösen kann, falls es denn lösbar ist.

  • IE - Auslesen, Stringformatierung, Error - Handling

    • autoBert
    • 3. Februar 2016 um 01:09

    Ich habe kein Problem damit hinterher über einen Einsatz zu lesen. Wenn ich/jeder aber aktuell sehen kann in XY sind Feuerwehr A-Stadt und Feuerwehr B-Stadt aktuell im Einsatz wundere ich mich schon. Daß es Personengruppen gibt, welche es sogar einsehen können müssen ist für mich absolut klar.
    Btw.: Ist eure Gendamerie genauso auskunftsfreudig? Was, wo, wieviele Fahrzeuge im Einsatz und das in Echtzeit. Wenn ja schule ich um und wandere nach Österreich aus.

  • IE - Auslesen, Stringformatierung, Error - Handling

    • autoBert
    • 3. Februar 2016 um 00:15

    Bin immer noch der Meinung, das die Seite (mit Duldung?) zwar offizielle Daten nutzt, aber es ist keine offizielle Seite:

    Code
    Hierbei handelt es sich um KEINE offizielle Applikation des OÖ. Landesfeuerwehr- verbandes (OÖLFV). Ziel der Anwendung ist es, das Bild der oberösterreichischen Feuerwehren zu stärken und feuerwehr- interessierten Personen einen Einblick in das Tagesgeschehen oberösterreichischer Feuerwehren zu geben.

    auch bin ich immer noch der Meinung daß die Seite nicht der Impressumspflicht genügt (simples Icon mit Kontakt-Link). Aber solange @Oscar oder ein anderer Mod hier nicht schliesst ist es mir recht.

    Das man Daten einer IntraNetseite (http://intranet.ooelfv.at/) ohne angemeldet zu sein zu sehen bekommt und auch auslesen kann verwundert mich etwas,denn:

    Zitat von wikipedia

    Intranet

    Ein Intranet (lat. intra ‚innerhalb‘ und engl. net ‚Netz‘) ist ein Rechnernetz, das im Gegensatz zum Internet

    kein öffentliches Netz benutzt
    nicht öffentlich ist,
    eingeschränkte Funktionen (Protokolle) bietet


    Afair habe ich etwas ähnliches (Rettungswesen/Bergwacht? auch Österreich) vor Jahren schon einmal supportet, damals hat der TE aber zu erkennen gegeben, daß es eine Seite für Übungszwecke ist. Wer sagt dir/uns denn, daß die Seite ooelfv.at nicht auch nur ein Übungsserver ist? Dies wäre besser für Vöcklabruck ATTNANG-PUCHHEIM, denn dort gibt es mindestens 1 Hirnrissigen der sinnlos die Brandmeldetaste mehrmals drückt.
    Aber auch mit Daten aus einem Übungsserver auszulesen habe ich kein Problem. Aber Daten auslesen um sich in einem Wettbewerb Vorteile zu verschaffen, damit habe ich Probleme.

    mfg autoBert

  • IE - Auslesen, Stringformatierung, Error - Handling

    • autoBert
    • 2. Februar 2016 um 21:50

    Armes Österreich, wenn jetzt schon Privatleute eigentlich hoheitliche Seiten unter eigenem Namen hosten müssen. Und wieder andere sich erst selbst die Werkzeuge erstellen müssen um die hoheitlichen Aufgaben erledigen zu können.

    Halte du (und auch andere) dich bitte zurück bis sich ein Moderator dazu geäussert hat.

    Im übrigen solltest du den Ersteller der Seite darüber informieren, daß er gegen § 5 Abs. 1 E-Commerce-Gesetz (ECG) verstößt, denn ich kann gar nicht (und erst recht nicht leicht) die geforderten Infos abrufen!

  • IE - Auslesen, Stringformatierung, Error - Handling

    • autoBert
    • 2. Februar 2016 um 21:22

    Lies dir die Forenregeln durch und versuch jetzt nicht mir/uns zu erklären das es sich um echte
    Einsätze handelt. Ich hab die URL in deinem Skript

    Code
    Global $aIE = _IECreate("http://ooe.martinhochreiter.at")

    aufgerufen für mich eindeutig ein Simulationsspiel = eindeutig gegen die Forenregeln. Oder kann in Oberösterreich jeder mitlesen wo es im Moment etwas zu sehen gibt. Wieviel zusätzliche Einsatzkräfte benötigt ihr um die ganzen Schaulistigen im Zaun zu halten?

  • IE - Auslesen, Stringformatierung, Error - Handling

    • autoBert
    • 2. Februar 2016 um 21:06

    auch wenn es sich dabei um deine eigene Feuerwehreinsatsimulation handelt, Spieleautomation wird hier grundsätzlich nicht unterstützt!

  • MouseClicks bei einber VM simulieren

    • autoBert
    • 2. Februar 2016 um 20:49
    Zitat von Andy

    Hi,
    ohne RDP-Verbindung keine RDP-Verbindung!


    finde den Like Button nicht deshalb so: Besser und kürzer hätte man es nicht schildern können!

    Hättest ihn aber ruhig selber denken lassen können. Auch Brain muß trainiert werden.

  • Benötige hilfe bei einer Schalterfunktion.

    • autoBert
    • 2. Februar 2016 um 20:41

    Lies denn heut zu Tage keiner mehr die Hilfe?

    => Beispiel zu HotKeySet solltest du anschauen!

  • Grafik an Mauszeiger anhängen..

    • autoBert
    • 2. Februar 2016 um 20:32

    Hier ein Beispiel für Drag & Drop im TreeView (vor langer Zeit im Entwicklerforum gefunden):

    C
    #AutoIt3Wrapper_AU3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
    #include <GUIConstantsEx.au3>
    #include <TreeViewConstants.au3>
    #include <WindowsConstants.au3>
    #include <GuiTreeView.au3>
    #include <Constants.au3>
    #include <Array.au3>
    
    
    Opt("GUICloseOnESC", 0)
    Opt("GUIOnEventMode", 1)
    Opt('MustDeclareVars', 1)
    
    
    Global $sTitle = "Treeview Drag & Drop Editing"
    ;Required global constants:
    Global $bTreeDrag = False, $bTreeEdit = False, $hDragItem, $hTreeDragImage, $iTVItemPos
    
    
    Global $hGui = GUICreate($sTitle, 400, 300, -1, -1, -1, -1)
    
    
    GUICtrlCreateLabel("Drag and drop separate items or branches to move them." & _
    		@LF & "To start edit selected item, LMB on item or press Enter." & _
    		@LF & "To end editing, LMB outside item (apply) or Esc (cancel) / Enter (apply)." & _
    		@LF & "To insert new item press Insert, to delete existing item press Delete.", 30, 10, 340, 60)
    Global $cTree = GUICtrlCreateTreeView(50, 75, 300, 200, BitOR($TVS_HASBUTTONS, $TVS_HASLINES, $TVS_LINESATROOT, $TVS_EDITLABELS))
    GUICtrlSetState(-1, $GUI_DROPACCEPTED)
    Global $idTVItemStart = GUICtrlCreateDummy()
    Global $idTVItem_1 = GUICtrlCreateTreeViewItem("item 1", $cTree)
    Global $idTVItem_1a = GUICtrlCreateTreeViewItem("item 1a", $idTVItem_1)
    Global $idTVItem_1b = GUICtrlCreateTreeViewItem("item 1b", $idTVItem_1)
    Global $idTVItem_2 = GUICtrlCreateTreeViewItem("item 2", $cTree)
    Global $idTVItem_2a = GUICtrlCreateTreeViewItem("item 2a", $idTVItem_2)
    Global $idTVItem_3 = GUICtrlCreateTreeViewItem("item 3", $cTree)
    Global $idTVItem_3a = GUICtrlCreateTreeViewItem("item 3a", $idTVItem_3)
    Global $idTVItem_3a1 = GUICtrlCreateTreeViewItem("item 3a1", $idTVItem_3a)
    Global $idTVItem_4 = GUICtrlCreateTreeViewItem("item 4", $cTree)
    Global $idTVItemEnd = GUICtrlCreateDummy()
    ;treeview with images test:
    Global $hImgList = _GUIImageList_Create(16, 16)
    For $ii = 1 To $idTVItemEnd - $idTVItemStart
    	_GUIImageList_AddIcon($hImgList, "shell32.dll", 60 + $ii * 2)
    Next
    _GUICtrlTreeView_SetNormalImageList(GUICtrlGetHandle($cTree), $hImgList)
    Global $a = 0
    For $i = $idTVItemStart + 1 To $idTVItemEnd - 1
    	_GUICtrlTreeView_SetImageIndex($cTree, _GUICtrlTreeView_GetItemHandle($cTree, $i), $a)
    	_GUICtrlTreeView_SetSelectedImageIndex($cTree, _GUICtrlTreeView_GetItemHandle($cTree, $i), $a)
    	$a += 1
    Next
    
    
    Global $idLblInfo = GUICtrlCreateLabel("", 50, 280, 300, 15)
    
    
    GUISetOnEvent($GUI_EVENT_CLOSE, "SysEvents")
    GUISetOnEvent($GUI_EVENT_MOUSEMOVE, "SysEvents")
    GUISetOnEvent($GUI_EVENT_PRIMARYUP, "SysEvents")
    GUIRegisterMsg($WM_NOTIFY, "On_WM_NOTIFY")
    
    
    GUISetState()
    
    
    While 1
    	Sleep(200)
    	;add Enter, Esc, Delete and Insert key functionality to treeview edit:
    	TreeKeyboardFunc($cTree)
    WEnd
    
    
    Func SysEvents()
    	Local $hTree = GUICtrlGetHandle($cTree), $hItem, $aHwnd, $hItemHover, $aRect, $iTreeY
    	Switch @GUI_CtrlId
    		Case $GUI_EVENT_CLOSE
    			Exit
    		Case $GUI_EVENT_PRIMARYUP
    			If $bTreeDrag Then
    				_WinAPI_InvalidateRect($hTree)
    				$bTreeDrag = False
    				_GUIImageList_Destroy($hTreeDragImage) ;delete drag image
    				_SendMessage($hTree, $TVM_SELECTITEM, $TVGN_DROPHILITE, 0) ;remove DropTarget
    				_SendMessage($hTree, $TVM_SETINSERTMARK, 0, 0) ;remove InsertMark
    				If (TreeItemFromPoint($hTree) = $hDragItem) Then ContinueCase
    				;move item:
    				$hItem = TreeItemCopy($hTree, $hDragItem, TreeItemFromPoint($hTree), $iTVItemPos)
    				If $hItem <> 0 Then
    					_GUICtrlTreeView_SelectItem($hTree, $hItem)
    					_GUICtrlTreeView_Delete($hTree, $hDragItem)
    				EndIf
    			EndIf
    		Case $GUI_EVENT_MOUSEMOVE
    			If $bTreeDrag = False Then ContinueCase
    			$aHwnd = DllCall("user32.dll", "hwnd", "WindowFromPoint", "uint", MouseGetPos(0), "uint", MouseGetPos(1))
    			;cancel drag in progress and cleanup if moved outside treeview:
    			If ($aHwnd[0] <> $hTree) Then
    				$bTreeDrag = False
    				_WinAPI_InvalidateRect($hTree)
    				_GUIImageList_Destroy($hTreeDragImage) ;delete drag image
    				_SendMessage($hTree, $TVM_SELECTITEM, $TVGN_DROPHILITE, 0) ;remove DropTarget
    				_SendMessage($hTree, $TVM_SETINSERTMARK, 0, 0) ;remove InsertMark
    				ContinueCase
    			EndIf
    			$hItemHover = TreeItemFromPoint($hTree)
    			If $hItemHover = 0 Then
    				;meh
    			Else
    				$aRect = _GUICtrlTreeView_DisplayRect($hTree, $hItemHover)
    				$iTreeY = _WinAPI_GetMousePosY(True, $hTree)
    				Switch $iTreeY
    					Case $aRect[1] To $aRect[1] + Int(($aRect[3] - $aRect[1]) / 4)
    						_SendMessage($hTree, $TVM_SELECTITEM, $TVGN_DROPHILITE, 0) ;remove DropTarget
    						_SendMessage($hTree, $TVM_SETINSERTMARK, 0, $hItemHover) ;add InsertMark before item
    						$iTVItemPos = -1
    					Case 1 + $aRect[1] + Int(($aRect[3] - $aRect[1]) / 3) To $aRect[1] + Int(($aRect[3] - $aRect[1]) * 2 / 3)
    						_SendMessage($hTree, $TVM_SETINSERTMARK, 0, 0) ;remove InsertMark
    						_SendMessage($hTree, $TVM_SELECTITEM, $TVGN_DROPHILITE, $hItemHover) ;add DropTarget
    						$iTVItemPos = 0
    					Case 1 + $aRect[1] + Int(($aRect[3] - $aRect[1]) * 2 / 3) To $aRect[3]
    						_SendMessage($hTree, $TVM_SELECTITEM, $TVGN_DROPHILITE, 0) ;remove DropTarget
    						_SendMessage($hTree, $TVM_SETINSERTMARK, 1, $hItemHover) ;add InsertMark after item
    						$iTVItemPos = 1
    				EndSwitch
    			EndIf
    			DrawDragImage($hTree, $hTreeDragImage)
    	EndSwitch
    EndFunc   ;==>SysEvents
    ;   TreeItemFromPoint()
    ;   Returns handle of tree item under mouse:
    Func TreeItemFromPoint($hWnd)
    	Local $tMPos = _WinAPI_GetMousePos(True, $hWnd)
    	Return _GUICtrlTreeView_HitTestItem($hWnd, DllStructGetData($tMPos, 1), DllStructGetData($tMPos, 2))
    EndFunc   ;==>TreeItemFromPoint
    ;   TreeItemCopy()
    ;   Copies tree item $hItemSource and all its children to an item $hItemTarget, depending on $fDirection
    ;   $fDirection:
    ;           -1 = before $hItemTarget
    ;           0 = inside $hItemTarget
    ;           1 = after $hItemTarget
    Func TreeItemCopy($hWnd, $hItemSource, $hItemTarget, $fDirection)
    	;making sure parent can't be dropped onto one of its descendants:
    	Local $hTest = $hItemTarget, $hPrev, $hNew, $hRecSource
    	Do
    		$hTest = _GUICtrlTreeView_GetParentHandle($hWnd, $hTest)
    		If $hTest = $hItemSource Then Return 0
    	Until $hTest = 0
    	;create new item at determined position
    	Local $sText = _GUICtrlTreeView_GetText($hWnd, $hItemSource)
    	Local $hParent = _GUICtrlTreeView_GetParentHandle($hWnd, $hItemTarget)
    	Switch $fDirection
    		Case -1
    			$hPrev = _GUICtrlTreeView_GetPrevSibling($hWnd, $hItemTarget)
    			If $hPrev = 0 Then
    				$hNew = _GUICtrlTreeView_AddFirst($hWnd, $hItemTarget, $sText)
    			Else
    				$hNew = _GUICtrlTreeView_InsertItem($hWnd, $sText, $hParent, $hPrev)
    			EndIf
    		Case 0
    			$hNew = _GUICtrlTreeView_InsertItem($hWnd, $sText, $hItemTarget)
    		Case 1
    			$hNew = _GUICtrlTreeView_InsertItem($hWnd, $sText, $hParent, $hItemTarget)
    		Case Else
    			Return 0
    	EndSwitch
    	;save item state and checkbox image if there is such
    	_GUICtrlTreeView_SetState($hWnd, $hNew, _GUICtrlTreeView_GetState($hWnd, $hItemSource))
    	If _GUICtrlTreeView_GetStateImageList($hWnd) <> 0 Then
    		_GUICtrlTreeView_SetStateImageIndex($hWnd, $hNew, _GUICtrlTreeView_GetStateImageIndex($hWnd, $hItemSource))
    	EndIf
    	;save icon/selected image indexes
    	If _GUICtrlTreeView_GetNormalImageList($hWnd) <> 0 Then
    		_GUICtrlTreeView_SetImageIndex($hWnd, $hNew, _GUICtrlTreeView_GetImageIndex($hWnd, $hItemSource))
    		_GUICtrlTreeView_SetSelectedImageIndex($hWnd, $hNew, _GUICtrlTreeView_GetSelectedImageIndex($hWnd, $hItemSource))
    	EndIf
    	;recurse through descendants:
    	Local $iChildCount = _GUICtrlTreeView_GetChildCount($hWnd, $hItemSource)
    	If $iChildCount > 0 Then
    		For $i = 0 To $iChildCount - 1
    			$hRecSource = _GUICtrlTreeView_GetItemByIndex($hWnd, $hItemSource, $i)
    			TreeItemCopy($hWnd, $hRecSource, $hNew, 0)
    		Next
    	EndIf
    	Return $hNew
    EndFunc   ;==>TreeItemCopy
    Func On_WM_NOTIFY($hWnd, $Msg, $wParam, $lParam)
    	#forceref $hWnd, $Msg
    	;wparam = cid, lparam = pnmh
    	If $wParam = $cTree Then
    		Local $tNMHDR = DllStructCreate("hwnd hTree;uint;int code", $lParam)
    		Local $code = DllStructGetData($tNMHDR, "code")
    		Local $hTree = HWnd(DllStructGetData($tNMHDR, "hTree"))
    		Switch $code
    			Case $TVN_BEGINDRAGA, $TVN_BEGINDRAGW
    				$bTreeDrag = True
    				$hDragItem = TreeItemFromPoint($hTree)
    				_GUICtrlTreeView_SelectItem($hTree, $hDragItem)
    				_GUICtrlTreeView_SetSelected($hTree, _GUICtrlTreeView_GetSelection($hTree), False)
    				$hTreeDragImage = TreeCreateDragImage($hTree, $hDragItem)
    				DrawDragImage($hTree, $hTreeDragImage)
    			Case $TVN_BEGINLABELEDITA, $TVN_BEGINLABELEDITW
    				$bTreeEdit = True
    				_SendMessage($hTree, $TVM_GETEDITCONTROL, 0, 0)
    			Case $TVN_ENDLABELEDITW, $TVN_ENDLABELEDITW
    				$bTreeEdit = False
    				Return 1
    			Case $TVN_SELCHANGEDW
    				Local $tNMTREEVIEW = DllStructCreate($tagNMTREEVIEW, $lParam)
    				;Local $hSel = DllStructGetData($tNMTREEVIEW, "NewhItem")
    				Local $hSel = DllStructGetData($tNMTREEVIEW, "NewParam")
    				If $hSel > 0 Then
    					Local $sTxt = "Currently selected: " & _GUICtrlTreeView_GetText($hTree, $hSel) & " (item handle " & $hSel & ")"
    					GUICtrlSetData($idLblInfo, $sTxt)
    					ConsoleWrite($sTxt & @CRLF)
    				EndIf
    			Case Else
    		EndSwitch
    		;
    	EndIf
    EndFunc   ;==>On_WM_NOTIFY
    Func KeyPressed($iHexKey)
    	Local $aRet = DllCall('user32.dll', "int", "GetAsyncKeyState", "int", $iHexKey)
    	If BitAND($aRet[0], 1) Then Return 1
    	Return 0
    EndFunc   ;==>KeyPressed
    Func TreeKeyboardFunc($cID)
    	Local $hWnd = GUICtrlGetHandle($cID)
    	If $bTreeDrag Then Return
    	If $bTreeEdit Then
    		If KeyPressed(0x0d) Then _SendMessage($hWnd, $TVM_ENDEDITLABELNOW, 0, 0) ;enter
    		If KeyPressed(0x1b) Then _SendMessage($hWnd, $TVM_ENDEDITLABELNOW, 1, 0) ;esc
    	EndIf
    	Local $aRet = DllCall('user32.dll', 'hwnd', 'GetFocus')
    	If $aRet[0] = $hWnd Then
    		If KeyPressed(0x2d) Then _GUICtrlTreeView_Add($hWnd, _GUICtrlTreeView_GetSelection($hWnd), "New Item") ;insert
    		If KeyPressed(0x2e) Then _GUICtrlTreeView_Delete($hWnd, _GUICtrlTreeView_GetSelection($hWnd)) ;delete
    		If KeyPressed(0x0d) Then _SendMessage($hWnd, $TVM_EDITLABELA, 0, _GUICtrlTreeView_GetSelection($hWnd)) ;enter
    	EndIf
    EndFunc   ;==>TreeKeyboardFunc
    Func TreeCreateDragImage($hWnd, $hItem)
    	;if treeview has imagelist, use image from it
    	If _GUICtrlTreeView_GetNormalImageList($hWnd) <> 0 Then Return _GUICtrlTreeView_CreateDragImage($hWnd, $hItem)
    	;if not, create a bitmap of dragitem's text rectangle and put it into imagelist.
    	Local $aItemRect = _GUICtrlTreeView_DisplayRect($hWnd, $hItem, True)
    	Local $iImgW = $aItemRect[2] - $aItemRect[0]
    	Local $iImgH = $aItemRect[3] - $aItemRect[1]
    	Local $hTreeDC = _WinAPI_GetDC($hWnd)
    	Local $hMemDC = _WinAPI_CreateCompatibleDC($hTreeDC)
    	Local $hMemBmp = _WinAPI_CreateCompatibleBitmap($hTreeDC, $iImgW, $iImgH)
    	Local $hMemBmpOld = _WinAPI_SelectObject($hMemDC, $hMemBmp)
    	_WinAPI_BitBlt($hMemDC, 0, 0, $iImgW, $iImgH, $hTreeDC, $aItemRect[0], $aItemRect[1], $SRCCOPY)
    	_WinAPI_SelectObject($hMemDC, $hMemBmpOld)
    	_WinAPI_ReleaseDC($hWnd, $hTreeDC)
    	_WinAPI_DeleteDC($hMemDC)
    	Local $hImgList = _GUIImageList_Create($iImgW, $iImgH, 6)
    	_GUIImageList_Add($hImgList, $hMemBmp)
    	_WinAPI_DeleteObject($hMemBmp)
    	Return $hImgList
    EndFunc   ;==>TreeCreateDragImage
    ; Draw drag image
    ; by Gary Frost (gafrost) (?)
    Func DrawDragImage(ByRef $hControl, ByRef $aDrag)
    	Local $tPoint, $hDC
    	$hDC = _WinAPI_GetWindowDC($hControl)
    	$tPoint = _WinAPI_GetMousePos(True, $hControl)
    	_WinAPI_InvalidateRect($hControl)
    	_GUIImageList_Draw($aDrag, 0, $hDC, DllStructGetData($tPoint, "X") - 10, DllStructGetData($tPoint, "Y") - 8)
    	_WinAPI_ReleaseDC($hControl, $hDC)
    EndFunc   ;==>DrawDragImage
    Alles anzeigen

    hoffe du kannst damit etwas anfangen,

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™