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

Beiträge von Bitnugger

  • AutoIt 3.3.14.5 - verwendet ihr die?

    • Bitnugger
    • 22. April 2018 um 16:53

    Ich habe die 3.3.14.5 installiert und kann mich nicht beklagen. Die alten Scripte anzupassen ist kein großer Akt. Die WinGetState Constants sind nun in AutoItConstants.au3 enthalten.

  • "query user" mit Run( ) aufrufen - Ergebnis auslesen

    • Bitnugger
    • 20. April 2018 um 10:12

    Ja, ok, gebe dir in allen Punkten Recht... wollte eigentlich nur darauf hinweisen, dass Wow64EnableWow64FsRedirection nur ausgeführt werden muss, wenn @OSArch = "X64" und @AutoItX64 = 0 ist.

  • "query user" mit Run( ) aufrufen - Ergebnis auslesen

    • Bitnugger
    • 20. April 2018 um 08:57

    Habe es noch ein wenig geändert...

    AutoIt
    Func _QueryUser()
        If @OSArch & @AutoItX64 = 'X640' Then DllCall('kernel32.dll', 'boolean', 'Wow64EnableWow64FsRedirection', 'boolean', False)
        Local $iPID = Run(@WindowsDir & "\system32\query.exe user", "", @SW_HIDE, 2) ; 2=$STDOUT_CHILD
        If @OSArch & @AutoItX64 = 'X640' Then DllCall('kernel32.dll', 'boolean', 'Wow64EnableWow64FsRedirection', 'boolean', True)
        ProcessWaitClose($iPID)
        Local $aRegEx = StringRegExp(StdoutRead($iPID), "[\s>](\S+)\s+(\S+)?\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+\s\S+)", 3)
        If @error Then Return SetError(1)
        Local $aOut[UBound($aRegEx)/6][6]
        For $i = 0 To UBound($aOut) -1
            For $j = 0 To 5
                $aOut[$i][$j] = $aRegEx[$i*6+$j]
            Next
        Next
        Return $aOut
    EndFunc
    Alles anzeigen
  • SQLite - Bsp. für gleichzeitigen Zugriff auf mehrere Datenbanken

    • Bitnugger
    • 18. April 2018 um 10:38
    Zitat von BugFix

    Das kann ja jeder für sich behandeln, wie er mag.

    Schon klar... im @ScriptDir wird aber doch eh als erstes nach der Dll gesucht... und falls sie dort nicht gefunden wird... zusätzlich auch in @SystemDir, @WindowsDir und @WorkingDir ...aber wenn du den Pfad explizit angibst, wird nur in diesem Pfad gesucht!

    $sDll_Filename explizit anzugeben macht also nur Sinn, wenn die Dll umbenannt wurde und/oder nicht in in einem der obigen 4 Pfade liegt.

  • SQLite - Bsp. für gleichzeitigen Zugriff auf mehrere Datenbanken

    • Bitnugger
    • 18. April 2018 um 10:21

    Ich hatte es bereits vermutet, war mir aber nicht sicher... erstmals aufgefallen sind sie mir hier in dem Script: Hier das korrigierten Script

  • SQLite - Bsp. für gleichzeitigen Zugriff auf mehrere Datenbanken

    • Bitnugger
    • 18. April 2018 um 09:39

    Schau mal in Zeile 9 und 10... wo kommt denn da das \m und das \a her?

    Edit: Zeile 5 würde ich so ändern...

    _SQLite_Startup() ; sqlite3.dll muss im @ScriptDir, @SystemDir, @WindowsDir, oder @WorkingDir sein.

  • Problem beim Installieren in VirtualBox

    • Bitnugger
    • 17. April 2018 um 16:05
    Zitat von NO1 :-)

    Hast du schon geschaut ob sich AIMP im silent-Mode installieren lässt?

    Silent Installation Switch: ${sharedPath} & aimp_4.50.2058.exe /AUTO /SILENT

  • [Gelöst] WinGetPos liefert unterschiedliche Werte...

    • Bitnugger
    • 16. April 2018 um 20:47

    Auf Win7 Pro x64 habe ich es auch getestet... selbes Spiel wie auf Win 10 X64!

    Der Fehler tritt allerdings nur dann auf, wenn ich das Script mit F5 in SciTE starte... die ersten direkt im Script ermittelten Werte für WinPos sind dann immer 800 x 600, alle weiteren Werte für WinPos, die mit dem Einzeiler ermittelt werden, sind dann 809 x 614!

    Starte ich das Script in der Eingabeaufforderung - egal ob kompiliert oder nicht - stimmen die Werte immer überein.

    Und ...ach neee... das sehe ich erst jetzt...

    pasted-from-clipboard.png

    Neue Version
    Code
    ;-- TIME_STAMP   2018-04-16 20:33:08   v 0.1
    
    #pragma compile(AutoItExecuteAllowed, True)
    #AutoIt3Wrapper_Change2CUI=y
    
    _Example()
    
    Func _Example()
        Local $hGUI, $iWinExists = WinExists(WinGetHandle('[TITLE:'&_WinTitle()&']'))
        ConsoleWrite('! @Compiled = ' & @Compiled & '  -  @AutoItVersion = ' & @AutoItVersion & '  -  OS = ' & @OSVersion & ' ' & @OSArch & '  -  $iWinExists = ' & $iWinExists & '  -  @ScriptName = ' & @ScriptName & @CRLF & _
            '--------------------------------------------------------------------------------------------------------------------------------' & @CRLF)
        If $iWinExists Then Return __GetPos()
    
        $hGUI = GUICreate(_WinTitle(), 1930, 1000, -2000, -100)
        GUICtrlCreateLabel('Press ESC for Exit!', 10, 10, 1910, 128, 1) ; 1 = $SS_CENTER
        Local $0 = GUICtrlSetFont(-1, 48, 900) + GUICtrlSetColor(-1, 0x6495ED) + GUICtrlSetBkColor(-1, 0x696969)
        WinMove($hGUI, GUISetState(), 10, 10, 800, 600)
        __Print('+', '+', $hGUI, WinGetPos($hGUI), WinGetClientSize($hGUI))
        __GetPos()
        Do
        Until GUIGetMsg() = -3
    EndFunc   ;==>_Example
    
    Func __GetPos()
        Local $aSplit, $sClipGet, $sCompiledExe = StringRegExpReplace(@ScriptFullPath, '(.+)\..+', '\1\.exe')
        If Not FileExists($sCompiledExe) Then Exit ConsoleWrite('! Error - keine kompilierte Version des Scripts gefunden!' & @CRLF & '--> ' & $sCompiledExe & @CRLF & '@WorkingDir = ' & @WorkingDir & @CRLF)
        Local $sCMD = StringFormat('"%s" /AutoIt3ExecuteLine "%s"', $sCompiledExe, "Local $hWnd = WinGetHandle('[TITLE:"&_WinTitle()&"]'), $aWP = WinGetPos($hWnd), $aCS = WinGetClientSize($hWnd), $0 = ClipPut(StringFormat('%s:%i|%i|%i|%i:%i|%i', $hWnd, $aWP[0], $aWP[1], $aWP[2], $aWP[3], $aCS[0], $aCS[1]))")
        ConsoleWrite(@CRLF & 'RunWait(' & $sCMD & ')' & @CRLF & @CRLF)
        If RunWait($sCMD, '', @SW_HIDE) Then Exit ConsoleWrite('! Error bei RunWait()' & @CRLF)
        $sClipGet = ClipGet()
        $aSplit = StringSplit($sClipGet, ':', 2)
        ConsoleWrite('$sClipGet = ' & $sClipGet & @CRLF & @CRLF)
        __Print('!', '-', $aSplit[0], StringSplit($aSplit[1], '|', 2), StringSplit($aSplit[2], '|', 2))
    EndFunc   ;==>__GetPos
    
    Func _WinTitle()
        Return StringRegExpReplace(@ScriptName, '(.+)\..+', '~+:#\1#:+~')
    EndFunc   ;==>_WinTitle
    
    ; Wird Text mit ConsoleWrite in der Eingabeaufforderung ausgegeben, muss die Ausgabe mit @LF enden, anderfalls wird die vorherige (zumindest teilweise) überschrieben!
    ; ConsoleWrite --> @LF, @CRLF oder @LF & @CR  -  oder mit StringFormat --> \n, \r\n oder \n\r
    Func __Print($c1, $c2, $hWnd, $aWinPos, $aClientSize)
        Return ConsoleWrite('> $hWnd = ' & $hWnd & @CRLF) + __PrintPos($c1 & ' $aWinPos', $aWinPos) + __PrintPos($c2 & ' $aClientSize', $aClientSize)
    EndFunc   ;==>__Print
    
    Func __PrintPos($sName, $aPos)
        Return UBound($aPos) = 4 _
        ?     ConsoleWrite(StringFormat('%-26s =    X: %5i,   Y: %5i,     W: %5i,      H: %5i\r\n', $sName, $aPos[0], $aPos[1], $aPos[2], $aPos[3])) _
        :     ConsoleWrite(StringFormat('%-26s = %7s                      W: %5i,      H: %5i\r\n', $sName, '', $aPos[0], $aPos[1]))
    EndFunc   ;==>__PrintPos
    Alles anzeigen
  • [Gelöst] WinGetPos liefert unterschiedliche Werte...

    • Bitnugger
    • 15. April 2018 um 23:40

    Dieses kleine Script erstellt eine GUI, verschiebt diese und gibt dann 2x mit ConsoleWrite das Handle, WinPos und ClientSize aus.

    Für die erste Ausgabe werden die Werte direkt im Script ermittelt, für die zweite mit einem Einzeiler, der mit @AutoItExe ausgeführt wird.

    Meine Annahme, dass beide Ausgaben identisch sind... ist falsch, denn der Einzeiler liefert für WinPos andere Werte!

    Wo ist hier der Wurm drin?

    Code
    ;-- TIME_STAMP   2018-04-15 22:27:16   v 0.1
    
    _Example()
    
    Func _Example()
        Local $hGUI = GUICreate(@ScriptName, 1930, 1000, -2000, -100)
        GUISetState()
        WinMove($hGUI, '', 10, 10, 800, 600)
        __Print('+', '+', $hGUI, WinGetPos($hGUI), WinGetClientSize($hGUI))
    
        Local $aRet = __GetPos()
        __Print('!', '-', $aRet[0], StringSplit($aRet[1], '|', 2), StringSplit($aRet[2], '|', 2))
    EndFunc   ;==>_Example
    
    Func __GetPos()
        Local $sCMD = "Local $hWnd = WinGetHandle('[TITLE:"&@ScriptName&"]'), $aWP = WinGetPos($hWnd), $aCS = WinGetClientSize($hWnd), $0 = ClipPut(StringFormat('%s:%i|%i|%i|%i:%i|%i', $hWnd, $aWP[0], $aWP[1], $aWP[2], $aWP[3], $aCS[0], $aCS[1]))"
        ConsoleWrite('@ $sCMD = ' & $sCMD & @CRLF)
        RunWait(@AutoItExe & ' /AutoIt3ExecuteLine "' & $sCMD & '"')
        Return StringSplit(ClipGet(), ':', 2)
    EndFunc   ;==>__GetPos
    
    Func __Print($c1, $c2, $hWnd, $aWinPos, $aClientSize)
        ConsoleWrite('> $hWnd = ' & $hWnd & @CRLF)
        __PrintWinPos($c1 & ' $aWinPos', $aWinPos)
        __PrintClientSize($c2 & ' $aClientSize', $aClientSize)
    EndFunc
    
    Func __PrintWinPos($sName, $aPos)
        ConsoleWrite(StringFormat('%-26s =    X: %5i,   Y: %5i,     W: %5i,      H: %5i\r', $sName, $aPos[0], $aPos[1], $aPos[2], $aPos[3]))
    EndFunc   ;==>__PrintWinPos
    
    Func __PrintClientSize($sName, $aPos)
        ConsoleWrite(StringFormat('%-26s = %7s                      W: %5i,      H: %5i\r', $sName, '', $aPos[0], $aPos[1]))
    EndFunc   ;==>__PrintClientSize
    Alles anzeigen

  • Problem beim Installieren in VirtualBox

    • Bitnugger
    • 13. April 2018 um 08:45

    Ich benutze aus Gewohnheit nur den Advanced-Mode... wenn du keine eindeutige ID bekommst, kannst du noch den Title (Text) des Buttons zur Identifizierung verwenden.

    Hier ein Beispiel:

    C
    ;-- TIME_STAMP   2018-04-13 08:41:29   v 0.1
    
    #include <Array.au3>
    #include <WinAPISysWin.au3>
    #include <WinAPIDlg.au3>
    
    Local $hAIMP, $hButton, $sTitle, $idButton, $iNN = 1
    $hAIMP = WinGetHandle('[CLASS:TAIMPOptionsForm]')
    
    While 1
        $hButton = ControlGetHandle($hAIMP, '', StringReplace('[CLASS:TACLButton; INSTANCE:#]', '#', $iNN))
        If Not IsHWnd($hButton) Then Exit 999
        $sTitle = ControlGetText($hButton, '', '')
        $idButton = _WinAPI_GetDlgCtrlID($hButton)
        If $sTitle = 'Language' Then ExitLoop
        $iNN += 1
    WEnd
    
    ConsoleWrite("$hAIMP    --> " & $hAIMP & @CRLF)
    ConsoleWrite("$hButton  --> " & $hButton & @CRLF)
    ConsoleWrite("$idButton --> " & $idButton & @CRLF)
    ConsoleWrite("$sTitle   --> " & $sTitle & @CRLF)
    ConsoleWrite("ClassName --> " & 'TACLButton' & @CRLF)
    ConsoleWrite("$iNN      --> " & $iNN & @CRLF)
    
    Local $aClassList = StringSplit(StringStripWS(WinGetClassList($hAIMP), 2), @LF)
    If UBound($aClassList) Then
        For $i = $aClassList[0] To 1 Step -1
            If $aClassList[$i] <> 'TACLButton' Then _ArrayDelete($aClassList, $i)
        Next
        Local $hButton, $idButton, $aButtonList[UBound($aClassList)][5]
        $aButtonList[0][0] = UBound($aClassList) -1
        For $i = 1 To $aButtonList[0][0] Step 1
            $hButton = ControlGetHandle($hAIMP, '', StringReplace('[CLASS:TACLButton; INSTANCE:#]', '#', $i))
            $idButton = _WinAPI_GetDlgCtrlID($hButton)
            $aButtonList[$i][0] = $aClassList[$i]                    ; ClassName
            $aButtonList[$i][1] = $i                                ; NN
            $aButtonList[$i][2] = $hButton                            ; Handle
            $aButtonList[$i][3] = $idButton                            ; ID
            $aButtonList[$i][4] = ControlGetText($hButton, '', '')    ; Title
        Next
        _ArrayDisplay($aButtonList, '$aButtonList', '', 0, Default, 'ClassName|NN|Handle|ID|Title')
    EndIf
    Alles anzeigen

    AIMP-Button.png    AutoIt v3 Window Info.png

  • ISN AutoIt Studio

    • Bitnugger
    • 11. April 2018 um 09:39
    Zitat von chip

    @Offtopic: Bitte kein falsche Halbwissen verbreiten. Klar gibt es die Möglichkeit Tabs verschachtelt darzustellen. Man muss nur wissen wie.

    @Offtopic: Halbwissen? Die Fragestellung bezüglich der Tabs bezieht sich auf den Text von ISI360 ...

    Zitat von ISI360

    Und nein es ist aktuell leider nur 1x pro Gui möglich. (Dies ist aber eine limitierung von AutoIt selbst)

    ...und ich bin mir sicher, dass ISI360 mit dem ersten Satz völlig richtig liegt, nur ist es keine Limitierung von AutoIt, sondern eben eine von Windows. Dass mit Hilfe von "Child-GUIs" mehrere Tabs in einer "Main-GUI" darstellbar sind, ist mir bekannt, was aber nichts an der Richtigkeit meiner Aussage ändert. ;)

  • ISN AutoIt Studio

    • Bitnugger
    • 10. April 2018 um 20:16
    Zitat von olfibits

    Tatsächlich eine AutoIt-Limitierung.

    Nein, eine Windows-Limitierung... ;)

  • WindowPlacement

    • Bitnugger
    • 9. April 2018 um 14:26

    Sehr schön! ;)

    Ich setze es in meinen Scripts allerdings ein wenig anders um und speichere die Strukturen in einem IniFile...

    1. Weil ich die gespeicherte WindowPlacement-Struktur bei Bedarf einlesen möchte, bevor das Fenster erstellt wurde.
    2. Weil ich nicht für jedes Fenster (in einem Projekt) eine separate Datei zum Speichern der Strukturen haben möchte.

    Z.B.: _SaveWindowPlacement($sIniFile, $hWnd, $sWndName)

    [MainGUI]

    WindowPlacement=44|0|1|-1,-1|-1,-1|0,1035,808,1669

    Alternativ ließen sich die Strukturen sicher auch mit SQLite als BLOB speichern...

    Funktion _WindowOnDesktop (s.u.): Die For-Schleife (Zeile 77-79) und die beiden DllStructSetData (Zeile 82, 83) kannst du dir sparen:

    Code
    $tDesktopRect = DllStructCreate($tagRECT, DllStructGetPtr($tDesktopInfo, 'rWindow'))
    Code
    $tWindowPoint = DllStructCreate($tagPOINT, DllStructGetPtr($tWindowPlacement, 'rcNormalPosition'))

    _WinAPI_GetDesktopWindow liefert bei mir nur die Koordinaten des primären Monitors (Monitor 1)...

    $tDesktopInfo = _WinAPI_GetWindowInfo(_WinAPI_GetDesktopWindow()) ; 0, 0, 1920, 1080

    Deshalb evtl. besser so... damit bekomme ich die von allen (erweiterten) Monitoren (1+2)

    $tDesktopInfo = _WinAPI_GetWindowInfo(WinGetHandle('[CLASS:Progman]')) ; -1920, 0, 3840, 1080

    Dadurch landen die Fenster in den sichtbaren Bereich des Monitors, auf dem sich der größte Teil des Fensters befindet, oder auf dem, der den Koordinaten am nähesten ist. Bei einem größeren/kleineren Monitor könnte man optional noch die Position und Größe anpassen.

    Code: _WindowOnDesktop
    Func _WindowOnDesktop($hWnd)
        Local $tDesktopInfo, $tDesktopRect, $tDesktopWorkArea, $tWindowPlacement, $tWindowPoint, $iWidth, $iHeight, $tRECT, $iLeft, $iTop
        If Not IsHWnd($hWnd) Then Return SetError(1, 0, False)
        $tDesktopInfo = _WinAPI_GetWindowInfo(WinGetHandle('[CLASS:Progman]'))
        If @error Then Return SetError(2, 0, False)
        $tDesktopRect = DllStructCreate($tagRECT, DllStructGetPtr($tDesktopInfo, 'rWindow'))
        $tDesktopWorkArea = DllStructCreate($tagRECT, DllStructGetPtr($tDesktopInfo, 'rcClient'))
        $tWindowPlacement = _WinAPI_GetWindowPlacement($hWnd)
        $tWindowPoint = DllStructCreate($tagPOINT, DllStructGetPtr($tWindowPlacement, 'rcNormalPosition'))
        If Not _WinAPI_PtInRect($tDesktopRect, $tWindowPoint) Then ; wenn das Fenster sich nicht auf dem Desktop befindet, dann...
            $tRECT = DllStructCreate($tagRECT, DllStructGetPtr($tWindowPlacement, 'rcNormalPosition'))
            $iWidth = DllStructGetData($tRECT, 'Right') - DllStructGetData($tRECT, 'Left')
            $iHeight = DllStructGetData($tRECT, 'Bottom') - DllStructGetData($tRECT, 'Top')
            $iLeft = (DllStructGetData($tDesktopWorkArea, 'Right') - DllStructGetData($tDesktopWorkArea, 'Left') - $iWidth) / 2 ; Left neu berechnen
            $iTop = (DllStructGetData($tDesktopWorkArea, 'Bottom') - DllStructGetData($tDesktopWorkArea, 'Top') - $iHeight) / 2 ; Top neu berechnen
            DllStructSetData($tRECT, 'Left', $iLeft) ; Setze das neue Left
            DllStructSetData($tRECT, 'Top', $iTop) ; Setze das neue Top
            DllStructSetData($tRECT, 'Right', $iLeft + $iWidth) ; Setze das neue Right
            DllStructSetData($tRECT, 'Bottom', $iTop + $iHeight) ; Setze das neue Bottom
            _WinAPI_SetWindowPlacement($hWnd, $tWindowPlacement)
            Return False
        EndIf
        Return True
    EndFunc
    Alles anzeigen
  • Fensterpostition beim Minimieren speichern.

    • Bitnugger
    • 6. April 2018 um 11:35

    Zudem ist die X/Y-Position bei minimiertem Fenster (ptMinPosition) nicht unbedingt -32000, wie hier im Beispiel gut zu sehen ist.

    C
    ;-- TIME_STAMP   2018-04-06 11:22:54   v 0.1
    
    ; AutoIt <= v3.3.14.2
    ;~ #include <WinAPI.au3>
    
    ; AutoIt >= v3.3.14.3
    #include <WinAPISysWin.au3>
    #include <WinAPIProc.au3>
    
    _Example(WinGetHandle('[CLASS:SciTEWindow]'))
    ConsoleWrite('---------------------------------------------------------------------------------------' & @CRLF)
    _Example(WinGetHandle('[CLASS:Progman]'))
    
    Func _Example($hWnd)
        Local $sMsg, $sTitle = WinGetTitle($hWnd), $iPID = WinGetProcess($hWnd), $sProcess = _WinAPI_GetProcessName($iPID)
        Local $tRET = _WinAPI_GetWindowPlacement($hWnd)
        $sMsg &= @TAB & "$hWnd     = " & $hWnd & @CRLF
        $sMsg &= @TAB & "$sTitle   = " & $sTitle & @CRLF
        $sMsg &=  & "$sProcess = " & $sProcess & @CRLF & @CRLF
        $sMsg &= "$stWindowPlacement: " & @CRLF
        $sMsg &= @TAB & "length    = " & DllStructGetData($tRET, "length") & @CRLF
        $sMsg &= @TAB & "flags     = " & DllStructGetData($tRET, "flags") & @CRLF
        $sMsg &= @TAB & "showCmd   = " & DllStructGetData($tRET, "showCmd") & @CRLF & @CRLF
        $sMsg &= "ptMinPosition:" & @CRLF
        $sMsg &= @TAB & "MinX      = " & DllStructGetData($tRET, "ptMinPosition", 1) & @CRLF
        $sMsg &= @TAB & "MinY      = " & DllStructGetData($tRET, "ptMinPosition", 2) & @CRLF & @CRLF
        $sMsg &= "ptMaxPosition:" & @CRLF
        $sMsg &= @TAB & "MaxX      = " & DllStructGetData($tRET, "ptMaxPosition", 1) & @CRLF
        $sMsg &= @TAB & "MaxY      = " & DllStructGetData($tRET, "ptMaxPosition", 2) & @CRLF & @CRLF
        $sMsg &= "rcNormalPosition:" & @CRLF
        $sMsg &= @TAB & "left      = " & DllStructGetData($tRET, "rcNormalPosition", 1) & @CRLF
        $sMsg &= @TAB & "top       = " & DllStructGetData($tRET, "rcNormalPosition", 2) & @CRLF
        $sMsg &= @TAB & "right     = " & DllStructGetData($tRET, "rcNormalPosition", 3) & @CRLF
        $sMsg &= @TAB & "bottom    = " & DllStructGetData($tRET, "rcNormalPosition", 4)
        ConsoleWrite($sMsg & @CRLF)
    EndFunc
    Alles anzeigen

    Ausgabe:

    Code
        $hWnd     = 0x00160360
        $sTitle   = M:\Autoit\_GetWindowPlacement.au3 - SciTE [10 von 10]
        $sProcess = SciTE.exe
    
    $stWindowPlacement: 
        length    = 44
        flags     = 2
        showCmd   = 3
    
    ptMinPosition:
        MinX      = -32000
        MinY      = -32000
    
    ptMaxPosition:
        MaxX      = -1
        MaxY      = -1
    
    rcNormalPosition:
        left      = 858
        top       = 213
        right     = 1498
        bottom    = 879
    ---------------------------------------------------------------------------------------
        $hWnd     = 0x000103BA
        $sTitle   = Program Manager
        $sProcess = explorer.exe
    
    $stWindowPlacement: 
        length    = 44
        flags     = 0
        showCmd   = 1
    
    ptMinPosition:
        MinX      = -1
        MinY      = -1
    
    ptMaxPosition:
        MaxX      = -1
        MaxY      = -1
    
    rcNormalPosition:
        left      = -1920
        top       = 0
        right     = 1920
        bottom    = 1080
    Alles anzeigen
  • Fensterpostition beim Minimieren speichern.

    • Bitnugger
    • 6. April 2018 um 09:24
    Zitat von autoiter

    Ich weiß nicht, wie man da die letzte Postion zuvor auslesen kann.

    Ermitteln mit _WinAPI_GetWindowPlacement bzw. setzen mit _WinAPI_SetWindowPlacement

  • High liebe Leute

    • Bitnugger
    • 29. März 2018 um 21:52

    Auch von mir ein: HERZLICH WILLKOMMEN!!! :thumbup:

    C/ C++ ...vesuche ich mich schon seit einiger Zeit dran... finde aber nicht so richtig den Einstieg... kannst du dazu ein paar Tipps geben, wie und womit man anfangen sollte?

    Wenn es deine Zeit erlaubt, dann schau dir doch bitte mal diesen Beitrag an... ob du da helfen kannst. :whistling:

    Gruß

    Bitnugger

  • Event "Anklicken" eines Inputfeldes abfragen

    • Bitnugger
    • 29. März 2018 um 18:02
    Zitat von hipfzwirgel

    Mögest du die dicksten Eier und Größten Eier zu Ostern geschenkt bekommen

    und mögen sie in deinen Sack passen. :rofl:

  • [Gelöst] SQLite Problem mit Update ... set ... Funktion

    • Bitnugger
    • 29. März 2018 um 00:01
    Zitat von BlutigerAnfänger

    Was kommt jetzt in den Include Ordner was wo die Skripte stehen.

    Nichts!

    Dort solltest du generell nichts hinzufügen, ändern oder löschen. Für eigene Includes solltest du dir besser ein Verzeichnis (z.B.: AutoIt3_MyInclude) anlegen, zumal diese dann auch nach einem Update von Autoit erhalten bleiben. Damit das Verzeichnis gefunden wird, musst du es in der SciTE Config angeben. Die SciTE Config kannst du in SciTE mit Ctrl + 1 oder im Menü Extras öffnen. Dort gibst du dann deinen "User Include Folder" mitsamt Pfad an.

    SciTE-Config.png

    SQLite.dll.au3

    Dieses AutoIt-Script war in früheren AutoIt-Versionen enthalten. Es besteht quasi nur aus einer Funktion, mit der die darin enthaltene sqlite3.dll entpackt und auch gespeichert werden kann.

    Beispiel:

    Code: SQLite.dll.au3
    ;_sqlite3dll($bSaveBinary = False, $sSavePath = @ScriptDir)
    
    _sqlite3dll(True) ; sqlite3.dll entpacken und im ScriptDir speichern

    sqlite3_302200000.exe, sqlite3_302200000.dll, sqlite3_x64_302200000.dll

    Die einfache Lösung: Kopiere diese drei Dateien in das Scriptverzeichnis und benenne sie dort um. Das Script SQLite.dll.au3 benötigst du nicht, weil es höchstwahrscheinlich eine ältere Version der sqlite3.dll enthält!

    sqlite3.exe, sqlite3.dll, sqlite3_x64.dll

    Danach sollte das folgende Script ohne Fehler bei dir laufen, womit du dann weißt, das SQLite nun bei dir funktioniert.

    C
    #include <MsgBoxConstants.au3>
    #include <SQLite.au3>
    
    Local $sSQliteDll
    $sSQliteDll = _SQLite_Startup()
    If @error Then
        MsgBox($MB_SYSTEMMODAL, "SQLite Error", "SQLite3.dll Can't be Loaded!" & @CRLF & @CRLF & _
                "Not FOUND in @SystemDir, @WindowsDir, @ScriptDir or @WorkingDir")
        Exit -1
    EndIf
    
    MsgBox($MB_SYSTEMMODAL, "SQLite3.dll Loaded", $sSQliteDll & " (" & _SQLite_LibVersion() & ")")
    ConsoleWrite("_SQLite_LibVersion=" & _SQLite_LibVersion() & @CRLF)
    _SQLite_Shutdown()
    Alles anzeigen
  • Abbrechen Button in zweiter Schleife ohne Funktion

    • Bitnugger
    • 28. März 2018 um 17:40
    Zitat von alpines

    Und wieder Dinge die die Welt nicht braucht. Anstatt den Codern die Bevollmächtigung zu geben alles zu machen was er nur kann hält man ihn für unfähig und baut ein Sleep ein.

    Als ob das noch nicht reicht versteckt man es irgendwo in der Dokumentation wo man das nur mitbekommt wenn man sie sich von vorn bis hinten und oben nach unten alles genauestens durchliest.

    Die Automatik greift doch nur, wenn es nötig ist und nimmt dem Coder somit Arbeit ab, die er ohnehin leisten müsste, wenn er nicht möchte, dass sein PC einfriert/abstürzt. Zudem ist diese Information nicht irgendwo versteckt, sondern steht als erster (und somit wichtigster) Punkt unter Remarks (Bemerkungen)... welche - obwohl diese oft auch sehr wichtige Hinweise enthalten, gerne überlesen werden.

    This function automatically idles the CPU when required so that it can be safely used in tight loops without hogging all the CPU.

    Diese Funktion lässt die CPU bei Bedarf automatisch im Leerlauf laufen, so dass sie sicher in engen Schleifen verwendet werden kann, ohne die gesamte CPU zu beanspruchen.

    Edit:

    Zitat von Andy

    Was dazu führt, dass das Script LANGSAMER läuft, wenn keine Useraktion stattfindet!

    Ok, nimm alles zurück und behaupte das Gegenteil... ;)

  • Bug in aktueller Autoit Version Makro ?

    • Bitnugger
    • 26. März 2018 um 22:20

    Die AutoIt3Wrapper-Direktiven sind nicht in der AutoIt-Hilfe enthalten... sondern in der SciTE4AutoIt3-Hilfe... die du aber auch mit F1 öffnen kannst, wenn du SciTE4AutoIt3 installiert hast.

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™