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

  • PostMessage im background soll die shift taste ignorieren

    • Oscar
    • 15. Oktober 2015 um 05:20

    Warum gehst Du nicht auf die Frage ("was willst du automatisieren?") von AutoBert (Post#2) ein?

    "Send" sollte man nach Möglichkeit vermeiden, wenn man nebenbei noch etwas machen will. Deswegen gibt es ControlSend, ControlSetText, ControlClick...etc...

  • Funktion verlassen

    • Oscar
    • 13. Oktober 2015 um 05:22

    Der Befehl lautet: "Return"

  • Excel_Range_Read gibt nur Nullen aus

    • Oscar
    • 12. Oktober 2015 um 20:14

    Wo ist Dein Script?

  • Skript das auf einem FTP Server einen Ordner anlegt und Daten speichert

    • Oscar
    • 12. Oktober 2015 um 19:43

    Dann schau nochmal genauer hin! ;)
    Beim Befehl "_FTP_Open" gibt es 2 Beispiel-Scripte, beim Befehl "_FTP_FilePut" gibt es ebenfalls 2 Beispiel-Scripte und beim Befehl "_FTP_FileGet" gibt es noch ein Beispiel-Script und zum Befehl "_FTP_DirCreate" gibt es auch noch ein Beispiel-Script. Und das alles in der Version v3.3.8.1.

  • Read file -> return Zeilennummer

    • Oscar
    • 10. Oktober 2015 um 08:37

    Das ist immer wieder der gleiche Fehler!
    FileReadLine niemals mehrfach mit dem Dateinamen aufrufen. Das dauert ewig, weil intern die Datei geöffnet wird, es wird bis zu der Zeile "eingelesen" und dann wird erst die gesuchte Zeile zurückgegeben.
    Wenn Du das mehrfach brauchst, dann immer mit dem Dateihandle arbeiten, also die Datei mit FileOpen öffnen und dann FileReadLine mit dem Dateihandle (Rückgabe von FileOpen) benutzen.
    Am Ende nicht vergessen die Datei mit FileClose wieder zu schliessen, ansonsten liegt ein Lock auf der Datei.

    Wenn Du sowieso jede Zeile durchgehst, brauchst Du dann auch $extend nicht, weil jedes folgende FileReadLine immer die jeweils nächste Zeile einliest.

  • MouseWheel auswerten

    • Oscar
    • 9. Oktober 2015 um 18:36

    Nachdem ich bei meiner Suche nach dem auswerten des Mausrades etliche Scripte gefunden habe, die das per Callback lösen, musste ich jetzt feststellen, dass das viel einfacher geht.
    Man kann einfach $WM_MOUSEWHEEL per GuiRegisterMsg registrieren und bekommt dann alle wichtigen Informationen.
    Hier ist mal ein kleines Beispiel-Script:

    AutoIt
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WinAPI.au3>
    #include <WindowsConstants.au3>
    
    
    Global $iCount = 1000
    Global $hGui = GUICreate('MouseWheel', 320, 240)
    Global $idCounter = GUICtrlCreateLabel($iCount, 80, 20, 160, 40, $SS_RIGHT, $WS_EX_STATICEDGE)
    GUICtrlSetFont(-1, 28, 800, 0, 'Courier New')
    GUICtrlSetBkColor(-1, 0xDDDDDD)
    GUISetState(@SW_SHOW, $hGui)
    GUIRegisterMsg($WM_MOUSEWHEEL, '_WM_MOUSEWHEEL')
    Do
    Until GUIGetMsg() = -3
    Exit
    
    
    Func _WM_MOUSEWHEEL($hWnd, $iMsg, $wParam, $lParam)
    	Local $iWheel = _WinAPI_HiWord($wParam) / 120 ; down = -1, up = 1
    	Local $aGuiInfo = GUIGetCursorInfo($hGui), $iStep = 5
    	If $aGuiInfo[4] = $idCounter Then $iCount += $iWheel * $iStep
    	GUICtrlSetData($idCounter, $iCount)
    	Return $GUI_RUNDEFMSG
    EndFunc
    Alles anzeigen


    Das zählt den Counter rauf/runter, wenn man sich mit der Maus über dem Counterfeld befindet und das Mausrad dreht.

    Edit: Noch ein Nachtrag, weil mir das gerade erst aufgefallen ist. Wenn es noch andere Control-Elemente auf der GUI gibt, die ebenfalls ein scrollen mit dem Mausrad ermöglichen (z.B. Listviews), dann reicht das obige Beispiel nicht aus. Man muss dann dafür sorgen, dass das Label den Focus bekommt. Das geht ganz gut, indem man die Mausbewegung auswertet und dann dem Control-Element unter der Maus den Focus zuweist:

    AutoIt
    #include <GUIConstantsEx.au3>
    #include <GuiListView.au3>
    #include <StaticConstants.au3>
    #include <WinAPI.au3>
    #include <WindowsConstants.au3>
    
    
    Global $iCount = 1000
    Global $hGui = GUICreate('MouseWheel', 320, 240)
    Global $idCounter = GUICtrlCreateLabel($iCount, 80, 20, 160, 40, $SS_RIGHT, $WS_EX_STATICEDGE)
    GUICtrlSetFont(-1, 28, 800, 0, 'Courier New')
    GUICtrlSetBkColor(-1, 0xDDDDDD)
    Global $idList = GUICtrlCreateListView('col1|col2|col3', 10, 70, 300, 150)
    _GUICtrlListView_SetColumnWidth($idList, 0, 200)
    _GUICtrlListView_SetColumnWidth($idList, 1, 200)
    _GUICtrlListView_SetColumnWidth($idList, 2, 200)
    GUISetState(@SW_SHOW, $hGui)
    GUIRegisterMsg($WM_MOUSEWHEEL, '_WM_MOUSEWHEEL')
    While True
    	Switch GUIGetMsg()
    		Case $GUI_EVENT_MOUSEMOVE
    			$aGuiInfo = GUIGetCursorInfo($hGui)
    			GUICtrlSetState($aGuiInfo[4], $GUI_FOCUS)
    		Case $GUI_EVENT_CLOSE
    			Exit
    	EndSwitch
    WEnd
    
    
    Func _WM_MOUSEWHEEL($hWnd, $iMsg, $wParam, $lParam)
    	Local $iWheel = _WinAPI_HiWord($wParam) / 120 ; down = -1, up = 1
    	Local $aGuiInfo = GUIGetCursorInfo($hGui), $iStep = 5
    	If $aGuiInfo[4] = $idCounter Then
    		$iCount += $iWheel * $iStep
    		GUICtrlSetData($idCounter, $iCount)
    	EndIf
    	Return $GUI_RUNDEFMSG
    EndFunc
    Alles anzeigen
  • Dreiecksberechnung

    • Oscar
    • 8. Oktober 2015 um 17:23

    Ganz einfach, wenn man weiß wie's geht. :D
    Vielen Dank!

  • Dreiecksberechnung

    • Oscar
    • 8. Oktober 2015 um 16:23

    Irgendwie ist das mit Mathe zu lange her. X/
    Ich bräuchte mal die Hilfe von jemanden, der fit in Mathe ist.
    Und zwar geht es um die Berechnung einer Seite (a) im rechtwinkligen Dreieck.
    Gegeben ist die Seite (b) und der Winkel Alpha sowie der rechte Winkel. Daraus muss man doch die Seite (a) berechnen können?

    Auf AutoIt angewandt besteht das Problem darin, dass ich einen Teil eines rechtwinkligen Dreiecks ausfüllen möchte.
    Hier mal das Script:

    AutoIt
    #include <GDIPlus.au3>
    Global $hGui = GUICreate('Test', 320, 200)
    GUISetState()
    _GDIPlus_Startup()
    Global $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGui)
    _GDIPlus_GraphicsSetSmoothingMode($hGraphics, 2)
    _GDIPlus_GraphicsSetInterpolationMode($hGraphics, 7)
    Global $aPoints[4][2], $iX = 50, $iY = 80
    $aPoints[0][0] = 3
    $aPoints[1][0] = $iX
    $aPoints[1][1] = $iY
    $aPoints[2][0] = $iX + 130 ; <- b
    $aPoints[2][1] = $iY
    $aPoints[3][0] = $iX + 130 ; <- b
    $aPoints[3][1] = $iY - 50 ; <- a
    Global $hPen = _GDIPlus_PenCreate(0xFF0000FF, 2)
    _GDIPlus_GraphicsDrawPolygon($hGraphics, $aPoints, $hPen)
    $aPoints[1][0] = $iX + 5
    $aPoints[1][1] = $iY - 1
    $aPoints[2][0] = $iX + 80 ; <- b
    $aPoints[2][1] = $iY - 1
    $aPoints[3][0] = $iX + 80 ; <- b
    $aPoints[3][1] = $iY - 50 ; <- a ? Wie berechnet man diesen Wert abhängig von b
    Global $hBrush = _GDIPlus_BrushCreateSolid(0xFF44FF44)
    _GDIPlus_GraphicsFillPolygon($hGraphics, $aPoints, $hBrush)
    Do
    Until GUIGetMsg() = -3
    _GDIPlus_BrushDispose($hBrush)
    _GDIPlus_PenDispose($hPen)
    _GDIPlus_GraphicsDispose($hGraphics)
    _GDIPlus_Shutdown()
    Alles anzeigen
  • Prüfen, ob ein Fenster offen ist, ohne goto

    • Oscar
    • 8. Oktober 2015 um 13:43

    Und warum benutzt Du dafür keine Schleife?

  • Happy Birthday name22

    • Oscar
    • 5. Oktober 2015 um 15:03

    Dem schließe ich mich an!
    Herzlichen Glückwunsch zum Geburtstag!

  • Anfängerfragen – Wer hat Zeit zum Helfen?

    • Oscar
    • 5. Oktober 2015 um 14:59

    Das kann ich Dir nicht sagen! Ich habe bisher nur sehr wenig mit der FF.au3 gemacht.
    Automatisierung von Webseiten ist nicht so mein Gebiet. Hast Du eine Beispielseite, wo das nicht funktioniert?

  • Anfängerfragen – Wer hat Zeit zum Helfen?

    • Oscar
    • 4. Oktober 2015 um 14:21

    Das ist ein Bug in der "FFEx.au3"!

    Die Funktion muss so aussehen:

    AutoIt
    Func _FFGetValueById($sID, $iFilter = 0)
    	Return _FFGetValue($sID, "id", 0, $iFilter)
    EndFunc   ;==>_FFGetValueById

    In der Original-UDF fehlt das Return. Das ist aber erforderlich um den Rückgabewert von _FFGetValue an das aufrufende Script zurückzugeben.
    Genau das gleiche bei der Funktion "_FFGetValueByName":

    AutoIt
    Func _FFGetValueByName($sName, $iIndex = 0, $iFilter = 0)
    	Return _FFGetValue($sName, "name", $iIndex, $iFilter)
    EndFunc   ;==>_FFGetValueByName

    Auch hier muss das "Return" hinzugefügt werden.

  • _FileRenameBox

    • Oscar
    • 4. Oktober 2015 um 13:48

    Ich hab's mal aktualisiert (Post#1)!

  • Fenster umnennen klappt nicht

    • Oscar
    • 3. Oktober 2015 um 13:48

    Dann sag Deinem Kumpel, er soll dem Fenster bei Dir einen neuen Namen geben! :P

    Mal ehrlich, woher sollen wir das wissen, wenn Du uns das Script nicht zeigst? X/

  • eMail via AutoIt?

    • Oscar
    • 1. Oktober 2015 um 16:07

    Oder mit: https://www.autoitscript.com/forum/topic/23…nd-attachments/

  • Probleme beim Script für ein Lexware Backup

    • Oscar
    • 1. Oktober 2015 um 09:24

    Bei mir funktioniert das mit der Zeile (abgeänderter Quell-/Zielpfad)!
    Hast Du denn das Opt('ExpandVarStrings', 1) vorher im Script?
    Wohlgemerkt mit "ExpandVarStrings", nicht mit "ExpandEnvStrings".

  • Wie bearbeite ich das Array

    • Oscar
    • 1. Oktober 2015 um 08:30

    Einfach mit _WinAPI_PathRemoveFileSpec().

  • Probleme beim Script für ein Lexware Backup

    • Oscar
    • 1. Oktober 2015 um 08:03

    Mit Opt('ExpandVarStrings', 1) kannst Du auch die Datums-Makros von AutoIt in den String packen:

    AutoIt
    Opt('ExpandVarStrings', 1)
    
    
    ConsoleWrite('"\\FQDN\@YEAR@_@MON@_@MDAY@_Backup.zip"' & @CR)
  • Probleme beim Script für ein Lexware Backup

    • Oscar
    • 30. September 2015 um 07:40
    Zitat von WebBuddha

    kann ich die Opt('ExpandEnvStrings', 1) an beliebiger Stelle setzen?

    Theoretisch an beliebiger Stelle im Code, aber auf jeden Fall vor dem Benutzen der Environment-Variablen.
    Guter Stil ist es allerdings, alle Optionen (Opt) am Anfang des Scripts zu platzieren. Bei meinen Scripten mache ich das so, dass die Optionen gleich nach den Includes stehen.

  • Taskleiste automatisch ausblenden

    • Oscar
    • 29. September 2015 um 18:22

    Na dann aber als Einzeiler:

    AutoIt
    Func _TrayVisible($_fVisible) ; True/False
    	BitOR(WinSetState("[Class:Shell_TrayWnd]", "", $_fVisible ? @SW_SHOW : @SW_HIDE), WinSetState("[TITLE:Start; CLASS:Button]","",$_fVisible ? @SW_SHOW : @SW_HIDE))
    EndFunc

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™