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

Beiträge von Tweaky

  • Progressbar in Taskleiste - Absturz Win 10 64bit

    • Tweaky
    • 31. August 2015 um 20:29

    Danke @chesstiger
    Funktioniert einwandfrei unter Win 10 64bit

  • Progressbar in Taskleiste - Absturz Win 10 64bit

    • Tweaky
    • 30. August 2015 um 21:22

    Hi,
    ich habe folgendes Skript

    Spoiler anzeigen
    AutoIt
    #AutoIt3Wrapper_UseX64= y
    
    
    #NoTrayIcon
    #include <AutoItObject.au3>
    #include <WinAPI.au3>
    
    
    Global Const $TBPF_NOPROGRESS = 0
    Global Const $TBPF_INDETERMINATE = 0x1
    Global Const $TBPF_NORMAL = 0x2
    Global Const $TBPF_ERROR = 0x4
    Global Const $TBPF_PAUSED = 0x8
    
    
    Global $goflag = False
    
    
    ; register to receive the message that our button is ready
    GUIRegisterMsg(_WinAPI_RegisterWindowMessage("TaskbarButtonCreated"), "_TaskbarReady")
    
    
    ; register error handler and startup AIO
    Global $oError = ObjEvent("AutoIt.Error", "_ErrFunc")
    _AutoItObject_StartUp()
    
    
    ; get interfaces
    Global $CLSID_TaskBarlist = _AutoItObject_CLSIDFromString("{56FDF344-FD6D-11D0-958A-006097C9A090}")
    ; ITaskbarList3:  http://msdn.microsoft.com/en-us/library/dd391692(VS.85).aspx
    Global $IID_ITaskbarList3 = _AutoItObject_CLSIDFromString("{ea1afb91-9e28-4b86-90e9-9e9f8a5eefaf}")
    
    
    ; create the ITaskbarList3 interface instance
    Global $pTB3
    _AutoItObject_CoCreateInstance(DllStructGetPtr($CLSID_TaskBarlist), 0, 1, DllStructGetPtr($IID_ITaskbarList3), $pTB3)
    If Not $pTB3 Then
    	MsgBox(16, "Error", "Failed to create ITaskbarList3 interface, exiting.")
    	_AutoItObject_Shutdown()
    	Exit
    EndIf
    
    
    ; setup AIO wrapper for the interface
    Global $tagInterface = _
    		"QueryInterface long(ptr;ptr;ptr);" & _
    		"AddRef ulong();" & _
    		"Release ulong();" & _
    		"HrInit long();" & _
    		"AddTab long(hwnd);" & _
    		"DeleteTab long(hwnd);" & _
    		"ActivateTab long(hwnd);" & _
    		"SetActiveAlt long(hwnd);" & _
    		"MarkFullscreenWindow long(hwnd;int);" & _
    		"SetProgressValue long(hwnd;uint64;uint64);" & _
    		"SetProgressState long(hwnd;int);" & _
    		"RegisterTab long(hwnd;hwnd);" & _
    		"UnregisterTab long(hwnd);" & _
    		"SetTabOrder long(hwnd;hwnd);" & _
    		"SetTabActive long(hwnd;hwnd;dword);" & _
    		"ThumbBarAddButtons long(hwnd;uint;ptr);" & _
    		"ThumbBarUpdateButtons long(hwnd;uint;ptr);" & _
    		"ThumbBarSetImageList long(hwnd;ptr);" & _
    		"SetOverlayIcon long(hwnd;ptr;wstr);" & _
    		"SetThumbnailTooltip long(hwnd;wstr);" & _
    		"SetThumbnailClip long(hwnd;ptr);"
    ; create the AIO object using the wrapper
    Global $oTB3 = _AutoItObject_WrapperCreate($pTB3, $tagInterface)
    If Not IsObj($oTB3) Then
    	MsgBox(16, "Error", "Something has gone horribly awry...")
    	_AutoItObject_Shutdown()
    	Exit
    EndIf
    ; call the HrInit method to initialize the ITaskbarList3 interface
    $oTB3.HrInit()
    
    
    Global $gui = Number(GUICreate("Toolbar Progress", 250, 80))
    Global $b1 = GUICtrlCreateButton("Start Progress Bar", 10, 10)
    GUISetState()
    
    
    While 1 <> 2
    	Switch GUIGetMsg()
    		Case $b1
    			_GoProgressTest()
    		Case -3
    			ExitLoop
    	EndSwitch
    WEnd
    
    
    $oTB3 = 0
    _AutoItObject_Shutdown()
    
    
    Func _GoProgressTest()
    	While Not $goflag
    		Sleep(10)
    	WEnd
    	ConsoleWrite("here we go..." & @CRLF)
    	; go through various states and progress
    	$oTB3.SetProgressState($gui, $TBPF_INDETERMINATE)
    	Sleep(3000)
    	For $i = 0 To 33
    		$oTB3.SetProgressValue($gui, $i, 100)
    		Sleep(50)
    	Next
    	$oTB3.SetProgressState($gui, $TBPF_PAUSED)
    	For $i = 34 To 66
    		$oTB3.SetProgressValue($gui, $i, 100)
    		Sleep(50)
    	Next
    	$oTB3.SetProgressState($gui, $TBPF_ERROR)
    	For $i = 67 To 100
    		$oTB3.SetProgressValue($gui, $i, 100)
    		Sleep(50)
    	Next
    	$oTB3.SetProgressState($gui, $TBPF_NORMAL)
    	Sleep(1500)
    	$oTB3.SetProgressState($gui, $TBPF_NOPROGRESS)
    EndFunc   ;==>_GoProgressTest
    
    
    Func _TaskbarReady($hWnd, $msg, $wParam, $lParam)
    	Switch $hWnd
    		Case $gui
    			; the taskbar button is ready
    			ConsoleWrite("taskbar button ready" & @CRLF)
    			$goflag = True
    	EndSwitch
    EndFunc   ;==>_TaskbarReady
    
    
    Func _ErrFunc()
    	ConsoleWrite("! COM Error !  Number: 0x" & Hex($oError.number, 8) & "   ScriptLine: " & $oError.scriptline & " - " & $oError.windescription & @CRLF)
    	Return
    EndFunc   ;==>_ErrFunc
    Alles anzeigen


    Unter Win 7 64bit und Win 10 32bit funktioniert dies einwandfrei.
    Unter Win 10 64bit kommt allerdings folgender Fehler

    AutoIt
    AutoIt3.exe ended.rc:-1073741819

    Ich verwende die aktuelle autoitobject.au3 (1.2.8.2) von https://www.autoitscript.com/forum/topic/110379-autoitobject-udf/

    Der Fehler taucht in der Funktion _AutoItObject_StartUp(), dann __Au3Obj_Mem_DllOpen() und dann __Au3Obj_PointerCall() auf.

    Hat jemand eine Ahnung was man da ändern muß ?(

  • Dateien auf GUI - Möglichkeiten

    • Tweaky
    • 29. August 2015 um 14:04

    Hi,
    in meinen Skripten habe ich gemerkt, dass ich verschiedene Arten habe wie der Skriptbereich aussieht wo ich Dateien auf eine GUI ziehe.
    Was von den folgenden Methoden ist besser? Oder ist es egal?

    Spoiler anzeigen
    AutoIt
    #Region    ;************ Includes ************
    #include <WinAPISys.au3>
    #include <WindowsConstants.au3>
    #include <GUIConstantsEx.au3>
    #EndRegion ;************ Includes ************
    
    
    Global $aFileList
    
    
    Opt("GUIOnEventMode", 1)
    
    
    Global $GUI = GUICreate("Test", 100, 100, -1, -1, -1, $WS_EX_ACCEPTFILES)
    GUISetState()
    GUISetOnEvent($GUI_EVENT_CLOSE, "_beenden")
    
    
    
    
    ;mehrere Dateien auf die GUI ziehen und so einlesen
    Global $g_hDll = DllCallbackRegister('_WinProc', 'ptr', 'hwnd;uint;wparam;lparam')
    Global $g_pDll = DllCallbackGetPtr($g_hDll)
    Global $g_hProc = _WinAPI_SetWindowLong($GUI, $GWL_WNDPROC, $g_pDll)
    _WinAPI_DragAcceptFiles($GUI)
    
    
    
    
    
    
    While 1
    	Sleep(10)
    WEnd
    
    
    
    
    
    
    Func _WinProc($hWnd, $iMsg, $wParam, $lParam)
    	Switch $iMsg
    		Case $WM_DROPFILES
    			$aFileList = _WinAPI_DragQueryFileEx($wParam)
    			_WinAPI_DragFinish($wParam)
    			_WinAPI_MessageBeep(0) ;Ton erzeugen
    			For $i = 1 To UBound($aFileList) - 1
    				ConsoleWrite($aFileList[$i] & @CR)
    			Next
    
    
    			Return 0
    	EndSwitch
    
    
    	Return _WinAPI_CallWindowProc($g_hProc, $hWnd, $iMsg, $wParam, $lParam)
    EndFunc   ;==>_WinProc
    
    
    
    
    Func _beenden()
    	;mehrere Dateien auf die GUI ziehen und so einlesen
    	_WinAPI_SetWindowLong($GUI, $GWL_WNDPROC, $g_hProc)
    	DllCallbackFree($g_hDll)
    	Exit
    EndFunc   ;==>_beenden
    Alles anzeigen



    Spoiler anzeigen
    AutoIt
    #Region    ;************ Includes ************
    #include <WindowsConstants.au3>
    #include <GUIConstantsEx.au3>
    #EndRegion ;************ Includes ************
    
    
    Opt("GUIOnEventMode", 1)
    
    
    Global $GUI = GUICreate("Test", 100, 100, -1, -1, -1, $WS_EX_ACCEPTFILES)
    GUISetState()
    GUISetOnEvent($GUI_EVENT_CLOSE, "_beenden")
    
    
    GUIRegisterMsg(0x233, "On_WM_DROPFILES")
    
    
    While 1
    	Sleep(10)
    WEnd
    
    
    
    
    
    
    Func On_WM_DROPFILES($hWnd, $msg, $wParam, $lParam)
    	Local $tDrop, $aRet, $iCount
    	;string buffer for file path
    	$tDrop = DllStructCreate("char[260]")
    	;get file count
    	$aRet = DllCall("shell32.dll", "int", "DragQueryFile", _
    			"hwnd", $wParam, _
    			"uint", -1, _
    			"ptr", DllStructGetPtr($tDrop), _
    			"int", DllStructGetSize($tDrop) _
    			)
    	$iCount = $aRet[0]
    
    
    	;get file paths
    	For $r = 0 To $iCount - 1
    		$aRet = DllCall("shell32.dll", "int", "DragQueryFile", _
    				"hwnd", $wParam, _
    				"uint", $r, _
    				"ptr", DllStructGetPtr($tDrop), _
    				"int", DllStructGetSize($tDrop) _
    				)
    		Sleep(10)
    		ConsoleWrite(DllStructGetData($tDrop, 1) & @cr)
    	Next
    
    
    	;finalize
    	DllCall("shell32.dll", "int", "DragFinish", "hwnd", $wParam)
    
    
    	Return
    EndFunc   ;==>On_WM_DROPFILES
    
    
    
    
    
    
    Func _beenden()
    	Exit
    EndFunc   ;==>_beenden
    Alles anzeigen
  • _Excel_RangeFind - Fehler seit 3.3.14.1

    • Tweaky
    • 25. August 2015 um 21:40

    du musst noch die Einstellungen aus Post 4 dieses Threads durchführen

  • _Excel_RangeFind - Fehler seit 3.3.14.1

    • Tweaky
    • 25. August 2015 um 21:08

    Danke water, funktioniert einwandfrei

  • Zahlen in String auslesen

    • Tweaky
    • 20. August 2015 um 10:42

    probier mal das hier

    AutoIt
    $pattern = "((?i)\d+[-*\d+]*\d+)" ;Beginn: Immer mit Zahl --- Dazwischen: Zahlen oder - --- Ende: Immer mit Zahl
  • _Excel_RangeFind - Fehler seit 3.3.14.1

    • Tweaky
    • 18. August 2015 um 23:06

    Danke für die schnelle Antwort @water,
    leider klappt es auch dann nicht.
    Es kommt dann folgende Fehlermeldung.

    AutoIt
    "C:\Program Files (x86)\AutoIt3\Include\Excel.au3" (662) : ==> The requested action with this object has failed.:
    $aResult[$iIndex][5] = $oMatch.Comment.Text
    $aResult[$iIndex][5] = $oMatch.Comment^ ERROR
  • _Excel_RangeFind - Fehler seit 3.3.14.1

    • Tweaky
    • 18. August 2015 um 08:55

    Hi,
    seit ich auf 3.3.14.1 umgestiegen bin funktioniert _Excel_RangeFind nicht mehr. In 3.3.12.0 klappt es.

    So kommt bei dem Beispiel aus der Hilfe

    Spoiler anzeigen
    AutoIt
    #include <Array.au3>
    #include <Excel.au3>
    #include <MsgBoxConstants.au3>
    
    
    ; Create application object and open an example workbook
    Local $oExcel = _Excel_Open()
    If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_RangeFind Example", "Error creating the Excel application object." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
    Local $oWorkbook = _Excel_BookOpen($oExcel, @ScriptDir & "\Extras\_Excel1.xls")
    If @error Then
    	MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_RangeFind Example", "Error opening workbook '" & @ScriptDir & "\Extras\_Excel1.xls'." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
    	_Excel_Close($oExcel)
    	Exit
    EndIf
    
    
    ; *****************************************************************************
    ; Find all occurrences of value "37000" (partial match)
    ; *****************************************************************************
    Local $aResult = _Excel_RangeFind($oWorkbook, "37000")
    If @error Then Exit MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_RangeFind Example 1", "Error searching the range." & @CRLF & "@error = " & @error & ", @extended = " & @extended)
    MsgBox($MB_SYSTEMMODAL, "Excel UDF: _Excel_RangeFind Example 1", "Find all occurrences of value '37000' (partial match)." & @CRLF & "Data successfully searched.")
    _ArrayDisplay($aResult, "Excel UDF: _Excel_RangeFind Example 1", "", 0, "|", "Sheet|Name|Cell|Value|Formula|Comment")'
    Alles anzeigen


    folgender Fehler:


    AutoIt
    "C:\Program Files (x86)\AutoIt3\Include\Excel.au3" (656) : ==> The requested action with this object has failed.:
    $aResult[$iIndex][1] = $oMatch.Name.Name
    $aResult[$iIndex][1] = $oMatch^ ERROR


    Ich nutze wie vorher auch Office 2010 32bit SP2 unter Win 7 64Bit SP1.

  • Array auf Ursprungsgröße zurücksetzen

    • Tweaky
    • 17. August 2015 um 21:26

    Danke @eukalyptus
    Funktioniert nun wieder einwandfrei.

  • Array auf Ursprungsgröße zurücksetzen

    • Tweaky
    • 16. August 2015 um 02:19

    Nachdem ich nun von 3.3.12.0 auf 3.3.14.1 umgestiegen bin habe ich ein Problem mit _ManageArray festgestellt.

    Wenn eine Funktion mehrfach aufgerufen wird in der ein Array deklariert wird, so kommt nun ein Fehler.
    Mit der 3.3.12.0 hat es noch einwandfrei funktioniert.
    Kann man dies beheben oder muss ich alle Skript umändern und die Arrays am Anfang außerhalb der Funktion als Global deklarieren?

    Spoiler anzeigen
    AutoIt
    _test()
    ;funktioniert
    
    
    
    
    
    
    _test()
    ;Fehler
    ; : ==> The requested action with this object has failed.:
    ;$dictArr.Add($_sName, $aTmp)
    ;$dictArr^ ERROR
    
    
    
    
    
    
    
    
    
    
    
    
    Func _test()
    	Local $abc = _ManageArray("$abc", 0, 1)
    EndFunc   ;==>_test
    Alles anzeigen
  • Kicktipp Bundesliga 2015/2016

    • Tweaky
    • 12. August 2015 um 16:31

    In 2 Tagen gehts los. Mitmachen!!!

  • Datei auf GUI ziehen

    • Tweaky
    • 11. August 2015 um 16:12

    Danke Oscar,
    so passt es nun.

  • Datei auf GUI ziehen

    • Tweaky
    • 9. August 2015 um 20:11

    Danke für das Beispiel.
    Gibt es auch die Möglichkeit gleichzeitig 2 Dateien auf die freie Fläche neben "Datei 1" und "Datei 2" zu ziehen?

  • Datei auf GUI ziehen

    • Tweaky
    • 8. August 2015 um 15:37

    Hi,
    ich habe eine GUI in 3.3.12.0
    Darauf ziehe ich Dateien aus dem Explorer.
    Ich will die Datei entweder auf eines der beiden Labels links oder das große frei Feld rechts ziehen.

    Soweit funktioniert dies momentan.

    Fragen:
    Geht dies auch ohne das "Dummy-Label" für den rechten Bereich?
    Beim beenden kommt in der Console die Meldung "!>15:37:27 AutoIt3.exe ended.rc:-1073741819"

    Spoiler anzeigen
    AutoIt
    #Region    ;************ Includes ************
    #include <WindowsConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WinAPISys.au3>
    #EndRegion    ;************ Includes ************
    
    
    Opt("GUIOnEventMode", 1)
    
    
    Global $GUI = GUICreate("Test", 500, 55)
    Global $haupt = GUICtrlCreateLabel("", 60, 0, 440, 55)
    Global $idLabel_datei1 = GUICtrlCreateLabel("Datei 1:", 10, 10, 50, 20)
    Global $idLabel_datei2 = GUICtrlCreateLabel("Datei 2:", 10, 30, 50, 20)
    
    
    ;mehrere Dateien auf die GUI ziehen und so einlesen
    Global $g_hDll = DllCallbackRegister('_WinProc', 'ptr', 'hwnd;uint;wparam;lparam')
    Global $g_pDll = DllCallbackGetPtr($g_hDll)
    Global $g_hProc = _WinAPI_SetWindowLong($GUI, $GWL_WNDPROC, $g_pDll)
    _WinAPI_DragAcceptFiles($GUI)
    
    
    GUISetState()
    
    
    GUISetOnEvent($GUI_EVENT_CLOSE, "_beenden")
    GUICtrlSetOnEvent($idLabel_datei1, "_test")
    GUICtrlSetOnEvent($idLabel_datei2, "_test")
    GUICtrlSetOnEvent($haupt, "_test")
    
    
    While 1
    	Sleep(10)
    WEnd
    
    
    Func _test()
    	MsgBox(0, 0, @GUI_CtrlId)
    EndFunc   ;==>_test
    
    
    
    
    Func _WinProc($hWnd, $iMsg, $wParam, $lParam)
    	Local $aFileList
    
    
    	Switch $iMsg
    		Case $WM_DROPFILES
    			$aFileList = _WinAPI_DragQueryFileEx($wParam)
    			_WinAPI_DragFinish($wParam)
    
    
    			_WinAPI_MessageBeep(0) ;Ton erzeugen
    			MouseClick("")
    			Return 0
    	EndSwitch
    
    
    	Return _WinAPI_CallWindowProc($g_hProc, $hWnd, $iMsg, $wParam, $lParam)
    EndFunc   ;==>_WinProc
    
    
    
    
    
    
    
    
    Func _beenden()
    	_WinAPI_SetWindowLong($GUI, $GWL_WNDPROC, $g_hProc)
    	DllCallbackFree($g_hDll)
    	Exit
    EndFunc   ;==>_beenden
    Alles anzeigen
  • Kicktipp Bundesliga 2015/2016

    • Tweaky
    • 7. August 2015 um 20:30

    Los Leute umso mehr (ernsthaft) mitmachen um so spannender ist es.

  • Regedit navigieren Win 10

    • Tweaky
    • 3. August 2015 um 23:40

    Danke Friesel RegJump macht genau das was ist will (und mit meinem eigenen Tool bereits unter Win 7 erreicht hatte)

  • Regedit navigieren Win 10

    • Tweaky
    • 2. August 2015 um 21:40

    Meinte natürlich, dass es unter Win 7 problemlos funktioniert.

    Ich will lediglich in der Regedit zu einem bestimmten Zweig springen.

    Zum bearbeiten nehme ich natürlich die reg... Funktionen

  • Regedit navigieren Win 10

    • Tweaky
    • 2. August 2015 um 19:49

    Hi,
    folgendes Skript funktioniert unter Win 7 64bit problemlos

    AutoIt
    $titel = "Registrierungs-Editor"
    ShellExecute("Regedit.exe")
    WinWait($titel)
    $winhandle = WinGetHandle($titel)
    $treehandle = ControlGetHandle($winhandle, '', "SysTreeView321")
    ControlFocus($winhandle, '', $treehandle)
    
    
    $exist = ControlTreeView($winhandle, "", 1, "Exists", "Computer") ;Prüfung ob der Pfadteil existiert
    If $exist = 0 Then MsgBox(16, "Pfad existiert nicht", "nicht möglich")

    Unter Win 10 64bit findet er jedoch "Computer" nicht.
    Hat jemand eine Lösung.
    Laut dem AutoIt Window Info-Tool sollte es passen.

  • TrayIcon Notification Counter

    • Tweaky
    • 2. August 2015 um 00:12

    Ja den von Oscar.
    Du hast recht Raupi.
    Hab gar nicht darauf geachtet, welches Icon Oscar verwendet hat.
    Dachte er hat meines übernommen.

    Somit ist der Hintergrund transparent

  • TrayIcon Notification Counter

    • Tweaky
    • 1. August 2015 um 19:59

    Ok, darauf wäre ich nie gekommen.
    Aber statt dem DllCall kann man auch _WinAPI_ShellNotifyIcon verwenden, oder?

    Geht es auch, dass der weiße Hintergrund der Schrift transparent ist?

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™