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

Beiträge von mirko2002

  • Problem mit _Excel_BookOpen und WinAPI

    • mirko2002
    • 11. Januar 2017 um 08:52

    Ich hab nochmal etwas bezüglich dem Excel_BookOpen...

    Nachdem die Arbeitsmappe geöffnet wurde soll er natürlich in der Datei Daten einfügen. In meinem Skript beginne ich immer damit, dass in der besagten Excel-Datei eine leere Zeile eingefügt wird (und anschliessend dann die Daten).

    Ab und zu in meinen Tests bricht dort mein Skript aber ab... hier mal der Ausschnitt:


    AutoIt
    Local $oExcelapp = _Excel_Open(False,False,True,True,True)
    		Local $oExcel = _Excel_BookOpen($oExcelapp, $sFile, False, True, "123")
    		Do
    			$file_open_test = _WinAPI_FileInUse($sFile)
    			Sleep(250)
    		Until $file_open_test = 1
    		_Excel_RangeInsert($oExcel.Activesheet, "2:2")
    		GUICtrlSetData($progress, "25")
    		_Excel_RangeWrite ($oExcel,Default, @MDAY&"."&@MON&"."&@YEAR , "A2")
    		GUICtrlSetData($progress, "30")
    		_Excel_RangeWrite ($oExcel,Default, @UserName , "B2")
    Alles anzeigen

    Er bricht jedoch manchmal mein Skript ab mit dem folgenden Fehler:

    "C:\Program Files\AutoIt3\Include\Excel.au3" (227) : ==> Variable must be of type "Object".:
    $oExcel.Windows($oWorkbook.Name).Visible = $bVisible
    $oExcel.Windows($oWorkbook.Name)^ ERROR

    Ich bin der Meinung, dass er sich durch Aufruf der Zeile 7 verabschieded, weiß aber nicht warum. Manchmal sind unserer Rechner hier sehr langsam oder auch manchmal das Netzlaufwerk. Kann es sein, dass einfach die Exceldatei noch nicht vollständig geöffnet ist und er deswegen den Fehler wirft? Die Exceldatei lasse ich auf invisible starten, da der Mitarbeiter nur meine Maske ausfüllen soll, ohne jedoch die eigentliche Excel-Datei (diese dient dann als Art Datenbank). Ich hab versucht ein paar Sleeps einzubauen nach dem Excel_Open und dem Excel_BookOpen Befehl, aber der Skriptabsturz erfolgt dennoch immer mal sporadisch. Lässt sich der Fehler irgendwie abfgangen damit der User ohne Absturz des Programmes arbeiten kann?

    Sorry das ich das eigentlich fertige Thema nochmal eröffne...

    LG
    Mirko

  • Problem mit _Excel_BookOpen und WinAPI

    • mirko2002
    • 10. Januar 2017 um 12:44

    Hallo @alpines,

    danke - habe ich im Eifer des Gefechts vergessen... normal mache ich das immer :)

    LG
    Mirko

  • Problem mit _Excel_BookOpen und WinAPI

    • mirko2002
    • 10. Januar 2017 um 12:19

    Ach Mensch... manchmal kann es doch so einfach sein :)

    An dem Close hat's gelegen... jetzt geht es. Werd es nachher mal mit dem "FileInUse" testen... das hatte ich in der deutschen Hilfe gar nicht gefunden - scheint nur in der englischen Hilfe vorhanden zu sein, daher ist es mir nciht aufgefallen.

    Danke @Zeitriss

  • Problem mit _Excel_BookOpen und WinAPI

    • mirko2002
    • 10. Januar 2017 um 11:44

    Hallo zusammen,

    in meinem Skript soll Excel geöffnet werden (welches auf einem Netzlaufwerk liegt) und dort etwas eingetragen, gespeichert und geschlossen werden.

    Soweit alles super. Um Fehlerquellen auszuschließen habe ich nun eine Funktion eingebaut, die prüft, ob diese Excel Datei bereits geöffnet ist / in Benutzung ist (von einer anderen Person) und demnach mein Skript zu warten hat, bis der Zugriff wieder klappt.

    Hier mal ein Schnipsel, wie der Zugriff auf die Datei problemlos funktioniert:

    AutoIt
    #include <Excel.au3>
    Local $oExcelapp = _Excel_Open(True,False,True,True,True)
    Local $oExcel = _Excel_BookOpen($oExcelapp, "C:\Users\751076\Desktop\MAF.xlsx", False, True, "123")
    Sleep(3000)
    _Excel_BookClose($oExcel, True)
    _Excel_Close($oExcelapp, Default, True)


    Er öffnet Excel, lädt die Arbeitsmappe, wartet 3 Sekunden und schliesst anschliessend wieder alles. Genau soll es sein - hier gibts auch nichts zu meckern.

    Nun zum Problem. Baue ich hier vorher die Abfrage ein, ob die Datei derzeit verwendet wird und demnach zu warten hat, funktioniert zwar noch das öffnen von Excel, aber das Laden der Arbeitmappe vollzieht er nichtmehr... allerdings wirft er auch keinen Fehler aus - er tut es einfach nur nicht.

    So der modifizierte Code mit Access-Prüfung:


    AutoIt
    #include <Excel.au3>
    #include <WinAPI.au3>
    $sFile="C:\Users\751076\Desktop\MAF.xlsx"
    Do
    	$hFile = _WinAPI_CreateFile($sFile, 2)
    	$file_open_test = _WinAPI_GetLastErrorMessage()
    	ConsoleWrite($file_open_test & @CRLF)
    	Sleep(250)
    Until $file_open_test = "The operation completed successfully."
    	Local $oExcelapp = _Excel_Open(True,False,True,True,True)
    	Local $oExcel = _Excel_BookOpen($oExcelapp, "C:\Users\751076\Desktop\MAF.xlsx", False, True, "123")
    	Sleep(3000)
    	_Excel_BookClose($oExcel, True)
    	_Excel_Close($oExcelapp, Default, True)
    Alles anzeigen

    Warum um Himmels Willen tut er das? Ich kann nicht nachvollziehen warum er das "_Excel_BookOpen" komplett ignoriert, obwohl es im obigen Beispiel noch wunderbar funktioniert...

    Jemand ne Idee?

    LG
    Mirko

  • _GUICtrlTreeView_SetIcon individuell anpassen

    • mirko2002
    • 31. Oktober 2016 um 15:50

    Ich möchte das Thema nochmal "bumpen" und fragen ob jemand hier mich nochmal unterstützen könnte?

    Viele liebe Grüße,
    Mirko

  • _GUICtrlTreeView_SetIcon individuell anpassen

    • mirko2002
    • 11. Oktober 2016 um 12:45

    Huhu zusammen,

    hat irgendjemand noch Ideen wie ich meinen Plan umsetzen kann?

    LG
    Mirko

  • _GUICtrlTreeView_SetIcon individuell anpassen

    • mirko2002
    • 10. Oktober 2016 um 15:46

    Entschuldigt bitte die späte Rückmeldung, aber Wochenende war stressig.

    Ich stell hier mal das komplette Skript rein... Sinn und Zweck des ganzen ist, das dort Feedbacks erstellt werden müssen und diese abschliessend als "completed" benannt werden. Zur weiteren besseren Übersicht sollen halt auch die Icons entsprechend aussehen damit man wirklich auf dem ersten Blick erkennt, ob ein Fall noch bearbeitet werden muss oder nicht.

    AutoIt
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Icon=artifacter.ico
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #include <GuiTreeView.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <TreeViewConstants.au3>
    #include <WindowsConstants.au3>
    #include <ButtonConstants.au3>
    #include <File.au3>
    #include <ColorConstants.au3>
    
    
    GUIRegisterMsg($WM_COMMAND, 'WM_COMMAND')
    
    
    Global $sPath = 'M:\SV\Feedbacks\'
    Global $width = 800, $height = 600
    Global $hGui = GUICreate('Feedbacks 1.0', $width, $height, -1, -1)
    Global $notizen
    Global $checkbox_ccc_marked = 0
    Global $checkbox_fdx_marked = 0
    
    
    Dim $input_infos[3]
    
    
    GUICtrlSetFont(-1, 9, 600, 0, 'Verdana')
    Global $bFiles = True
    GUICtrlCreateGroup("Feedbacks", 5, 20, 275, 505)
    GUICtrlSetFont(-1, 8, 600, 0, "Verdana")
    Global $hTreeView = GUICtrlCreateTreeView(10, 35, $width - 540, $height - 120, BitOR($GUI_SS_DEFAULT_TREEVIEW, $TVS_CHECKBOXES), $WS_EX_STATICEDGE)
    GUICtrlSetFont(-1, 10, 400, 0, 'Arial')
    GUICtrlSetBkColor(-1, 0xF8F8F8)
    $input_createfile = GUICtrlCreateInput("FILENAME", 15, 545, 140, 18)
    $button_createfile = GUICtrlCreateButton("Create Feedback", 160, 544, 90, 18)
    $label_createfile = GUICtrlCreateLabel('Please use all fields in "Feedback Infos"', 5, 565, 250,10)
    GUICtrlSetColor($label_createfile, $COLOR_RED)
    GUICtrlSetFont(-1, 7, 600, 0, "Verdana")
    GUICtrlSetState($label_createfile, $GUI_HIDE)
    $label_createfile_done = GUICtrlCreateLabel('<< Feedback created >>', 70, 565, 250,10)
    GUICtrlSetColor($label_createfile_done, $COLOR_GREEN)
    GUICtrlSetFont(-1, 7, 600, 0, "Verdana")
    GUICtrlSetState($label_createfile_done, $GUI_HIDE)
    $button_filedelete = GUICtrlCreateButton("", 255, 528, 25, 25, $BS_ICON)
    GUICtrlSetImage(-1, "shell32.dll", -132,0)
    GUICtrlSetTip(-1, "Delete the selected feedback file")
    $button_refreshtree = GUICtrlCreateButton("", 255, 555, 25, 25, $BS_ICON)
    GUICtrlSetImage(-1, "wmploc.dll", -138,0)
    GUICtrlSetTip(-1, "Refresh the feedback tree view")
    GUICtrlCreateGroup("Feedback Infos", 290, 20, 500, 80)
    GUICtrlSetFont(-1, 8, 600, 0, "Verdana")
    GUICtrlCreateLabel("Teamleader:", 300, 40)
    $input_infos[0] = GUICtrlCreateInput("", 360, 38, 150, 18)
    GUICtrlCreateLabel("AWB:", 540, 40)
    $input_infos[1] = GUICtrlCreateInput("", 600, 38, 150, 18)
    GUICtrlCreateLabel("Agent:", 300, 70)
    $input_infos[2] = GUICtrlCreateInput("", 360, 68, 150, 18)
    GUICtrlCreateLabel("Feedback:", 540, 70)
    $checkbox_ccc = GUICtrlCreateCheckbox("CCC", 620, 66)
    GUICtrlSetBkColor(-1, $COLOR_RED)
    $checkbox_fdx = GUICtrlCreateCheckbox("FDX", 700, 66)
    GUICtrlSetBkColor(-1, $COLOR_RED)
    GUICtrlCreateGroup("Notes", 290, 100, 500, 395)
    GUICtrlSetFont(-1, 8, 600, 0, "Verdana")
    $notizen = GUICtrlCreateEdit("", 300, 115, 480, 370, BitOR ($WS_VSCROLL, $ES_MULTILINE, $ES_READONLY))
    GUICtrlCreateGroup("Updates", 290, 495, 400, 80)
    GUICtrlSetFont(-1, 8, 600, 0, "Verdana")
    $input_update = GUICtrlCreateEdit("", 300, 510, 380, 55, BitOR ($WS_VSCROLL, $ES_MULTILINE, $ES_AUTOVSCROLL, $ES_WANTRETURN))
    $button_update = GUICtrlCreateButton("Update Feedback", 695, 530, 93, 20)
    GUICtrlCreateLabel("© Mirko Hässelbarth", 705, 5, 90,20)
    GUICtrlSetFont(-1, 6, 400, 0, "Verdana")
    Global $hStatus1 = GUICtrlCreateLabel('', 0, $height - 16, $width / 2, 16, -1, $WS_EX_STATICEDGE)
    Global $hStatus2 = GUICtrlCreateLabel('', $width / 2 + 1, $height - 16, $width / 2, 16, -1, $WS_EX_STATICEDGE)
    
    
    #region Username ermitteln
    $winuser = @UserName
    If @Username = "751076" then
    	$winuser = "Mirko"
    ElseIf @Username = "842587" Then
    	$winuser = "Christina"
    ElseIf @Username = "862883" Then
    	$winuser = "Alexander"
    ElseIf @Username = "763889" Then
    	$winuser = "Tatjana"
    ElseIf @Username = "916065" Then
    	$winuser = "Thomas"
    ElseIf @Username = "810453" Then
    	$winuser = "Snoken"
    Else
    	$winuser = "Unknown"
    EndIf
    #endregion
    
    
    GUISetState()
    
    
    _TreeViewUpdate()
    
    
    While 1
        Switch GUIGetMsg()
            Case $GUI_EVENT_PRIMARYDOWN
                $aInfo = GUIGetCursorInfo($hGui)
    			If $aInfo[4] = $hTreeView Then
                    $oldGUIDataSeparatorChar = Opt('GUIDataSeparatorChar', '\')
                    GUICtrlSetData($hStatus1, ' ' & StringReplace(_GUICtrlTreeView_GetTree($hTreeView), '\\', '\'))
    				$readini = FileRead(StringReplace(_GUICtrlTreeView_GetTree($hTreeView), '\\', '\'))
    				GUICtrlSetData($notizen,StringTrimLeft($readini, StringInStr($readini, @CRLF, 0, 5))) ;liest den Inhalt ab der 5. Zeile aus
    				$read_info1 = FileReadLine(StringReplace(_GUICtrlTreeView_GetTree($hTreeView), '\\', '\'),1)
    				GUICtrlSetData($input_infos[0],$read_info1)
    				$read_info2 = FileReadLine(StringReplace(_GUICtrlTreeView_GetTree($hTreeView), '\\', '\'),2)
    				GUICtrlSetData($input_infos[1],$read_info2)
    				$read_info3 = FileReadLine(StringReplace(_GUICtrlTreeView_GetTree($hTreeView), '\\', '\'),3)
    				GUICtrlSetData($input_infos[2],$read_info3)
    				$read_info4 = FileReadLine(StringReplace(_GUICtrlTreeView_GetTree($hTreeView), '\\', '\'),4)
    				If $read_info4 = 1 Then
    					GUICtrlSetState($checkbox_ccc,$GUI_CHECKED)
    					GUICtrlSetBkColor($checkbox_ccc, 0x00FF00)
    				Else
    					GUICtrlSetState($checkbox_ccc,$GUI_UNCHECKED)
    					GUICtrlSetBkColor($checkbox_ccc, $COLOR_RED)
    				EndIf
    				$read_info5 = FileReadLine(StringReplace(_GUICtrlTreeView_GetTree($hTreeView), '\\', '\'),5)
    				If $read_info5 = 1 Then
    					GUICtrlSetState($checkbox_fdx,$GUI_CHECKED)
    					GUICtrlSetBkColor($checkbox_fdx, 0x00FF00)
    				Else
    					GUICtrlSetState($checkbox_fdx,$GUI_UNCHECKED)
    					GUICtrlSetBkColor($checkbox_fdx, $COLOR_RED)
    				EndIf
                    Opt('GUIDataSeparatorChar', $oldGUIDataSeparatorChar)
                    If BitAND(_GUICtrlTreeView_HitTest($hTreeView, $aInfo[0] - 11, $aInfo[1] - 41), 64) Then
                        $checked = _GUICtrlTreeView_GetChecked($hTreeView, _GUICtrlTreeView_GetSelection($hTreeView))
                        _GUICtrlTreeView_SetBold($hTreeView, _GUICtrlTreeView_GetSelection($hTreeView), $checked)
                        $hItem = _GUICtrlTreeView_GetFirstChild($hTreeView, _GUICtrlTreeView_GetSelection($hTreeView))
                        If $hItem Then _MarkChildItems($hTreeView, $hItem, $checked)
    				EndIf
                EndIf
    			If $aInfo[4] = 5 Then
    				GUICtrlSetData($input_infos[0],"")
    				GUICtrlSetData($input_infos[1],"")
    				GUICtrlSetData($input_infos[2],"")
    				GUICtrlSetData($notizen,"")
    				GUICtrlSetData($input_update,"")
    				GUICtrlSetData($input_createfile,"")
    				GUICtrlSetState($checkbox_ccc, $GUI_UNCHECKED)
    				GUICtrlSetBkColor($checkbox_ccc, $COLOR_RED)
    				GUICtrlSetState($checkbox_fdx, $GUI_UNCHECKED)
    				GUICtrlSetBkColor($checkbox_fdx, $COLOR_RED)
    			EndIf
    		Case $button_update
                $oldGUIDataSeparatorChar = Opt('GUIDataSeparatorChar', '\')
    			$read_update = GUICtrlRead($input_update)
    			FileWrite(StringReplace(_GUICtrlTreeView_GetTree($hTreeView), '\\', '\'), @CRLF & "Updated at " & @MDAY&"."&@MON&" "&@YEAR&", "&@HOUR&":"&@MIN&" by " & $winuser&":" & @CRLF & $read_update & @CRLF & "--------------------------------------------------------------------------------------------------------------------------------------------------------")
    			$read_ccc = GUICtrlRead($checkbox_ccc)
    			$read_fdx = GUICtrlRead($checkbox_fdx)
    			If $read_ccc = 1 Then
    				$checkbox_ccc_marked = 1
    			Elseif $read_ccc = 4 Then
    				$checkbox_ccc_marked = 0
    			EndIf
    			If $read_fdx = 1 Then
    				$checkbox_fdx_marked = 1
    			Elseif $read_fdx = 4 Then
    				$checkbox_fdx_marked = 0
    			EndIf
    			_FileWriteToLine(StringReplace(_GUICtrlTreeView_GetTree($hTreeView), '\\', '\'), 4, $checkbox_ccc_marked, 1)
    			_FileWriteToLine(StringReplace(_GUICtrlTreeView_GetTree($hTreeView), '\\', '\'), 5, $checkbox_fdx_marked, 1)
    			$readini = FileRead(StringReplace(_GUICtrlTreeView_GetTree($hTreeView), '\\', '\'))
    			GUICtrlSetData($notizen,StringTrimLeft($readini, StringInStr($readini, @CRLF, 0, 5)))
    			GUICtrlSetData($input_update,"")
    			If $checkbox_ccc_marked = 1 And $checkbox_fdx_marked = 1 Then
    				$filerenaming = StringReplace(_GUICtrlTreeView_GetTree($hTreeView), '\\', '\')
    	;~ 			MsgBox(0,"", _GUICtrlTreeView_GetText($hTreeView))
    	;~ 			MsgBox(0,"", StringReplace($test1, '.txt', '_completed.txt'))
    				FileMove($filerenaming, StringReplace($filerenaming, '.txt', '_completed.txt'))
    				_TreeViewUpdate()
    			EndIf
    		Case $button_createfile
    			_checkInputs()
    		Case $button_refreshtree
    			_TreeViewUpdate()
    		Case $button_filedelete
    			$oldGUIDataSeparatorChar = Opt('GUIDataSeparatorChar', '\')
    			$tmp = MsgBox(48+4, '', "Do you want to delete the feedback?")    ; Yes, No, Cancel
    			Switch $tmp
    				Case 6    ; JA
    					FileDelete(StringReplace(_GUICtrlTreeView_GetTree($hTreeView), '\\', '\'))
    					GUICtrlSetData($input_infos[0],"")
    					GUICtrlSetData($input_infos[1],"")
    					GUICtrlSetData($input_infos[2],"")
    					GUICtrlSetData($notizen,"")
    					_TreeViewUpdate()
    				Case 7    ; NEIN
    			EndSwitch
    		Case $checkbox_ccc
    			$checkbox_ccc_marked = 0
    			If GUICtrlRead($checkbox_ccc) = 1 Then
    				$checkbox_ccc_marked = 1
    				GUICtrlSetBkColor($checkbox_ccc, 0x00FF00)
    			Elseif GUICtrlRead($checkbox_ccc) = 4 Then
    				$checkbox_ccc_marked = 0
    				GUICtrlSetBkColor($checkbox_ccc, $COLOR_RED)
    			EndIf
    		Case $checkbox_fdx
    			$checkbox_fdx_marked = 0
    			If GUICtrlRead($checkbox_fdx) = 1 Then
    				$checkbox_fdx_marked = 1
    				GUICtrlSetBkColor($checkbox_fdx, 0x00FF00)
    			Elseif GUICtrlRead($checkbox_fdx) = 4 Then
    				$checkbox_fdx_marked = 0
    				GUICtrlSetBkColor($checkbox_fdx, $COLOR_RED)
    			EndIf
    		Case $GUI_EVENT_CLOSE
                Exit
        EndSwitch
    WEnd
    
    
    Func _checkInputs()
    	Local $test = 0
        for $i = 0 to UBound($input_infos)-1
                if GUICtrlRead($input_infos[$i]) = "" then
                    $test = 1
                    ExitLoop
                EndIf
    	next
    		If $test = 1 then
    			GUICtrlSetState($label_createfile, $GUI_SHOW)
    			$timerstart = TimerInit()
    			$count = 0
    			Do
    				If TimerDiff($timerstart) > 2000 Then
    					GUICtrlSetState($label_createfile, $GUI_HIDE)
    					$timerstart = TimerInit()
    					$count = 1
    				EndIf
    			Until $count = 1
    		Else
    			$oldGUIDataSeparatorChar = Opt('GUIDataSeparatorChar', '\')
    			$read_createfile = GUICtrlRead($input_createfile)
    			$read_input_infos1 = GUICtrlRead($input_infos[0])
    			$read_input_infos2 = GUICtrlRead($input_infos[1])
    			$read_input_infos3 = GUICtrlRead($input_infos[2])
    			$read_update = GUICtrlRead($input_update)
    			FileWrite($sPath & $read_createfile & ".txt", $read_input_infos1 & @CRLF & $read_input_infos2 & @CRLF & $read_input_infos3 & @CRLF & $checkbox_fdx_marked & @CRLF & $checkbox_ccc_marked & @CRLF & "Created " &@MDAY&"."&@MON&" "&@YEAR&", "&@HOUR&":"&@MIN&" by " & $winuser & @CRLF & $read_update & @CRLF)
    			_TreeViewUpdate()
    			GUICtrlSetData($input_infos[0],"")
    			GUICtrlSetData($input_infos[1],"")
    			GUICtrlSetData($input_infos[2],"")
    			GUICtrlSetData($input_update,"")
    			GUICtrlSetData($input_createfile,"")
    			GUICtrlSetState($label_createfile_done, $GUI_SHOW)
    			$timerstart1 = TimerInit()
    			$count1 = 0
    			Do
    				If TimerDiff($timerstart1) > 2000 Then
    					GUICtrlSetState($label_createfile_done, $GUI_HIDE)
    					$timerstart = TimerInit()
    					$count1 = 1
    				EndIf
    			Until $count1 = 1
    		EndIf
    	Return
    EndFunc
    
    
    Func _MarkChildItems(ByRef $hTreeView, $hItem, $checked)
        Do
            $hNewItem = _GUICtrlTreeView_GetFirstChild($hTreeView, $hItem)
            If $hNewItem Then _MarkChildItems($hTreeView, $hNewItem, $checked)
    		_GUICtrlTreeView_SetChecked($hTreeView, $hItem, $checked)
            _GUICtrlTreeView_SetBold($hTreeView, $hItem, $checked)
            $hItem = _GUICtrlTreeView_GetNextChild($hTreeView, $hItem)
        Until $hItem = 0
    EndFunc   ;==>_MarkChildItems
    
    
    Func _TreeViewUpdate()
        GUICtrlSetData($hStatus1, ' Please wait! Directory will be read...')
        GUICtrlSetData($hStatus2, '')
        $Timer = TimerInit()
        Local $aCount = _GUICtrlTreeView_CreateDirectory($hTreeView, $sPath, $bFiles)
        If Not @error Then
            $msg = ' Time: ' & Round(TimerDiff($Timer) / 1000, 3) & ' sec.'
            $msg &= '  |   ' & $aCount[1] & ' File(s) and ' & $aCount[0] & ' Folder(s)'
            GUICtrlSetData($hStatus1, ' Done')
            GUICtrlSetData($hStatus2, $msg)
        EndIf
    EndFunc   ;==>_TreeViewUpdate
    
    
    ;===============================================================================
    ; Function Name:   _GUICtrlTreeView_CreateDirectory($hTreeView, $sPath, $bFiles)
    ; Description::    erstellt ein TreeView mit Verzeichnissen (+Dateien)
    ; Parameter(s):    $hTreeView = ControlID/Handle des TreeViews
    ;                  $sPath     = Verzeichnispfad, der dargestellt werden soll
    ;                  $bFiles    = True = auch Dateien anzeigen, False = nur Verzeichnisse
    ; Requirement(s):  #include<GuiTreeView.au3>
    ; Return Value(s): Array mit Anzahl der Verzeichnisse=[0] und Dateien=[1]
    ;                  0 und @error = 1, wenn der Pfad nicht existiert bzw. kein Verzeichnis ist
    ;                  0 und @error = 2, wenn das FileSystemObject nicht erstellt werden konnte
    ; Author(s):       Oscar (www.autoit.de)
    ;===============================================================================
    Func _GUICtrlTreeView_CreateDirectory($hTreeView, $sPath, $bFiles = False)
        Local $hFileItem, $FolderColor = 0x000000, $Folder, $aCount[2] = [0, 0]
        If Not StringInStr(FileGetAttrib($sPath), 'D') Then Return SetError(1, 0, 0)
        $sPath = FileGetLongName($sPath)
        Local $oFSO = ObjCreate('Scripting.FileSystemObject')
        If @error Then Return SetError(2, 0, 0)
        _GUICtrlTreeView_BeginUpdate($hTreeView)
        _GUICtrlTreeView_DeleteAll(GUICtrlGetHandle($hTreeView))
        Local $hTreeViewItem = GUICtrlCreateTreeViewItem($sPath, $hTreeView)
        GUICtrlSetColor(-1, $FolderColor)
    
    
    ;~ 	$icon = StringReplace(_GUICtrlTreeView_GetTree($hTreeView), '\\', '\')
    ;~ 	$icon2 = StringInStr($icon, "_completed.txt")
    ;~ 	If $icon2 > 0 Then
    ;~ 		_GUICtrlTreeView_SetIcon($hTreeView, $hTreeViewItem, 'shell32.dll', 111) ;Icon für Datei
    ;~ 	Else
    ;~ 		_GUICtrlTreeView_SetIcon($hTreeView, $hTreeViewItem, 'shell32.dll', 110) ;Icon für Datei
    ;~ 	EndIf
    
    
    
    
    ;~    _GUICtrlTreeView_SetIcon($hTreeView, $hTreeViewItem, 'shell32.dll', 111) ;Icon für Datei
    	_GUICtrlTreeView_SetIcon($hTreeView, $hTreeViewItem, 'imageres.dll', 101) ;Icon für Datei // 99 = blaues Fragezeichen, 100 = rotes X, 101 = grüner Haken, 102 Gelbes Ausrufezeichen
    
    
        $Folder = $oFSO.GetFolder($sPath)
        _CreateDirectoryRecursive($hTreeView, $Folder, $hTreeViewItem, $bFiles, $aCount)
        If $bFiles Then
            For $Files In $Folder.Files
                $hFileItem = GUICtrlCreateTreeViewItem($Files.Name, $hTreeViewItem)
                $aCount[1] += 1
            Next
        EndIf
        _GUICtrlTreeView_SetIcon($hTreeView, $hTreeViewItem, 'shell32.dll', 3, 2) ;Icon für Rootfolder
        _GUICtrlTreeView_SetIcon($hTreeView, $hTreeViewItem, 'shell32.dll', 110, 4)
        _GUICtrlTreeView_EndUpdate($hTreeView)
        GUICtrlSetState($hTreeViewItem, $GUI_EXPAND)
        $oFSO = ''
        Return $aCount
    EndFunc   ;==>_GUICtrlTreeView_CreateDirectory
    
    
    Func _CreateDirectoryRecursive($hTreeView, $Folder, $ItemOld, $bFiles, ByRef $aCount)
        Local $hFolderItem, $hFileItem, $FolderColor = 0x0000FF
        For $Subfolder In $Folder.SubFolders
            $hFolderItem = GUICtrlCreateTreeViewItem($Subfolder.Name, $ItemOld)
            GUICtrlSetColor(-1, $FolderColor)
            _GUICtrlTreeView_SetIcon($hTreeView, $hFolderItem, 'shell32.dll', 3, 2)
            _GUICtrlTreeView_SetIcon($hTreeView, $hFolderItem, 'shell32.dll', 110, 4)
            $aCount[0] += 1
            _CreateDirectoryRecursive($hTreeView, $Subfolder, $hFolderItem, $bFiles, $aCount)
            If $bFiles Then
                For $Files In $Subfolder.Files
                    $hFileItem = GUICtrlCreateTreeViewItem($Files.Name, $hFolderItem)
                    $aCount[1] += 1
                Next
            EndIf
        Next
    EndFunc   ;==>_CreateDirectoryRecursive
    
    
    Func WM_COMMAND($hWnd, $iMsg, $wParam, $lParam)
        Local $nNotifyCode = BitShift($wParam, 16)
    
    
        Switch $lParam
            Case GUICtrlGetHandle($notizen)
                Switch $nNotifyCode
                    Case $EN_SETFOCUS
                        DllCall('user32.dll', 'int', 'HideCaret', 'hwnd', $lParam) ; => _WinAPI_HideCaret($lParam)
                EndSwitch
        EndSwitch
    
    
        Return $GUI_RUNDEFMSG
    EndFunc
    Alles anzeigen


    LG
    Mirko

  • _GUICtrlTreeView_SetIcon individuell anpassen

    • mirko2002
    • 7. Oktober 2016 um 08:31

    Uh, sorry damit komme ich gerade gar nicht klar da es ganz anders aufgesetzt ist als meine Variante. Ich muss dazu sagen, dass ich diese bei mir laufende GUICtrlTreeView-Sache aus Codeschnipseln anderer AutoIt-Projekte verwendet habe.

    Lerneffekt ist dabei relativ gering, auch wenn ich durch "rumspielen" den einen oder anderen Effekt natürlich nachvollziehen kann.

    Daher bin ich mit dem obigen Beispiel gerade völlig überfragt :)

  • _GUICtrlTreeView_SetIcon individuell anpassen

    • mirko2002
    • 6. Oktober 2016 um 12:01

    Hallo zusammen,

    ich hab folgendes "Problem". In meinem Tool habe ich eine TreeView. Dort werden den Items Icons zugewiesen. Aktuell ist es so, dass alle Items dasselbe Icon haben.

    Ich möchte jedoch, dass Items die den String "completed" enthalten ein anderes Icon erhalten, als Items die nicht diesen String enthalten.

    Um genauer zu werden: Der TreeView zeigt mir alle Dateien aus einem vorgegebenen Ordner an. Damit man etwas mehr übersicht erhält, sollen alle Dateien die diesen String enthalten ein grünes Häckchen bekommen, alle Dateien ohne den String sollen ein rotes X bekommen.

    Da wir hier hunderte Dateien in den Ordner haben ist es einfacher, die "completed"-Dateien mit dem grünen Haken zu versehen da diese dann schneller auffallen.

    Optional: Kann man die TreeView sogar sortieren, dass Items mit Icon XYZ zuerst angezeigt werden und anschließend erst die Items mit den anderem Icon?

    Hier mal mein Codeschnipsel womit der TreeView erstellt ist - der auskommentierte Bereich ist das, wo ich versucht habe den Items unterschiedliche Icons zuzuweisen - jedoch ohne Erfolg:

    AutoIt
    Func _GUICtrlTreeView_CreateDirectory($hTreeView, $sPath, $bFiles = False)
        Local $hFileItem, $FolderColor = 0x0000FF, $Folder, $aCount[2] = [0, 0]
        If Not StringInStr(FileGetAttrib($sPath), 'D') Then Return SetError(1, 0, 0)
        $sPath = FileGetLongName($sPath)
        Local $oFSO = ObjCreate('Scripting.FileSystemObject')
        If @error Then Return SetError(2, 0, 0)
        _GUICtrlTreeView_BeginUpdate($hTreeView)
        _GUICtrlTreeView_DeleteAll(GUICtrlGetHandle($hTreeView))
        Local $hTreeViewItem = GUICtrlCreateTreeViewItem($sPath, $hTreeView)
        GUICtrlSetColor(-1, $FolderColor)
    
    
    ;~ 	$icon = StringReplace(_GUICtrlTreeView_GetTree($hTreeView), '\\', '\')
    ;~ 	$icon2 = StringInStr($icon, "_completed.txt")
    ;~ 	If $icon2 > 0 Then
    ;~ 		_GUICtrlTreeView_SetIcon($hTreeView, $hTreeViewItem, 'shell32.dll', 111) ;Icon für Datei
    ;~ 	Else
    ;~ 		_GUICtrlTreeView_SetIcon($hTreeView, $hTreeViewItem, 'shell32.dll', 110) ;Icon für Datei
    ;~ 	EndIf
    
    
    
    
       _GUICtrlTreeView_SetIcon($hTreeView, $hTreeViewItem, 'shell32.dll', 111) ;Icon für Datei
    
    
    
    
        $Folder = $oFSO.GetFolder($sPath)
        _CreateDirectoryRecursive($hTreeView, $Folder, $hTreeViewItem, $bFiles, $aCount)
        If $bFiles Then
            For $Files In $Folder.Files
                $hFileItem = GUICtrlCreateTreeViewItem($Files.Name, $hTreeViewItem)
                $aCount[1] += 1
            Next
        EndIf
        _GUICtrlTreeView_SetIcon($hTreeView, $hTreeViewItem, 'shell32.dll', 3, 2) ;Icon für Rootfolder
        _GUICtrlTreeView_SetIcon($hTreeView, $hTreeViewItem, 'shell32.dll', 110, 4)
        _GUICtrlTreeView_EndUpdate($hTreeView)
        GUICtrlSetState($hTreeViewItem, $GUI_EXPAND)
        $oFSO = ''
        Return $aCount
    EndFunc   ;==>_GUICtrlTreeView_CreateDirectory
    Alles anzeigen

    Zeile 21 ist das, wo den Items das Icon zugewiesen wird... also sollte hier der Ansatz sein, die Abfrage zu stellen... jedoch komme ich hier nicht weiter :(

    Kann mir wer helfen?

    LG
    Mirko

  • 2D-Array aus ListView verwerten

    • mirko2002
    • 11. August 2016 um 13:01

    Oh.. sorry...

    Dateien

    GUIListViewEx.au3 210,3 kB – 332 Downloads
  • 2D-Array aus ListView verwerten

    • mirko2002
    • 11. August 2016 um 10:47

    Hallo zusammen,

    ich stehe vor einem 2D-Array Problem :(

    Ich finde die Arbeit mit Arrays (für mich persönlich) sehr kompliziert und habe daher in meinem Fall jetzt einige Herausforderungen.

    Ich habe folgendes vor:

    In meinen Skript hat der Mitarbeiter eine Tabelle (kreiert via ListView). Dort muss er Werte eintragen und mit diesen Werten sollen zwei Dinge passieren. Zum einen sollen diese Werte in eine Ini-Datei geschrieben werden und natürlich beim Neustart des Skriptes auch wieder eingelesen werden. Hier benötige ich ja das erste mal den Array.

    Als nächstes sollen bestimmte Felder Werte aus anderen Feldern als Summe errechnen. Hintergrund: Diese Tabelle kommt urpsünglich aus Excel und dort kann ich in den Spalten natürlich problemlos mit Formeln arbeiten und einfach sagen in Spalte A1: =B1-C1... sowas will ich halt auf AutoIt "portieren".

    Ich poste mal mein vollständiges Skript mit dem was jetzt bereits steht:

    C
    #include <GuiConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <Date.au3>
    #include <GUIListViewEx.au3>
    #include <GuiComboBox.au3>
    #include <WinAPI.au3>
    #include <ColorConstants.au3>
    OnAutoItExitRegister("_FontCleanUp")
    
    
    Global $iCount_Left = 1, $iCount_Right = 1, $vData, $aRet, $iEditMode = 23, $hGui, $iJahr, $iMonat, $ListView, $ahFontEx[1] = [0]
    
    
    ; Create GUI
    $hGUI = GUICreate("ForeCast Automation", 1600, 800, -1, -1)
    
    
    ; Create Left ListView
    $idLabel = GUICtrlCreateLabel("Datum", 20, 80, 60, 150, 0x202)
    _GuiCtrlSetFont(-1, 15, 800, 8, 90)
    GUICtrlSetBkColor($idLabel, $COLOR_WHITE)
    $cListView = GUICtrlCreateListView("|Forecast werth. Post|Tagesziel|Werth. Postpaid|TK High|TK Mid|TK Low|davon Flex|O2 Go|O2 Go 24m|davon Flex|Blau.de||MIGRATION||Forecast VVL|Tagesziel|VVL|O2 Up|O2 Stable|O2 Down|VVL ohne Migras|Forecast DSL|Tagesziel|DSL|Forecast Punkte|Tagesziel|Punkte", 10, 160, 1580, 630, 0x201)
    _GUICtrlListView_SetExtendedListViewStyle($cListView, $LVS_EX_FULLROWSELECT)
    _GUICtrlListView_SetColumnWidth($cListView, 0, 80)
    _GUICtrlListView_SetColumnWidth($cListView, 1, 40)
    _GUICtrlListView_SetColumnWidth($cListView, 2, 40)
    _GUICtrlListView_SetColumnWidth($cListView, 3, 55)
    _GUICtrlListView_SetColumnWidth($cListView, 4, 55)
    _GUICtrlListView_SetColumnWidth($cListView, 5, 55)
    _GUICtrlListView_SetColumnWidth($cListView, 6, 55)
    _GUICtrlListView_SetInsertMarkColor($cListView, 0)
    $hHeader = HWnd(_GUICtrlListView_GetHeader($cListView))
    ControlDisable($hHeader,"","")
    
    
    $idCboJahr = GUICtrlCreateCombo('', 25, 20, 50)
    $idCboMonat = GUICtrlCreateCombo('', 100, 20, 80)
    $idCboTag = GUICtrlCreateCombo('', 200, 20, 170)
    GUICtrlSetState($idCboTag,$GUI_HIDE)
    
    
    _InitJahr($idCboJahr)
    _InitMonat($idCboMonat)
    _InitTag($idCboTag)
    
    
    ; Fill ListView with items
    $iTage = _DateDaysInMonth($iJahr, $iMonat)
    For $i = 1 To $iTage
    	If _DateToDayOfWeek($iJahr, $iMonat, $i) <> 1 Then _
    		GUICtrlCreateListViewItem($i & "." & $iMonat & "." & $iJahr & "||", $cListView)
    Next
    
    
    ; Create array
    $aLV_List_Left = _GUIListViewEx_ReadToArray($cListView, 1) ; Note count element
    
    
    ; Initiate GLVEx - no array passed - count parameter set - default insert mark colour (black) - drag image
    $iLV_Left_Index = _GUIListViewEx_Init($cListView, $aLV_List_Left, 1, 0, True)
    
    
    ; All columns editable
    _GUIListViewEx_SetEditStatus($iLV_Left_Index, "*")
    
    
    ; Create buttons
    $cDisplay_Left_Button = GUICtrlCreateButton("Array anzeigen", 200, 15, 100, 30)
    
    
    GUISetState()
    
    
    ; Register for editing 7 dragging
    _GUIListViewEx_MsgRegister()
    
    
    While 1
    	Switch GUIGetMsg()
    		Case $GUI_EVENT_CLOSE
    			Exit
    		Case $cDisplay_Left_Button
    			$aLV_List_Left = _GUIListViewEx_ReadToArray($cListView, 1)
    			If Not @error Then
    				_ArrayDisplay($aLV_List_Left, "Returned Left")
    			Else
    				MsgBox(0, "Left", "Empty Array")
    			EndIf
    		Case $idCboJahr, $idCboMonat
    			$iJahr=GUICtrlRead($idCboJahr)
    			$iMonat=_GUICtrlComboBox_GetCurSel($idCboMonat)+1
    			_InitTag($idCboTag)
    			_GUICtrlListView_DeleteAllItems($cListView)
    			$iTage = _DateDaysInMonth($iJahr, $iMonat)
    			For $i = 1 To $iTage
    				If _DateToDayOfWeek($iJahr, $iMonat, $i) <> 1 Then _
    					GUICtrlCreateListViewItem($i & "." & $iMonat & "." & $iJahr & "||", $cListView)
    			Next
    	EndSwitch
    
    
    	$aRet = _GUIListViewEx_EditOnClick($iEditMode)
    	; Array only returned AFTER EditOnClick process - so check array exists
    	If IsArray($aRet) Then
    		; Uncomment to see returned array
    ;~ 		_ArrayDisplay($aRet, @error)
    	EndIf
    WEnd
    
    
    Func _InitJahr($iID)
    	For $i = @YEAR - 2 To @YEAR + 5
    		If $i = @YEAR Then
    			GUICtrlSetData($iID, $i, $i)
    		Else
    			GUICtrlSetData($iID, $i)
    		EndIf
    	Next
    	$iJahr = @YEAR
    EndFunc   ;==>_InitJahr
    
    
    Func _InitMonat($iID)
    	For $i = 1 To 12
    		$sMon = _DateToMonth($i, 2)
    		If $i = @MON Then
    			GUICtrlSetData($iID, $sMon, $sMon)
    		Else
    			GUICtrlSetData($iID, $sMon)
    		EndIf
    	Next
    	$iMonat = @MON
    EndFunc   ;==>_InitMonat
    
    
    Func _InitTag($iID)
    	GUICtrlSetData($iID,"","")
    	$iTage = _DateDaysInMonth($iJahr, $iMonat)
    	For $i = 1 To $iTage
    		If _DateToDayOfWeek($iJahr, $iMonat, $i) <> 1 Then _
    				GUICtrlSetData($iID, $i & '.' & $iMonat & '.' & $iJahr)
    	Next
    
    
    EndFunc   ;==>_InitTag
    
    
    Func _GuiCtrlSetFont($controlID, $size, $weight = 400, $attribute = 0, $rotation = 0, $fontname= "", $quality = 2)
    	Local $fdwItalic = BitAND($attribute, 1)
    	Local $fdwUnderline = BitAND($attribute, 2)
    	Local $fdwStrikeOut = BitAND($attribute, 4)
    
    
    	ReDim $ahFontEx[UBound($ahFontEx) + 1]
    	$ahFontEx[0] += 1
    
    
    	$ahFontEx[$ahFontEx[0]] = _WinAPI_CreateFont($size, 0, $rotation * 10, $rotation, $weight, _
    							$fdwItalic, $fdwUnderline, $fdwStrikeOut, -1, 0, 0, $quality, 0, $fontname)
    
    
    	GUICtrlSendMsg($controlID, 48, $ahFontEx[$ahFontEx[0]], 1)
    EndFunc
    
    
    Func _FontCleanUp()
    	For $i = 1 To $ahFontEx[0]
    		_WinAPI_DeleteObject($ahFontEx[$i])
    	Next
    EndFunc
    Alles anzeigen


    Kann mir wer weiterhelfen, damit ich das Projekt fortführen kann?

    LG
    Mirko

  • _GuiCtrlSetFont

    • mirko2002
    • 11. August 2016 um 08:54

    Hallo zusammen,

    bitte entschuldigt, dass ich diese alte Karteileiche hier auskrame, aber ich habe genau zu diesem Thema eine Frage:

    Ich benötige eine Möglichkeit, bei einer ListView nur den Header-Font zu ändern. Wenn ich obige Methode anwende, dann wendet autoIt es auf das ganze ListView Element an :(

    Auch folgendes hat keine erwünschte Wirkung:

    Code
    $hHeader = HWnd(_GUICtrlListView_GetHeader($cListView))
    _GuiCtrlSetFont($hHeader, 15, 400, 1, 90)


    Der Header bleibt dabei unverändert. Ich möchte eigentlich eine Art Exceltabelle erwirken, wo die Überschriften oben halt Senkrecht geschrieben werden und alle Felder darunter normal befüllt werden sollen.

    Hat wer noch eine Idee wie dies ohne großen Aufwand geht?

    LG
    Mirko

  • Kalender-/Datumsfunktionen verwenden

    • mirko2002
    • 5. August 2016 um 13:17

    Hey autoBert,

    vielen Dank für Dein Beispiel...

    Die Monatsauswahl klappt bei mir leider nicht. Das DropDown bleibt einfach leer - obwohl ich kein Fehler im Source ausmachen kann.

    Ebenfalls bin ich grad überfragt, welcher Codeschnipsel die Sonntage raus"rechnet"... ich habe nicht dafür gefunden, was dies kalkuliert - oder habe ich es einfach übersehen? (oder ist es Zeile 59?)

    LG
    Mirko

  • Kalender-/Datumsfunktionen verwenden

    • mirko2002
    • 5. August 2016 um 09:46

    Hallo zusammen,

    für meine Arbeit verwende ich derzeit Excellisten, würde das aber gern in AutoIT machen.

    Folgendes habe ich vor:

    Ich brauche ein DropDownmenü, wo ich alle Monate auswählen kann. Das ist einfach zu erstellen... Hilfe brauche ich aber bei den folgeereignissen..

    Nachdem ein Monat ausgewählt wurde, soll in der GUI darunter nun eine Auflistung der einzelnen Tage erfolgen - jedoch mit Ausnahme aller Sonntage...

    Als Beispiel wie es aussehen soll:

    Code
    August (<- DropDown)
    -------
    01.08.2016
    02.08.2016
    03.08.2016
    04.08.2016
    05.08.2016
    06.08.2016
    08.08.2016
    09.08.2016
    ....
    Alles anzeigen

    Der 07.08.2016 ist ein Sonntag, taucht in der Auflistung nicht weiter auf.

    Wie kann ich das realisieren? Ich vermute stark, weil die Anzahl der Tage im Monat dann immer anders ist (entweder 26 oder 27 Tage), dass das ganze irgendwie mit Arrays gemacht werden müsste aber davon hab ich Null plan :(

    In Excel konnte ich das "einfach" umsetzen... DropDown Menü eingefügt und über VBA Code angegeben, bei Auswahl Monat XYZ werden Zeilen 20-50 (z.B.) eingeblendet, der Rest wird ausgeblendet. So kann ich schön in einer Monatsansicht wechseln. So brauch ich das für AutoIT - stehe aber völlig auf dem Schlauch.

    Kann mir wer etwas die Richtung weisen?

    LG
    Mirko

  • Externes Programm (ohne Controls) steuern

    • mirko2002
    • 21. April 2016 um 13:11

    Hm aber um irgendein Controlelement anzusprechen müsste ich den doch Namen des Controls wissen... AU3Info wirft ausser dem Fenstertitel natürlich nichts aus. Anders als bei einer AU3 GUI oder z.B. Windowselementen, oder Firefox, Internet Explorer etc pp. Dort bekomme ich ja nicht nur den Fenstertitel sondern auch die einzelnen Controlelemente benannt. Aber wenn ich nichtmal den Namen eines Buttons erfahre - wie soll ich diesen dann innerhalb des Programms ansprechen ;)

    Das hat halt gerade mein Problem. Mit ImageSearch hab ich halt von jedem Button, von jedem Inputfeld usw. Screenshot gemacht, lasse die suchen und klicke dort halt hin... geht - aber elegant ist halt was anderes.

  • Externes Programm (ohne Controls) steuern

    • mirko2002
    • 21. April 2016 um 11:40

    Moin zusammen,

    nur mal ne kleine Frage.

    Ich möchte hier auf Arbeit ein Programm automatisch steuern... derzeit mache ich das alles mit _ImageSearch. Das nervt mich aber irgendwie, denn es geht zwar so, aber perfekt ist was anderes.

    Mit dem AU3InfoTool bekomme ich keine Infos raus... keine Controls, keine ID's... nix.

    Habt ihr irgendwelche Ideen wie man ein solches Programm mit AutoIT steuern kann ohne ImageSearch (ControlSend geht halt nicht)?

    Ich habe früher mal tatsächlich mich an nem Bot mit AutoIT probiert und hatte dort die Speicherschreibfunktionen verwendet... (injection) - auf sowas möchte ich hier auf Arbeit jedoch nicht unbedingt zurückgreifen :D

    Irgendwelche Ideen oder geht es nur so wie ich es bereits tue?

    Danke und LG

  • Maus sperren (nicht Tastatur)

    • mirko2002
    • 15. April 2016 um 13:48

    Hm.... wie kann ich damit die Maus wieder freigeben?

    Hab mal etwas rumgetestet.... er bewegt die maus ja an eine bestimmte Position (eigentlich soll er ja nur den Userinput blockieren). Geht dann, selbst wenn es mit Trap gesperrt wurde immer noch mein MouseClick???

    Und wie gesagt - wie gebe ich es wieder frei?

    Bei BlockInput arbeite ich ja nur mit 0 und 1. Wie sieht's hier aus?

  • Maus sperren (nicht Tastatur)

    • mirko2002
    • 15. April 2016 um 12:45

    Hallo zusammen,

    gibt es einen Befehl um die Maus zu sperren, nicht aber die Tastatur?

    BlockInput fällt damit erstmal aus der Reihe.

    Mein Programm trägt Bestellungen von Kunden in einem unserer Programme ein. Er liest die Mail aus und klickt dann in meinem Programm entsprechende Schaltflächen um dort eingaben zu tätigen.

    Da ich auf das Fenster nicht direkt zugreifen kann habe ich es über ImageSearch gemacht mit anschliessendem Click auf die entsprechenden Stellen. Hierbei ist das Problem, wenn der User dabei die Maus bewegt, just in dem Moment wo mein Script die Maus aber an eine entsprechende Stelle geschoben hat, ist mein skript für den Ar***.

    Also würde ich für die 30 Sekunden die mein Skript für die Bestellung benötigt ein Mausblock machen. Da mein Skript jederzeit mit Escape beendet werden muss, um bei etwaigen Problemen/Fehlern sofort reagieren zu können, darf nicht die Tastatur nicht gesperrt sein.

    Momentan habe ich via HotKey die Esc-Taste als Exit-Auslöser drin. Blockinput wäre perfekt - wenn es sich nur auf die Maus in diesem Fall beziehen würde.

    Irgendwelche Ideen? Konnte in Google und auch hier nichts finden was sich nur auf die Maus bezieht.

    LG
    Mirko

  • StringRegExp richtig verwenden

    • mirko2002
    • 13. April 2016 um 13:59

    Allllles klar damit kann ich was anfangen/arbeiten :)

    Perfekt - den Rest bastel ich mir schon hin, dass alles läuft :)

    Super, danke Dir für die Unterstützung. Sofern ich weitere Hilfe brauche melde ich mich in diesem Thread nochmal!

  • StringRegExp richtig verwenden

    • mirko2002
    • 13. April 2016 um 13:28

    Hm ok und genau da steh ich auf dem Schlauch:

    Wie kann ich jetzt in einer Variable (nennen wir sie mal $Kundennummer) nun genau die Kundennummer speichern?

    in die Console ballert er mir ja nun alle Werte rein die er in der For-Schleife findet aber wie kann ich diese gezielt abfangen?

    So das ich halt einmal die Variable $Firma habe und einmal die Variable $Kundennummer und so weiter und in jeder Variable ist der Wert aus dem String...

    Das kapier ich nicht :/

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™