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

  • TCPConnect funktioniert seit 3.3.14.1 nicht richtig

    • Oscar
    • 5. September 2015 um 11:44

    Füge mal am Anfang Opt('TCPTimeout', 500) ein.
    Als Fehlermeldung kommt nämlich ein TimeOut. Scheinbar kommt da die Antwort zu spät.

  • DLL Problem bei Imagesearch

    • Oscar
    • 5. September 2015 um 11:34

    Alle Variablen, die Du in den Funktionen verwendest, solltest Du als Local deklarieren, dann gibt es auch keine Probleme mit "MustDeclareVars".
    Im Hinblick auf mögliche spätere Fehler mit anderen Scripten ist das sowieso anzuraten, denn die Funktionen werden immer Probleme machen, wenn globale Variablen mit den gleichen Namen verwendet werden.

  • AHV AutoIt-Hex-Viewer

    • Oscar
    • 5. September 2015 um 08:42

    Danke, für den Hinweis! :thumbup:
    Da es sich ja um einen WindowsHook handelt reagiert der natürlich systemweit. Das hatte ich nicht bedacht.
    Ich habe das jetzt auf den aktiven Hex-Viewer beschränkt. Neue Version in Post#1.

  • ListView - Wert hinzufügen

    • Oscar
    • 4. September 2015 um 15:08

    Mit "_GUICtrlListView_FindInText" suchst Du nach dem Index im ListView und mit "_GUICtrlListView_SetItemText" änderst Du den Inhalt des (Sub)Items.

    Wenn Dir das jetzt nicht ausreicht, dann bitte Dein Script posten.

  • GUICtrlSetBkColor auf Combo funktioniert nicht

    • Oscar
    • 4. September 2015 um 14:57

    Ich würde den Abschicken-Button solange deaktivieren, bis alle Eingaben gemacht worden sind.
    Das erspart Dir eine Menge an If-Anweisungen. Im übrigen kann man mit _GUICtrlEdit_SetCueBanner Vorgaben in die Inputfelder schreiben, die beim Klick in das Eingabefeld automatisch verschwinden.

    AutoIt
    #include <ComboConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GuiEdit.au3>
    #include <WindowsConstants.au3>
    
    
    $WinTitle = " BDG Mail "
    $GUI = GUICreate($WinTitle, 500, 230)
    GUISetBkColor(0xdfddff)
    
    
    GUICtrlCreateGroup("", 12, 0, 475, 192)
    GUICtrlSetFont(-1, 8, 800, 0, "Verdana")
    
    
    $combo_anrede = GUICtrlCreateCombo("Anrede auswählen:", 20, 15, 115, -1, $CBS_DROPDOWNLIST)
    GUICtrlSetData(-1, "Sehr geehrter Herr |Sehr geehrte Frau ", "")
    $input_anrede = GUICtrlCreateInput("", 140, 15, 100, 21)
    _GUICtrlEdit_SetCueBanner($input_anrede, "Name")
    GUICtrlSetState($input_anrede, $GUI_HIDE)
    $input_phone = GUICtrlCreateInput("", 250, 15, 105, 21)
    _GUICtrlEdit_SetCueBanner($input_phone, "Telefonnummer")
    $combo_customer_type = GUICtrlCreateCombo("Kundentyp:", 362, 15, 115, -1, $CBS_DROPDOWNLIST)
    GUICtrlSetData(-1, "Private |Business", "")
    $input = GUICtrlCreateEdit("", 20, 50, 457, 120, BitOR($WS_VSCROLL, $ES_MULTILINE, $ES_AUTOVSCROLL, $ES_WANTRETURN))
    $button_input = GUICtrlCreateButton("Mediatrix Mail erstellen", 190, 200, 120, 19)
    GUICtrlSetState($button_input, $GUI_DISABLE)
    
    
    GUISetState(@SW_SHOW, $GUI)
    AdlibRegister("_CheckInput")
    
    
    While 1
    	Switch GUIGetMsg()
    		Case $button_input
    			MsgBox(0, $WinTitle, "Jetzt kann die Mail verschickt werden! :-)")
    		Case $combo_anrede
    			If GUICtrlRead($combo_anrede) <> "Anrede auswählen:" Then
    				GUICtrlSetState($input_anrede, $GUI_SHOW)
    			Else
    				GUICtrlSetState($input_anrede, $GUI_HIDE)
    			EndIf
    		Case $GUI_EVENT_CLOSE
    			Exit
    	EndSwitch
    WEnd
    
    
    Func _CheckInput()
    	Local $iCheck = 0
    	$iCheck += Number(GUICtrlRead($combo_anrede) <> "Anrede auswählen:")
    	$iCheck += Number(GUICtrlRead($input_anrede) <> "")
    	$iCheck += Number(GUICtrlRead($input_phone) <> "")
    	$iCheck += Number(GUICtrlRead($combo_customer_type) <> "Kundentyp:")
    	$iCheck += Number(GUICtrlRead($input) <> "")
    	If $iCheck = 5 Then
    		GUICtrlSetState($button_input, $GUI_ENABLE)
    	Else
    		GUICtrlSetState($button_input, $GUI_DISABLE)
    	EndIf
    EndFunc
    Alles anzeigen
  • GUI Switch Case bei Mausklick via _GUICtrlListView_GetSelectionMark

    • Oscar
    • 2. September 2015 um 16:03

    Hier mal ein Beispiel, wie das im OnEventMode ganz ohne WM_NOTIFY funktioniert:

    AutoIt
    #include <Array.au3>
    #include <GUIConstantsEx.au3>
    #include <GuiListView.au3>
    #include <ListViewConstants.au3>
    
    
    Opt('GUIOnEventMode', 1)
    
    
    $hGui = GUICreate('Test', 320, 300)
    GUISetOnEvent($GUI_EVENT_CLOSE, '_CloseGui')
    
    
    $idListview = GUICtrlCreateListView('col 1|col 2|col 3', 10, 10, 300, 280, $LVS_SHOWSELALWAYS)
    For $i = 0 To 9
    	$sItem = Random(1, 9, 1) & '|' & Random(1, 9, 1) & '|' & Random(1, 9, 1)
    	GUICtrlCreateListViewItem($sItem, $idListview)
    	GUICtrlSetOnEvent(-1, '_ClickListView')
    Next
    GUISetState(@SW_SHOW)
    
    
    WinWaitClose($hGui)
    Exit
    
    
    Func _CloseGui()
    	GUIDelete($hGui)
    EndFunc   ;==>_CloseGui
    
    
    Func _ClickListView()
    	; Single-Select
    	Local $sText = GUICtrlRead(@GUI_CtrlId)
    	ConsoleWrite($sText & @CR)
    
    
    	; Multi-Select
    	Local $sSelected = ControlListView($hGui, '', $idListview, 'GetSelected', 1)
    	If $sSelected = '' Then Return
    	Local $aSelectedIndices = StringSplit($sSelected, '|', 2)
    	Local $aSelectedText[UBound($aSelectedIndices)]
    	For $i = 0 To UBound($aSelectedIndices) - 1
    		For $j = 0 To 2
    			$aSelectedText[$i] &= ControlListView($hGui, '', $idListview, 'GetText', $aSelectedIndices[$i], $j) & '|'
    		Next
    		$aSelectedText[$i] = StringTrimRight($aSelectedText[$i], 1)
    	Next
    	_ArrayDisplay($aSelectedText)
    EndFunc   ;==>_ClickListView
    Alles anzeigen
  • StringLower richtig einsetzen

    • Oscar
    • 31. August 2015 um 17:25

    Benutze statt "StringLower" einfach "_StringProper".

  • Herausfinden, ob Windows gerade einen Alarmsound abspielt

    • Oscar
    • 30. August 2015 um 07:45

    Auch wenn das geht, was ist, wenn der Benutzer den Sound ausgeschaltet hat?
    Mal abgesehen davon, dass das viel zu umständlich ist. Wenn ein Fehler auftritt wird mit großer Wahrscheinlichkeit der Benutzer auch über ein Fenster darauf hingewiesen.
    Und das auftauchen des Fensters lässt sich viel leichter feststellen (WinExists, WinWait).

  • _WinAPI_EnumFiles im lokalen Netzwerk

    • Oscar
    • 30. August 2015 um 07:36

    Also das: "\\?\d:\" (mit Doppelpunkt für das Laufwerk) funktioniert. Die anderen Freigaben wie z.B. "Users" funktionieren so aber nicht.

  • _WinAPI_EnumFiles im lokalen Netzwerk

    • Oscar
    • 29. August 2015 um 17:37

    Ähm...ich weiß nicht wieso, aber heute klappt der Zugriff auf einen anderen Rechner im lokalen Netzwerk (_WinAPI_EnumFiles liefert mir die Verzeichnis-/Dateiliste).

    Der Zugriff auf Localhost (egal ob über Localhost, Computernamen oder IP) verursacht aber immer noch den Fehler (error: 10 extended: C000000D).

    Das ist alles sehr eigenartig...

    Schade, ich würde gern _WinAPI_EnumFiles nutzen, aber wenn das nicht überall funktioniert, dann muss ich wohl doch auf _FileListToArray ausweichen.

  • _WinAPI_EnumFiles im lokalen Netzwerk

    • Oscar
    • 28. August 2015 um 19:43

    So, ich habe jetzt von v3.3.14.0. noch auf v3.3.14.1 geupdatet.

    Zu Deinen Fragen:
    1. Ich weiß nicht, was Du mit Kommandozeile meinst, aber in einer Eingabeaufforderung kann man das Verzeichnis so nicht eingeben: "Der Befehl "\\localhost\d\" ist entweder falsch geschrieben oder konnte nicht gefunden werden.".
    2. Der Fehler tritt auch auf, wenn ich das Script bei mir auf meinen Rechner (Localhost) aufrufe. Das Laufwerk "D" ist als erweiterte Freigabe (Heimnetzgruppe) mit Berechtigung "Jeder" und "Vollzugriff" freigegeben.
    3. Keine versteckte Freigabe (siehe 2.)
    4. Ich kann den Pfad im Explorer öffnen, mit dem TotalCommander und selbst mit Firefox kann ich auf den Pfad zugreifen.
    5. aktuellste AutoIt-Version v3.3.14.1
    6. MD5-Hash von "WinApiFiles.au3": 869827e8ee7867c597e7925859fdc581
    7. Ich habe ebenfalls Win7, 64 Bit
    8. Ziel ist Localhost
    9. Siehe 8.


    Hier noch das Testscript:


    AutoIt
    #include <Array.au3>
    #include <File.au3>
    #include <WinAPIFiles.au3>
    
    
    Global $sPath = '\\localhost\d\'
    
    
    Global $aFolder = _WinAPI_EnumFiles($sPath)
    ConsoleWrite('error: ' & @error & ' extended: ' & Hex(@extended, 8) & @CR)
    _ArrayDisplay($aFolder, '_WinAPI_EnumFiles')
    Global $aFolder = _FileListToArray($sPath)
    ConsoleWrite('error: ' & @error & ' extended: ' & Hex(@extended, 8) & @CR)
    _ArrayDisplay($aFolder, '_FileListToArray')
    Alles anzeigen

    Der erste Teil schmeißt als Fehler: error: 10 extended: C000000D
    Der zweite Teil gibt mir die Verzeichnisliste aus.

  • _WinAPI_EnumFiles im lokalen Netzwerk

    • Oscar
    • 28. August 2015 um 11:14

    Wie ich oben schon geschrieben habe, funktioniert es ja mit "_FileListToArray". An den Zugriffsrechten liegt es nicht.
    Nur mit "_WinAPI_EnumFiles" funktioniert es nicht.

  • _WinAPI_EnumFiles im lokalen Netzwerk

    • Oscar
    • 28. August 2015 um 10:28

    Ich würde gern die Funktion "_WinAPI_EnumFiles" einsetzen, um mir Verzeichnisse/Dateien von einer Netzwerk-Freigabe ("\\Server\d\") anzeigen zu lassen, aber damit bekomme ich immer eine Fehlermeldung:
    error: 10 extended: C000000D


    Nun habe ich danach gegoogelt und lt. MSDN bedeutet das: STATUS_INVALID_PARAMETER (An invalid parameter was passed to a service or function.)
    Tja, und jetzt weiß ich nicht weiter. :huh:

    Wenn ich hingegen die Funktion "_FileListToArray" benutze, bekomme ich eine Auflistung der Verzeichnisse/Dateien von der Freigabe. Es liegt also nicht am Netzwerk oder an den Zugriffsrechten.
    Weiß jemand, warum das nicht mit "_WinAPI_EnumFiles" funktioniert?

  • Problem mit _GUICtrlListView_SetItemSelected()

    • Oscar
    • 27. August 2015 um 18:11

    Das ist das Problem! Wenn ein Variant-Datentyp benutzt wird, dann müssen auch die Funktionen damit arbeiten können.
    Wenn ich jetzt bei jeder Funktion erst checken muss, ob der Datentyp passt, dann ist es einfacher gleich die Variablen entsprechend zu deklarieren.
    Für mich handelt es sich dabei um einen Bug.

  • Problem mit _GUICtrlListView_SetItemSelected()

    • Oscar
    • 27. August 2015 um 17:36

    Das hatte auch mal ohne Berechnung funktioniert. In irgendeiner AutoIt-Version muss das geändert worden sein.

  • Problem mit _GUICtrlListView_SetItemSelected()

    • Oscar
    • 27. August 2015 um 16:06

    Ein Beispiel dafür, dass die ListView-UDF noch Probleme mit der Control-ID hat.
    _GUICtrlListView_SetItemSelected funktioniert nur mit dem Handle des ListViews:

    AutoIt
    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ListViewConstants.au3>
    #include <WindowsConstants.au3>
    #include <ListViewConstants.au3>
    #include <GuiListView.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 376, 284, 192, 124)
    $ListView1 = GUICtrlCreateListView("TEST - Name", 152, 50, 177, 217)
    GUICtrlCreateListViewItem("Tester", $ListView1)
    GUICtrlCreateListViewItem("Mustermann", $ListView1)
    $Button1 = GUICtrlCreateButton("Button1", 24, 40, 113, 33)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    
    
    While 1
    	$nMsg = GUIGetMsg()
    	Switch $nMsg
    		Case $GUI_EVENT_CLOSE
    			Exit
    		Case $Button1
    			$selected = _GUICtrlListView_GetSelectedIndices($ListView1)
    			ConsoleWrite('$selected: ' & $selected & @CR)
    			_GUICtrlListView_DeleteAllItems($ListView1)
    			GUICtrlCreateListViewItem("Tester", $ListView1)
    			GUICtrlCreateListViewItem("MusterFrau", $ListView1)
    			$iRet = _GUICtrlListView_SetItemSelected(GUICtrlGetHandle($ListView1), $selected, True, True)
    			ConsoleWrite($iRet & @CR)
    	EndSwitch
    WEnd
    Alles anzeigen


    Edit: Nanu!? AutoBert hat auch recht. Wenn man explizit in Int wandelt, funktioniert auch die Ctlr-ID. Was ist denn mit der automatischen Typwandlung von AutoIt los?

  • AHV AutoIt-Hex-Viewer

    • Oscar
    • 22. August 2015 um 20:21

    Ich bin ja gerade dabei den FileCommander in großen Teilen neu zu schreiben. Bei der Gelegenheit war mir der alte Hex-Viewer schon lange ein Dorn im Auge.
    Der war quasi nur für kleine Dateien zu gebrauchen, bei großen Dateien ist er mit einem Speicherfehler (nicht genügend Arbeitsspeicher) abgestürzt.

    Jetzt habe ich mal einen Hex-Viewer geschrieben, der immer nur einen kleinen Teil (512 Byte) der Datei in den Speicher lädt und diesen Teil anzeigt (Adresse, Hex-Darstellung und ASCII-Anzeige).
    Scrollen kann man mit dem rechten, vertikalen Scrollbalken oder über diverse Tasten: {up}, {down}, {pgup}, {pgdown}, {home} und {end}
    Wenn die Maus über ein Scrollrad verfügt, dann kann man auch damit scrollen.

    Dateien mit einer Dateigröße bis 2^32 Byte ( = 4 GB) sollten sich damit problemlos anzeigen lassen.

    Es handelt sich "nur" um einen Hex-Viewer (kein Editor). Die Datei wird auch nur zum lesen geöffnet.

    Update 05.09.2015 Version 1.1:
    - Fehler beim scrollen mit dem Mausrad behoben. Jetzt wird nur noch im aktiven Hex-Viewer gescrollt.

    Dateien

    AHV_v11.ZIP 639,09 kB – 251 Downloads
  • ListView mehrere Items selektieren?

    • Oscar
    • 21. August 2015 um 14:42

    Der Standard-Stil bei einem ListView ist: $LVS_SHOWSELALWAYS und $LVS_SINGLESEL.
    Will man nun ein ListView mit der Möglichkeit mehrere Einträge zu selektieren, dann lässt man einfach $LVS_SINGLESEL weg oder anders ausgedrückt, man darf den Stil nicht weglassen, sondern muss $LVS_SHOWSELALWAYS als Stil eintragen. Will man diesen Stil auch nicht haben, dann trägt man eine "0" ein. Wichtig ist halt, dass dort kein "-1" steht.

  • PDF-Viewer

    • Oscar
    • 20. August 2015 um 12:17

    Das mit dem teilweisen "nicht refreshen" des Fensters konnte ich reproduzieren (Win7 64 Bit, AutoIt v3.3.14.0).
    Wenn ich aber ein paar kleine Änderungen in Deinem Script vornehme (Style: BitOR($GUI_SS_DEFAULT_GUI, $WS_SIZEBOX, $WS_MAXIMIZEBOX, $WS_OVERLAPPEDWINDOW, $WS_CLIPSIBLINGS, $WS_CLIPCHILDREN) und WM_PAINT) dann scheint das nicht mehr aufzutreten, zumindest bei mir nicht mehr.

    AutoIt
    #include <GUIConstantsEx.au3>
    #include <Math.au3>
    #include <WinAPIGdi.au3>
    #include <WindowsConstants.au3>
    #AutoIt3Wrapper_UseX64=n
    Opt('GUIOnEventMode', 1)
    
    
    
    
    Global $pdfReader, $pdfCtrl, $pdfGUI, $pdfWin
    
    
    $pdfReader = ObjCreate("AcroPDF.PDF.1")
    If Not IsObj($pdfReader) Then Exit MsgBox(16, 'PDF', 'Der AcrobatReader ist nicht installiert!')
    $pdfReader.src = @ScriptDir & "\test.pdf"
    $pdfReader.SetLayoutMode("SinglePage")
    $pdfReader.SetPageMode("none")
    $pdfReader.SetShowToolbar(0)
    $pdfReader.SetShowScrollbars(0)
    $pdfReader.SetView("Fit")
    
    
    $pdfGUI = GUICreate("PDF", 1000, 600, 50, 0, BitOR($GUI_SS_DEFAULT_GUI, $WS_SIZEBOX, $WS_MAXIMIZEBOX, $WS_OVERLAPPEDWINDOW, $WS_CLIPSIBLINGS, $WS_CLIPCHILDREN))
    GUISetOnEvent($GUI_EVENT_CLOSE, '_GuiClose')
    $pdfCtrl = GUICtrlCreateObj($pdfReader, 5, 5, 1000 - 10, 600 - 10)
    
    
    GUISetState()
    GUIRegisterMsg($WM_SYSCOMMAND, "myEventHandler")
    GUIRegisterMsg($WM_PAINT, 'WM_PAINT')
    WinWaitClose($pdfGUI)
    Exit
    
    
    Func _GuiClose()
    	GUIDelete($pdfGUI)
    	Exit
    EndFunc   ;==>_GuiClose
    
    
    Func WM_PAINT($hWnd, $Msg, $wParam, $lParam)
    	If $hWnd = $pdfGUI Then
    		GUICtrlSetState($pdfCtrl, $GUI_HIDE)
    		GUICtrlSetState($pdfCtrl, $GUI_SHOW)
    	EndIf
    	Return $GUI_RUNDEFMSG
    EndFunc   ;==>WM_PAINT
    
    
    Func myEventHandler($hWnd, $Msg, $wParam, $lParam)
    	If $hWnd = $pdfGUI Then
    		Switch $wParam
    			Case 0x0000F060
    				Exit
    		EndSwitch
    	EndIf
    	Return $GUI_RUNDEFMSG
    EndFunc   ;==>myEventHandler
    Alles anzeigen
  • gui button gedrückt halten

    • Oscar
    • 19. August 2015 um 19:09

    Und nun schau Dir mal das Beispiel zu GUICtrlCreateUpdown an... ^^

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™