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

Beiträge von Tweaky

  • Bildschirminhalt einfrieren

    • Tweaky
    • 17. September 2020 um 14:04

    Danke UEZ, aber damit besteht das Problem auch:(

  • Bildschirminhalt einfrieren

    • Tweaky
    • 13. September 2020 um 18:21

    Wow perfekt:)

    Edit

    UEZ

    Trotzdem habe ich noch eine Frage dazu.

    Ich habe das ganze mal auf mehrere Monitore erweitert. Außerdem wird danach noch ein Screenshot als Datei abgelegt.

    Wenn ich nun die DPI auf meinem 2. Bildschirm größer wie 100% einstellt, dann wird das eingefrorene Bild korrekt angezeigt.

    Bild ok_autoscaled.jpg

    Allerdings ist die abgelegte Datei nicht korrekt.

    Bild verschoben_autoscaled.jpg


    Weißt du warum sich dies unterschiedlich verhält?

    Wenn ich die DPI des 1. Bildschirms ändere sieht beides gleich aus

    AutoIt
    #Region    ;************ Includes ************
    #Include <WinAPISysWin.au3>
    #include <GUIConstantsEx.au3>
    #include <ScreenCapture.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #EndRegion ;************ Includes ************
    
    ; enum _PROCESS_DPI_AWARENESS -> https://msdn.microsoft.com/en-us/library/windows/desktop/dn280512(v=vs.85).aspx
    Global Enum $DPI_AWARENESS_INVALID = -1, $PROCESS_DPI_UNAWARE = 0, $PROCESS_SYSTEM_DPI_AWARE, $PROCESS_PER_MONITOR_DPI_AWARE
    Global Enum $Context_UnawareGdiScaled = -5, $Context_PerMonitorAwareV2, $Context_PerMonitorAware, $Context_SystemAware, $Context_Unaware
    Global Const $WM_DPICHANGED = 0x02E0, $WM_GETDPISCALEDSIZE = 0x02E4
    
    
    $aAufloesung = _GetGlobalResolution()
    
    _WinAPI_SetDPIAwareness()
    Local Const $hBitmap = _ScreenCapture_Capture("", 0, 0, $aAufloesung[2] - 1, $aAufloesung[3] - 1, False)
    Local Const $hGUI = GUICreate("", $aAufloesung[2], $aAufloesung[3], 0, 0, $WS_POPUP, $WS_EX_TOPMOST)
    Local Const $iPic = GUICtrlCreatePic("", 0, 0, $aAufloesung[2] - 1, $aAufloesung[3] - 1)
    _WinAPI_DeleteObject(GUICtrlSendMsg($iPic, $STM_SETIMAGE, $IMAGE_BITMAP, $hBitmap))
    GUISetState()
    _ScreenCapture_Capture("D:\test.jpg", 0, 0, $aAufloesung[2] - 1, $aAufloesung[3] - 1, False) ;Bild wird erstellt
    
    Do
        If GUIGetMsg() = $GUI_EVENT_CLOSE Then
            _WinAPI_DeleteObject($hBitmap)
            GUIDelete($hGUI)
            Exit
        EndIf
    Until False
    
    Func _WinAPI_SetDPIAwareness($hGUI = 0)
        Switch @OSBuild
            Case 6000 To 9199
                If Not DllCall("user32.dll", "bool", "SetProcessDPIAware") Then Return SetError(1, 0, 0) ;requires Vista+ / Server 2008+
                Return 1
            Case 9200 To 13999
                _WinAPI_SetProcessDpiAwareness($PROCESS_PER_MONITOR_DPI_AWARE) ;requires Win 8.1+ / Server 2012 R2+
                If @error Then Return SetError(2, 0, 0)
                Return 1
            Case @OSBuild > 13999
                #cs
                    Context_Unaware = ((DPI_AWARENESS_CONTEXT)(-1)),
                    Context_SystemAware = ((DPI_AWARENESS_CONTEXT)(-2)),
                    Context_PerMonitorAware = ((DPI_AWARENESS_CONTEXT)(-3)),
                    Context_PerMonitorAwareV2 = ((DPI_AWARENESS_CONTEXT)(-4)),
                    Context_UnawareGdiScaled = ((DPI_AWARENESS_CONTEXT)(-5))
                #ce
                _WinAPI_SetProcessDpiAwarenessContext($Context_PerMonitorAwareV2, $hGUI, 1)
                If @error Then Return SetError(3, @error, 0)
                Return 1
        EndSwitch
        Return -1
    EndFunc   ;==>_WinAPI_SetDPIAwareness
    
    
    Func _WinAPI_SetProcessDpiAwareness($DPIAware) ;https://docs.microsoft.com/en-us/windows/desktop/api/shellscalingapi/nf-shellscalingapi-setprocessdpiawareness
        Local $aResult = DllCall("Shcore.dll", "long", "SetProcessDpiAwareness", "int", $DPIAware) ;requires Win 8.1+ / Server 2012 R2+
        If @error Then Return SetError(1, 0, 0)
        Return 1
    EndFunc   ;==>_WinAPI_SetProcessDpiAwareness
    
    Func _WinAPI_SetProcessDpiAwarenessContext($DPIAwareContext = $Context_PerMonitorAware, $hGUI = 0, $iMode = 1)
        $DPIAwareContext = ($DPIAwareContext < -5) ? -5 : ($DPIAwareContext > -1) ? -1 : $DPIAwareContext
        $iMode = ($iMode < 1) ? 1 : ($iMode > 3) ? 3 : $iMode
        Switch $iMode
            Case 1
                Local $hDC = _WinAPI_GetDC($hGUI)
                Local $aResult1 = DllCall("user32.dll", "int", "GetDpiFromDpiAwarenessContext", "ptr", $hDC) ;requires Win10 v1803+ / Server 2016+
                If @error Or Not IsArray($aResult1) Then Return SetError(11, 0, 0)
                _WinAPI_ReleaseDC(0, $hDC)
                ;https://docs.microsoft.com/en-us/windows/desktop/api/winuser/nf-winuser-setprocessdpiawarenesscontext
                Local $aResult = DllCall("user32.dll", "Bool", "SetProcessDpiAwarenessContext", "int", $aResult1[0] + $DPIAwareContext) ;requires Win10 v1703+ / Server 2016+
                If @error Or Not IsArray($aResult) Then Return SetError(12, 0, 0)
            Case 2
    ;~             If Not $hGUI Then $hGUI = WinGetHandle(AutoItWinGetTitle())
                Local $aResult2 = DllCall("user32.dll", "int", "GetWindowDpiAwarenessContext", "ptr", $hGUI) ;requires Win10 v1607+ / no server support
                If @error Or Not IsArray($aResult2) Then Return SetError(21, 0, 0)
                Local $aResult = DllCall("user32.dll", "Bool", "SetProcessDpiAwarenessContext", "int", $aResult2[0] + $DPIAwareContext) ;requires Win10 v1703+ / Server 2016+
                If @error Or Not IsArray($aResult) Then Return SetError(22, 0, 0)
            Case 3
                Local $aResult31 = DllCall("user32.dll", "ptr", "GetThreadDpiAwarenessContext")    ;requires Win10 v1607+ / no server support
                If @error Or Not IsArray($aResult31) Then Return SetError(31, 0, 0)
                Local $aResult32 = DllCall("user32.dll", "int", "GetAwarenessFromDpiAwarenessContext", "ptr", $aResult31[0]) ;requires Win10 v1607+ / no server support
                If @error Or Not IsArray($aResult32) Then Return SetError(32, 0, 0)
                Local $aResult = DllCall("user32.dll", "Bool", "SetThreadDpiAwarenessContext", "int", $aResult32[0] + $DPIAwareContext) ;requires Win10 v1607+ / no server support
                If @error Or Not IsArray($aResult) Then Return SetError(33, 0, 0)
        EndSwitch
    
        Return 1
    EndFunc   ;==>_WinAPI_SetProcessDpiAwarenessContext
    
    
    
    
    Func _GetGlobalResolution()
        Local $aRes[4], $hWindow, $stRET
        $hWindow = _WinAPI_GetDesktopWindow()
        $stRET = _WinAPI_GetWindowPlacement($hWindow)
        If Not @error Then
            $aRes[0] = DllStructGetData($stRET, 'rcNormalPosition', 1) ; left
            $aRes[1] = DllStructGetData($stRET, 'rcNormalPosition', 2) ; top
            $aRes[2] = DllStructGetData($stRET, 'rcNormalPosition', 3) ; right
            $aRes[3] = DllStructGetData($stRET, 'rcNormalPosition', 4) ; bottom
            Return $aRes
        Else
            Return SetError(1, 0, 0)
        EndIf
    EndFunc   ;==>_GetGlobalResolution
    Alles anzeigen
  • Bildschirminhalt einfrieren

    • Tweaky
    • 12. September 2020 um 17:48

    Ne es soll nur das Bild eingeforen werden.

    An eine Kopie des Desktops habe ich auch schon gedacht. Hoffe aber, dass es für das einfrieren einen eigenen Befehl gibt.

  • Unterschied #pragma und #AutoIt3Wrapper

    • Tweaky
    • 12. September 2020 um 17:39

    Hi,

    bisher verwende ich immer #AutoIt3Wrapper_icon um der exe-Datei ein Icon mitzugeben.

    Nun habe ich aber #pragma compile(Icon, ...) entdeckt.

    Was ist da der Unterschied, bzw. was ist besser?

  • Bildschirminhalt einfrieren

    • Tweaky
    • 12. September 2020 um 16:41

    Hi,

    wenn unter Win 10 das Tool "Ausschneiden und Skizzieren" verwendet wird, wird der Bildschirminhalt eingefroren (auch wenn ein Video abgespielt wird).

    Wie macht man das mit AutoIt?

  • File to Base64 String Code Generator v1.20 Build 2020-06-05

    • Tweaky
    • 12. September 2020 um 13:44

    Was ist eigentlich der Vorteil wenn man Bilder usw direkt aus dem Speicher lädt? Ist es schneller als wenn man es in den Temp-Ordner entpackt und dann verwendet?

  • Kicktipp Bundesliga 2020/2021 Wett-Tippen!

    • Tweaky
    • 10. September 2020 um 18:19

    Traut sich keiner:P

  • Kicktipp Bundesliga 2020/2021 Wett-Tippen!

    • Tweaky
    • 8. September 2020 um 19:27

    So, wo sind die Fußballgötter unter euch.

    Mittippen, in 3 Tagen am Freitag gehts los mit dem DFB-Pokal.

    Bitte macht mit, ich will nicht schon wieder Erster werden:party:

  • Fehler in der deutschen Hilfe bitte hier melden (Hilfedatei 3.3.14.5 2020.08.30)

    • Tweaky
    • 31. August 2020 um 10:31

    Hi,

    falls ihr beim benutzen der deutschen Hilfe Rechtschreibfehler, Formatfehler und inhaltliche Fehler findet, wäre es nett dass ihr diesen dann auch hier meldet.

    Dann können wir diese korrigieren.

    Bitte nur Fehler der Hilfedatei 3.3.14.5 2020.08.30 melden

  • AutoIt 3.3.14.5 deutsch / englische Hilfe verfügbar - Stand 2020.08.30

    • Tweaky
    • 31. August 2020 um 10:29

    Hi,

    es gibt eine neue Version der deutsch / englischen Hilfe für AutoIt 3.3.14.5.

    deutsche Hilfe / deutsche au3.api / deutsche Beispiele

    Deutsche Onlinehilfe

    Schaut euch die Hilfe bitte genau an.

    Fehler könnt ihr dann hier melden.

    Gibt es eine deutsche Funktionsbeschreibung, so wird diese direkt angezeigt und man kann man durch das Flaggen-Symbol rechts oben von deutsch auf englisch umstellen.

    Gibt es noch keine deutsche Funktionsbeschreibung so wird direkt die englische Funktionsbeschreibung angezeigt.

    Diese Dateien können hier übersetzt werden.

    Danke an alle Übersetzer und Helfer.

    Viel Spaß damit

  • Fehler in der deutschen Hilfe bitte hier melden (Hilfedatei 3.3.14.5 2020.04.13)

    • Tweaky
    • 30. August 2020 um 19:40

    Wie groß der Aufwand wäre, kann ich gar nicht sagen, da ich davon keine Ahnung habe.

    Einfaach so wie Bitnugger beschrieben hat suchen, dann klappts besser

  • Deutsche Hilfe - Funktionen ohne Beispiel (Hilfedatei 3.3.14.5)

    • Tweaky
    • 30. August 2020 um 13:24

    gesehen und hinzugefügt:)

  • Deutsche Hilfe - Funktionen ohne Beispiel (Hilfedatei 3.3.14.5)

    • Tweaky
    • 30. August 2020 um 11:54

    behoben

  • Fehler in der deutschen Hilfe bitte hier melden (Hilfedatei 3.3.14.5 2020.04.13)

    • Tweaky
    • 26. August 2020 um 22:40

    Professor Bernd

    In der Online-Hilfe kann man nicht suchen

  • Fehler in der deutschen Hilfe bitte hier melden (Hilfedatei 3.3.14.5 2020.04.13)

    • Tweaky
    • 26. August 2020 um 17:34

    alles behoben

  • Kicktipp Bundesliga 2020/2021 Wett-Tippen!

    • Tweaky
    • 25. August 2020 um 18:04

    Hast du jetzt noch den DFB-Pokal dazugenommen?

  • Deutsche Hilfe auf 3.3.14.5 updaten - mitmachen

    • Tweaky
    • 18. August 2020 um 19:21

    Wow=O

    Vielen, vielen Dank BugFix:thumbup:

    Ich habe neue Dateien hochgeladen:

    Neue Dateien 05

    Neue Dateien 08

    Neue Dateien 09

    Neue Dateien 10

  • Fehler in der deutschen Hilfe bitte hier melden (Hilfedatei 3.3.14.5 2020.04.13)

    • Tweaky
    • 18. August 2020 um 18:43

    Ist bei mir auch so, habs geändert.

  • GUIScaler - GUIs automatisch zur DPI skalieren lassen (Windows 7 und Windows 10 Per-Monitor-DPI)

    • Tweaky
    • 7. August 2020 um 22:07

    Ich habe gerade gemerkt, dass "_ScreenCapture_Capture" nicht richtig funktioniert, wenn die DPI ungleich 100% ist.

    Deshalb bin ich auf diesen Thread gestoßen.

    Funktioniert dies nun?

    Oder wie ist hier der Stand?

  • Deutsche Hilfe auf 3.3.14.5 updaten - mitmachen

    • Tweaky
    • 28. Juli 2020 um 19:25

    BugFix Wow, danke für das schnelle Übersetzen.

    Passt soweit bis auf eine Kleinigkeit die ich selbst geändert habe.

    Bei ###ReturnValue### muß nach Erfolg bzw. Fehler ein Tab stehen, keine Leerzeichen.

    In Neue Dateien 08 wurden wieder neue Dateien hochgeladen

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™