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

Beiträge von KloMeister

  • Sprungmarke setzen

    • KloMeister
    • 12. Dezember 2014 um 15:03

    Zu Punkt 1.
    Du musst natürlich auch angeben welche Position aus der Liste ausgelesen werden soll. "$iCode", ist glaube ich in dem Code für etwas anderes verantwortlich nicht für die Position.

    Ich habe dir mal eine Funktion zur Erkennung des angewählten Beitrags eingebaut.


    Spoiler anzeigen
    [autoit]


    #include <GUIListBox.au3>
    #include <GuiConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <Constants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    $Debug_LB = False ; Prüft den Klassennamen (ClassName), der an die ListBox-Funktion übergeben wird. Setze dies versuchsweise auf True und verwende dann ein Handle zu einem anderen Control, um die Funktionsweise zu verstehen.

    [/autoit] [autoit][/autoit] [autoit]

    Global $hListBox

    [/autoit] [autoit][/autoit] [autoit]

    _Main()

    [/autoit] [autoit][/autoit] [autoit]

    Func _Main()
    Local $hGUI

    [/autoit] [autoit][/autoit] [autoit]

    ; Erstellt eine GUI
    $hGUI = GUICreate("(UDF) ListBox: Erzeugen", 400, 296)
    $hListBox = _GUICtrlListBox_Create($hGUI, "String bei Erzeugung", 2, 2, 396, 296, $LBS_SORT)
    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")

    [/autoit] [autoit][/autoit] [autoit]

    ; Fügt Dateien hinzu
    _GUICtrlListBox_BeginUpdate($hListBox)
    _GUICtrlListBox_ResetContent($hListBox)
    _GUICtrlListBox_InitStorage($hListBox, 100, 4096)
    _GUICtrlListBox_AddString($hListBox, "Musterfrau D1")
    _GUICtrlListBox_AddString($hListBox, "Mustermann D2")
    _GUICtrlListBox_AddString($hListBox, "Musterkind D3")
    _GUICtrlListBox_AddString($hListBox, "Mustermum D4")
    _GUICtrlListBox_AddString($hListBox, "Musterdad D5")
    _GUICtrlListBox_AddString($hListBox, "Musterfrau DK1")
    _GUICtrlListBox_AddString($hListBox, "Mustermann DK2")
    _GUICtrlListBox_AddString($hListBox, "Musterkind DK3")
    _GUICtrlListBox_AddString($hListBox, "Mustermum DK4")
    _GUICtrlListBox_AddString($hListBox, "Musterdad DK5")
    _GUICtrlListBox_AddString($hListBox, "Musterfrau DKD 1")
    _GUICtrlListBox_AddString($hListBox, "Mustermann DKD 2")
    _GUICtrlListBox_AddString($hListBox, "Musterkind DKD 4")
    _GUICtrlListBox_AddString($hListBox, "Mustermum DKD4")
    _GUICtrlListBox_AddString($hListBox, "Musterdad DKD5")
    _GUICtrlListBox_AddString($hListBox, "Musterfrau PD1")
    _GUICtrlListBox_AddString($hListBox, "Mustermann PD2")
    _GUICtrlListBox_AddString($hListBox, "Musterkind PD3")
    _GUICtrlListBox_AddString($hListBox, "Mustermum PD4")
    _GUICtrlListBox_AddString($hListBox, "Musterdad PD5")
    _GUICtrlListBox_AddString($hListBox, "Musterfrau PDK1")
    _GUICtrlListBox_AddString($hListBox, "Mustermann PDK2")
    _GUICtrlListBox_AddString($hListBox, "Musterkind PDK3")
    _GUICtrlListBox_AddString($hListBox, "Mustermum PDK4")
    _GUICtrlListBox_AddString($hListBox, "Musterdad PDK5")
    _GUICtrlListBox_EndUpdate($hListBox)

    [/autoit] [autoit][/autoit] [autoit]

    ; Die Schleife wiederholt sich, bis der Benutzer die Beenden-Aktion der GUI auslöst
    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE
    EndFunc ;==>_Main

    [/autoit] [autoit][/autoit] [autoit]

    Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
    #forceref $hWnd, $iMsg
    Local $hWndFrom, $iIDFrom, $iCode, $hWndListBox
    If Not IsHWnd($hListBox) Then $hWndListBox = GUICtrlGetHandle($hListBox)
    $hWndFrom = $ilParam
    $iIDFrom = BitAND($iwParam, 0xFFFF) ; Niederwertiges Wort (WORD)
    $iCode = BitShift($iwParam, 16) ; Höherwertiges Wort (WORD)

    [/autoit] [autoit][/autoit] [autoit]

    Switch $hWndFrom
    Case $hListBox, $hWndListBox
    Switch $iCode
    Case $LBN_DBLCLK ; Wird gesendet, wenn der Benutzer einen Doppelklick auf einen String in einer ListBox ausführt
    ; Test MsgBox
    ; MsgBox(0,"hWndFrom / IDFrom / Code", "hWndFrom / IDFrom / Code: " & $hWndFrom & "---" & $iIDFrom & "---" & $iCode)
    local $aItem
    $aItem = _GUICtrlListBox_GetCurSel($hListBox) ;Eintrags Position bekommen
    MsgBox(4160, "ausgewählt", "Sie haben folgende Auswahl getroffen: " & _GUICtrlListBox_GetText($hListBox, $aItem))

    [/autoit] [autoit][/autoit] [autoit]

    EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_COMMAND

    [/autoit]


    Punkt 2.

    Ja du kannst eine .txt Datei erstellen und die mit einem Array über FileReadLine einlesen und dabei deiner Listbox übergeben.

  • In GUICtrlSetData möglich fast 700 Einträge eingeben

    • KloMeister
    • 12. Dezember 2014 um 14:52

    Also ich habe mal 10.000 Einträge über "GUICtrlSetData" eingefügt, geht ohne Probleme, dauert nur dementsprechend:

    [autoit]


    #include <GUIConstantsEx.au3>

    [/autoit][autoit][/autoit][autoit]

    Example()

    [/autoit][autoit][/autoit][autoit]

    Func Example()
    GUICreate("My GUI") ; will create a dialog box that when displayed is centered
    local $i
    local $Items

    [/autoit][autoit][/autoit][autoit]

    for $i = 0 To 10000
    $items = $items & $i & "|"
    next

    [/autoit][autoit][/autoit][autoit]

    GUICtrlCreateCombo("", 10, 10)
    GUICtrlSetData(-1, $items)
    GUISetState(@SW_SHOW)

    [/autoit][autoit][/autoit][autoit]

    While 1
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    ExitLoop
    EndSwitch
    WEnd

    [/autoit]

    Damit die Zeile der Einträge nicht unendlich lang wird, kannst du wie ich in meinem Beispiel auch gemacht habe, mit Hilfe einer Schleife, hinter jeden Eintrag ein "|" einfügen und das Ergebnis in einer Variable speichern.

    Dann brauchst du nurnoch diese Variable der GUICtrlSetData Funktion übermitteln.
    Das macht die Sache zumindest übersichtlicher, als unendlich lange Zeilen zu erzeugen.

  • Inputbox voreingesteller Text

    • KloMeister
    • 12. Dezember 2014 um 14:06
    [autoit]


    #include <GUIConstantsEx.au3>
    #include <WinAPI.au3>

    [/autoit][autoit][/autoit][autoit]

    Global $aInput[5]

    [/autoit][autoit][/autoit][autoit]

    $hGUI = GUICreate("Test", 500, 500)

    [/autoit][autoit][/autoit][autoit]

    $aInput[0] = GUICtrlCreateInput("Some text 1", 10, 10, 200, 20)
    $aInput[1] = GUICtrlCreateInput("Some text 2", 10, 40, 200, 20)
    $aInput[2] = GUICtrlCreateInput("Some text 3", 10, 70, 200, 20)
    $aInput[3] = GUICtrlCreateInput("Some text 4", 10, 100, 200, 20)
    $aInput[4] = GUICtrlCreateInput("Some text 5", 10, 130, 200, 20)

    [/autoit][autoit][/autoit][autoit]

    local $StatusInput[5]

    [/autoit][autoit][/autoit][autoit]

    GUISetState()
    While 1
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit
    Case $GUI_EVENT_PRIMARYUP
    For $i = 0 To UBound($aInput) - 1
    If _WinAPI_GetFocus() = GUICtrlGetHandle($aInput[$i]) Then
    select
    case $StatusInput[$i] = 0
    $StatusInput[$i] = 1
    GUICtrlSetData($aInput[$i], "")
    endselect
    ExitLoop
    EndIf
    Next
    EndSwitch
    WEnd

    [/autoit]
  • Pseudo Desktop - Klasse eines störrischen Programmfensters ermitteln

    • KloMeister
    • 10. Dezember 2014 um 11:56

    Ich weiß nicht genau was du vor hast. Aber reicht es nicht mit "ProcessExists" zu prüfen, ob der Prozess existiert, falls nein dann starten, ansonsten eben nichts tun... oder besser: das Programm in den Vordergrund holen.

  • Combo Control, jedes Item mit eigene Schriftart belegen

    • KloMeister
    • 5. Dezember 2014 um 09:10

    Ich glaube mit dem standard Control geht das nicht. Vielleicht gibt es aber bereits fertige Alternativen, die schon jemand anders programmiert hat..?. Dann musst du zumindest selber kein neues Control schreiben.

  • MouseMove Frage

    • KloMeister
    • 5. Dezember 2014 um 09:03

    @Alina
    Es gibt noch eine etwas leichtere bzw. übersichtlichere Variante um das zu erreichen, was du mit StringSplit erreicht hast:

    [autoit]

    $an_zeit = stringReplace($an_zeit, ":", "")
    $end_zeit = stringReplace($end_zeit,":", "")

    [/autoit]


    Macht die Sache zumindest bei der Abfrage übersichtlicher und spart Programmcode.


    Achja und wenn es nicht Tagmodus ist, dann muss es doch Nachtmodus sein? - also wieso ein ElseIf mit einer weiteren Prüfung?

    Tut da nicht auch ein einfaches:

    [autoit]

    Else
    tagmodus()

    [/autoit]


    ?

  • MouseGetPos(0) in Textfeld

    • KloMeister
    • 4. Dezember 2014 um 15:39

    https://www.autoitscript.com/autoit3/docs/l…dit_SetText.htm

    [autoit]

    #include <GuiEdit.au3> ; Benötigter Include - muss nach ganz oben im Code

    [/autoit][autoit][/autoit][autoit]

    _GUICtrlEdit_SetText ($hWnd, $sText) ; Befehl im Rohformat

    [/autoit][autoit][/autoit][autoit]

    $X1= MouseGetPos()
    _GUICtrlEdit_SetText ($X_, $X1[0]) ; Befehl auf deine Funktion zugeschnitten

    [/autoit]
  • MouseMove Frage

    • KloMeister
    • 4. Dezember 2014 um 15:13

    Da ist einiges "komisch".

    Erstmal verwirren mich die ganzen doppelten Schleifen und Abfragen.
    "While WEnd" und "Do...Until" und dann auch noch eine IF Abfrage? Das lässt sich vermutlich auch mit einer einzigen Schleife mit integrierter Abfrage lösen

    Dann versuchst du Variablen zu vergleichen die einen Zahlenwert mit Doppelpunkt enthalten. Ich glaube, dass AutoIt in dem Fall nicht richtig mit der Formatierung klar kommt, da es sich ja nicht direkt um eine mathematische Zahl handelt.

    Du musst entweder Stunde und Minute nacheinander vergleichen, oder du musst die Zeit komplett in Minuten oder Stunden umrechnen.

  • CMD mit StdoutRead komplett auslesen

    • KloMeister
    • 2. Dezember 2014 um 11:12

    Ich vermute, dass liegt daran, dass die Konsole nicht ansprechbar ist, solange diese etwas ausführt.

    Du hast dann wohl erst wieder Zugriff, wenn die Schleife im Updateprozess unterbrochen wird.

    Eine Lösung direkt habe ich aber auch nicht. Wird wohl nicht ganz einfach werden. Ich vermute, man muss dafür mit Speicher-Hooks arbeiten, um einen Break im CMD auszulösen und damit die Konsole auslesefähig zu machen.

  • Resize auf UDF erzeugte Controls

    • KloMeister
    • 27. November 2014 um 14:52

    ich habe das ganze mal gebaut mit dem automatischen Child Enum. Lustigerweise reagiert die Listview, die mit "_GUICtrlListView_Create" wurde, wiedermal nicht :D .

    Interessant ist auch, dass die Buttons sich zwar in ihrer Position ändern, aber nicht in ihrer Größe... Andere Steuerelemente funktionieren einwandfrei.


    Hier trotzdem der Code, da er ja mit normalen Steuerelementen teils funktioniert (Hilft dir zwar nicht, aber Anderen eventuell):

    Es reicht nun, wenn die beiden unteren Funktionen im Code vorhanden sind.

    Mit der Funktion "Resize_All($FensterGui)" lassen sich nun automatisch alle Steuerelemente die sich auf der Form befinden ansprechen und der Fenstergröße entsprechend resizen. Diese Funktion sollte idealerweise dann mit dem Resize Event ausgelöst werden.


    Spoiler anzeigen
    [autoit]

    #include <guiconstants.au3>
    #include <GuiComboBoxEx.au3>
    #Include <GuiListView.au3>
    #include <WinAPISys.au3>

    [/autoit] [autoit][/autoit] [autoit]

    $gui = GUICreate('Test Combo',700,600,-1,-1,$GUI_SS_DEFAULT_GUI + $WS_SIZEBOX)

    [/autoit] [autoit][/autoit] [autoit]

    $Button1 = GUICtrlCreateButton("Button1", 280, 136, 289, 81)
    $Edit1 = GUICtrlCreateEdit("", 8, 136, 209, 81)
    GUICtrlSetData(-1, "Edit1")
    $Group1 = GUICtrlCreateGroup("Group1", 16, 232, 185, 113)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Button2 = GUICtrlCreateButton("Button2", 216, 136, 49, 81)
    $List1 = GUICtrlCreateList("", 16, 16, 121, 97)
    $Combo1 = GUICtrlCreateCombo("Combo1", 184, 40, 145, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
    $Slider1 = GUICtrlCreateSlider(192, 72, 150, 45)
    GUICtrlCreateGroup("", -99, -99, 1, 1)

    [/autoit] [autoit][/autoit] [autoit]

    $lv = _GUICtrlListView_Create($gui, 'Bla|Blub|Tralala', 16,350,658,380)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    Do
    $msg = GUIGetMsg()
    If $msg = $GUI_EVENT_RESIZED Then
    _Resize_All($gui)
    EndIf
    Until $msg = $GUI_EVENT_CLOSE

    [/autoit] [autoit][/autoit] [autoit]

    Func _Resize_All ($hForm_Resize)
    Global $szWnd = WinGetPos($hForm_Resize)
    Global $DataChilds = _WinAPI_EnumChildWindows($hForm_Resize)
    Global $ChildArray
    for $ChildArray = 1 to UBound($DataChilds) -1
    Global $szElement = ControlGetPos($hForm_Resize, '', $DataChilds[$ChildArray][1])
    _ResizeCtrl($szWnd, $DataChilds[$ChildArray][1], $hForm_Resize, $szElement)
    next
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    ;===============================================================================
    ; Function Name: _ResizeCtrl($hWnd, $hCtrl, $aSzWnd, $aSzCtrl)
    ; ....
    ; Author(s): BugFix ([email='bugfix@autoit.de'][/email])
    ;===============================================================================

    [/autoit] [autoit][/autoit] [autoit]

    Func _ResizeCtrl($hWnd, $hCtrl, $aSzWnd, $aSzCtrl)
    Local $WinSize = WinGetPos($hWnd)
    If @error Then Return SetError(1)
    If ControlGetHandle($hWnd, '', $hCtrl) = '' Then Return SetError(2)
    If (Not IsArray($aSzWnd)) Or (Not IsArray($aSzCtrl)) Then Return SetError(3)
    Local $saveMode = Opt('GUICoordMode',1)
    Local $newWidth = Round($WinSize[2]*($aSzCtrl[2]/$aSzWnd[2]))
    Local $newHeight = Round($WinSize[3]*($aSzCtrl[3]/$aSzWnd[3]))
    Local $newX = Round($WinSize[2]*($aSzCtrl[0]/$aSzWnd[2]))
    Local $newY = Round($WinSize[3]*($aSzCtrl[1]/$aSzWnd[3]))
    ControlMove($hWnd, '', $hCtrl, $newX, $newY, $newWidth, $newHeight)
    Opt('GUICoordMode',$saveMode)
    Return 1
    EndFunc ;==>_ResizeCtrl

    [/autoit]

    Aber im Grunde haben wir wieder das selbe, wie AutoIt schon standardmäßig kann. Kleiner Vorteil daran ist vielleicht, das man diese Funktion auch an fremden Fenstern nutzen könnte.

  • Resize auf UDF erzeugte Controls

    • KloMeister
    • 27. November 2014 um 13:43

    Das Problem ist, die Funktion wird von AutoIt bereit gestellt, so das du im Prinzip keinen Einfluss darauf hast. Die Frage ist, warum Controls die mit einer UDF erstellt wurden, ignoriert werden...

    Mit mäßigem Aufwand, kann man eine eigene Auto-Resize Funktion erstellen.

    Mit der Funktion "_WinAPI_EnumChildWindows", bekommt man alle Handle's der Steuerelemente, die auf der Form sind.
    Dann ließt du einfach die Array-Größe aus und machst ne For Next Schleife, in welcher die Größe und Position der Steuerelemente mit Hilfe der Handle's ausgelesen werden und auf die aktuelle Formgröße umberechnet werden. Die Funktion führst du immer dann aus, wenn du ein "$GUI_EVENT_RESIZED" bekommst.

    Das gute daran ist, diese Funktion ist universell für jede Form nutzbar, wenn man sie einmal hat, dann hat man sie.

    Vielleicht gibt es ja auch bereits jemanden, der diese Funktion geschrieben hat?
    Vermutlich eher weniger, da man im Normalfall ja die integrierte Resize Funktion nutzen kann...

    Edit:
    Ja es gibt jemanden, der zumindest schon 80% erledigt hat:
    Siehe hier:
    https://autoit.de/index.php/Thre…istView-Create/

    Wenn du das mit dem ChildEnum kombinierst, hast du eine Funktion in der Tasche, die du auch in Zukunft ohne zusätzlichen Code, auf jeder Form nutzen kannst.

  • Winwaitactiv timeout problem

    • KloMeister
    • 26. November 2014 um 11:55

    Hab mein Post nochmal angepasst, weil ich der Meinung bin, dass ich doch nicht ganz verstanden habe, was du genau vor hast.

    Du willst vermutlich in deine Funktion zurückspringen, wenn das Fenster für eine bestimmte Zeit inaktiv war?

    Dann versuch es mal so wie hier, dass du den "Zustand" in einer Variable speicherst und abfragst.

    Hier mal 2 mögliche Varianten um den Fenster-Zustand abzufragen.

    [autoit]

    local $Status = WinWaitActive("[CLASS:Notepad]", "", 5)
    Select
    Case $Status = 0
    msgbox(0,"","Editor war 5 Sek inaktiv")
    Case else
    msgbox(0,"", "Editor ist aktiv")
    Endselect

    [/autoit]


    [autoit]

    Do
    local $Status = WinWaitActive("[CLASS:Notepad]", "", 5)
    until $Status = not 0 ; Entfernst du das not, dann geht es nur weiter wenn das Fenster 5 Sek inaktiv ist

    [/autoit][autoit][/autoit][autoit]

    msgbox(0,"","Hier gehts nur weiter wenn das Fenster aktiv ist")

    [/autoit]
  • Pseudo Desktop

    • KloMeister
    • 21. November 2014 um 21:12

    Was ich noch einbauen würde, um das ganze professioneller, dynamischer und universeller zu gestalten:

    Eine Datei (.txt) die eingelesen wird und deinem Programm mitteilt, welche Buttons existieren und welches Icon mit auszuführendem Programm dazu gehört.

    Beispiel:
    Eine Datei wird einglesen mit z.B. folgendem Aufbau:

    Code
    ---Bereich Blau---
    C:\Windows\System32\mspaint.exe | Icon1.jpg
    C:\Windows\System32\calc.exe | Icon2.jpg
    ---Bereich Gruen---
    C:\Windows\System32\cmd.exe | Icon1.jpg
    C:\Windows\System32\msinfo32.exe | Icon4.jpg
    C:\Windows\System32\regedt32.exe | Icon3.jpg
    C:\Windows\System32\mspaint.exe | Icon5.jpg
    ---Bereich Gelb---
    ....


    Je nach entsprechender Berechnung, könnte man z.B. sagen bis zu 9 Schaltflächen passen auf einen Farbbereich.
    Die Datei wird dann reihenweise eineglesen, mithilfe der Bildschirmauflösung wird die entsprechende Größe und der Abstand der Schaltflächen berechnet. Die Schaltflächen bekommen dann die in der Datei festgelegten Icon-Bilder mit dem dazugehörigen auszuführendem Program-Pfad.

    Das gute an der Sache, man kann auch ohne AutoIt, die Schaltflächen jederzeit anpassen.


    Grobe Vorangehensweise für den Code:

    Datei Zeilenweise einlesen...
    Mit Case abfragen welcher Bereich (Rot, Blau Grün..).
    Mit Split "|" den String teilen und die Pfade zuweisen.
    Den Schaltflächen Index mithilfe eines Arrays zuweisen für GUI Msg
    Und die entsprechenden Positionen für die Schaltflächen-Position durch Bildschirmauflösung und entsprechender Additionswerte berechnen und festlegen (Mit ein paar Resets und Abfragen).

  • _GDIPlus_GraphicsDraw spiegeln und drehen

    • KloMeister
    • 18. November 2014 um 09:41

    Theoretisch, wenn das Projekt universell bleiben soll und beliebige Daten importieren können soll, müsste man noch zwei weitere Schritte einbauen.

    1. prüfen wie Groß die maximalen Parameter von X und Y der Grafik sind und daran die Form anpassen (gegebenenfalls sogar die Grafik kleiner zeichnen - die Koordinaten durch Faktor "X" teilen)

    2. Mithilfe des größten Parameter von Y der geladenen Koordinaten, den Punkt der Spiegelachse festlegen.

  • _GDIPlus_GraphicsDraw spiegeln und drehen

    • KloMeister
    • 18. November 2014 um 09:24

    Versuchs mal so:

    [autoit]


    #include <GDIPlus.au3>
    #include <GUIConstantsEx.au3>
    #include <Array.au3>
    #include <File.au3>
    #include <GDIPlus.au3>
    #include <GUIConstantsEx.au3>
    #include <MsgBoxConstants.au3>
    #include <WindowsConstants.au3>
    Global $g_hGUI, $g_hGraphics, $g_hBmp_Buffer, $g_hGfx_Buffer, $g_hImage
    Global $g_iMouseX, $g_iMouseY
    Local $hGUI, $hGraphic, $hPen,$aArray,$g_hBmp_Buffer,$g_hGraphics
    Local $g_iMouseX,$g_iMouseY,$lParam

    [/autoit][autoit][/autoit][autoit]

    $hGUI = GUICreate("GDI+", 1000, 300)
    GUISetState(@SW_SHOW)

    [/autoit][autoit][/autoit][autoit]

    _GDIPlus_Startup()
    $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI)
    If Not _FileReadToArray("a2.din", $aArray, 0) Then
    MsgBox($MB_SYSTEMMODAL, "", "There was an error reading the file. @error: " & @error) ; An error occurred reading the current script file.
    EndIf

    [/autoit][autoit][/autoit][autoit]

    For $x = 1 To UBound($aArray)-1
    If StringInStr($aArray[$x],"G00 X") Then
    ;~ _GDIPlus_GraphicsDrawLine($hGraphic, StringTrimLeft($spl[2],1), StringTrimLeft($spl[3],1), StringTrimLeft($spl2[2],1), StringTrimLeft($spl2[3],1), $hPen)
    ElseIf StringInStr($aArray[$x],"G01 X") Then
    $spl = StringSplit($aArray[$x]," ")
    $spl2 = StringSplit($aArray[$x-1]," ")
    If $spl[0] >= 3 and $spl2[0] >= 3 Then
    IF StringTrimLeft($spl2[2],1) = "-0.1" Then
    Else
    _GDIPlus_GraphicsDrawLine($hGraphic, StringTrimLeft($spl[2],1), 300 -StringTrimLeft($spl[3],1), StringTrimLeft($spl2[2],1), 300 -StringTrimLeft($spl2[3],1), $hPen)
    EndIf
    EndIf
    EndIf
    Next

    [/autoit][autoit][/autoit][autoit]

    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE

    [/autoit][autoit][/autoit][autoit]

    ; Clean up resources
    _GDIPlus_PenDispose($hPen)
    _GDIPlus_GraphicsDispose($hGraphic)
    _GDIPlus_Shutdown()

    [/autoit]
  • Fenster minimieren

    • KloMeister
    • 17. November 2014 um 15:56

    Was vermutlich einfacher und sinnvoller wäre, wäre folgender Variante:

    Du entfernst das Intel Extreme Tuning Utility aus dem Autostart.

    Dafür baust du ein AutoIt Program, welches im Autostart ist. Dieses AutoIt-Tool startet dann einfach das "Intel Extreme Tuning Utilty" im Tray-Modus und beendet sich danach selber.

    Fertig.

    Wäre meines Erachtens sinnvoller und einfacher umzusetzen.


    Kann natürlich auch sein, das ich da irgendwelche Probleme nicht berücksichtigt habe.

  • Package.wms -> Windows RegFile

    • KloMeister
    • 14. November 2014 um 08:52

    Es geht ja auch darum, dass du etwas dabei lernst und selber etwas zu deinem Programm beiträgst.

    Wichtig ist zu wissen, wo genau du nicht weiterkommst und wie erfahren du im allgemeinen mit AutoIt bist.

    Darauf aufbauend kann man dann weiterarbeiten / helfen.

  • Package.wms -> Windows RegFile

    • KloMeister
    • 13. November 2014 um 16:28

    Hier mal ein grobes Beispiel zum splitten:

    [autoit]

    #include <StringConstants.au3>
    #include <MsgBoxConstants.au3>
    #include <Array.au3>

    [/autoit][autoit][/autoit][autoit]

    Example()

    [/autoit][autoit][/autoit][autoit]

    Func Example()
    local $RegPfad
    local $Datentyp

    [/autoit][autoit][/autoit][autoit]

    Local $sText = "Register64 'HKey_Local_Machine' 'SYSTEM\CurrentControlSet\Control\Class\{4D36E968-E325-11CE-BFC1-08002BE10318}\0002' 'InfPath' 'oem12.inf' 'REG_SZ'" ;Einzulesene Zeile - Hier einfach Schleife, die Zeilenweise bis zum Ende deiner Datei einließt.
    Local $aArray = StringSplit($sText, "'")

    [/autoit][autoit][/autoit][autoit]

    $Regpfad = $aArray[2] & "\" & $aArray[4]

    [/autoit][autoit][/autoit][autoit]

    For $i = 5 To $aArray[0]

    [/autoit][autoit][/autoit][autoit]

    Select
    Case $aArray[$i] = "REG_SZ"
    $Datentyp = "REG_SZ"

    [/autoit][autoit][/autoit][autoit]

    Case $aArray[$i] = "REG_DWORD"
    $Datentyp = "REG_DWORD"

    [/autoit][autoit][/autoit][autoit]

    Case $aArray[$i] = "REG_MULTI_SZ"
    $Datentyp = "REG_MULTI_SZ"

    [/autoit][autoit][/autoit][autoit]

    Case $aArray[$i] = "REG_BINARY"
    $Datentyp = "REG_BINARY"

    [/autoit][autoit][/autoit][autoit]

    Case $aArray[$i] = " "

    [/autoit][autoit][/autoit][autoit]

    Case $aArray[$i] = ""

    [/autoit][autoit][/autoit][autoit]

    Case Else
    msgbox (0,"Variablen",$aArray[$i])

    [/autoit][autoit][/autoit][autoit]

    EndSelect
    Next

    [/autoit][autoit][/autoit][autoit]

    msgbox(0,"Reg_Pfad", $Regpfad )
    msgbox(0,"Daten_Typ", $Datentyp )
    EndFunc

    [/autoit]

    Zum Schlüssel gehörige Values, werden noch nicht getrennt erkannt.

  • Package.wms -> Windows RegFile

    • KloMeister
    • 13. November 2014 um 13:42

    Das kann man z.B. folgender maßen machen:

    Du ließt deine Datei Zeilenweise ein. Darauffolgend suchst du mit StringInStr und / oder "StringSplit" die entsprechend für den Registry-Eintrag notwendigen Textanteile heraus. Dazu bedarf es etwas Logik (Also ein paar Abfragen). Die jeweiligen Text-Anteile weißt du einer Variable zu.


    Danach fügst und formatierst du deinen String entsprechend wie es für die Reg-Datei notwendig ist zusammen

    Der Aufbau ist so:

    Code
    Windows Registry Editor Version 5.00
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_MAXCONNECTIONSPERSERVER 
    "iexplore.exe "=dword:0000000a
    "XXXX"=dword:0000000a
    ...

    Das ganze speicherst du dann in einer .reg Datei ab.

  • Datengrösse bei Filecopy der Copy ermitteln

    • KloMeister
    • 13. November 2014 um 09:27

    Als weitere Option wäre da noch die Möglichkeit, die Win-API Funktion "CopyFileEx" zu nutzen. Diese bietet die Möglichkeit den Kopierfortschritt anzeigen zu lassen. Mit Google (Suche nach: "CopyfileEx AutoIt") findet man da auch ein paar Beispiel-Ansätze.

    Unteranderem gibt es die UDF "_MultiFileCopy", die bietet bereits eine einfache Lösung.

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™