Liste aller UDFs für AutoIt; Bildschirm-Informationen

  • Gibt es eine Liste mit allen verfügbaren UDFs für AutoIt ?

    Ich hab eine Idee für eine UDF, die ich gern erstellen würde, hat einer gehört ob es bereits eine udf für Bildschirm-Informationen gibt ?

    Dazu zähle ich mindestens folgende Funktionen:

    Wie groß ist der Arbeitsbereich, die gesamte Desktop-fläche, wie viele Bildschirme, welche Auflösung etc. haben die jeweiligen Bildschirme, auf welchem Bildschim liegt ein bestimmtes Fenster, auf welchem Bildschirm befindet sich die Koordinate x/y, auf welchem Bildschirm liegt der größere Teil einer rechteckigen Koordinatenfläche, welcher Bildschirm ist der Primäre Bildschirm, welcher Bildschirm hat die höchste Auflösung, etc ...


    So short,


    IsleOfTechno

    Einmal editiert, zuletzt von IsleOfTechno (14. Juli 2009 um 18:40)

  • Wie groß ist [...] die gesamte Desktopfläche

    Größe des Desktops ist @DesktopWidth und @DesktopHeight
    Ansonsten gibt es keine Liste aller UDFs, nur die offizielen sind in der Hilfe...

    Aber ich finde deine Idee gut, kannst ja vorher nochmal googlen...

    Greez, L3viathan

    Twitter: @L3viathan2142
    Benutze AutoIt persönlich nicht mehr, da ich keinen Windows-Rechner mehr besitze.

  • Größe des Desktops ist @DesktopWidth und @DesktopHeight

    Diese Funktionen "lügen" und nennen nur den primären (?) Monitor, denn mein Desktop in der Firma geht über zwei Monitore und misst 2560 in der Breite, nicht wie @DesktopWidth meint 1280 ... ;)

  • [autoit]

    $VirtualDesktopWidth = DLLCall("user32.dll", "int", "GetSystemMetrics", "int", 78) ;sm_virtualwidth
    $VirtualDesktopWidth = $VirtualDesktopWidth[0]
    $VirtualDesktopHeight = DLLCall("user32.dll", "int", "GetSystemMetrics", "int", 79) ;sm_virtualheight
    $VirtualDesktopHeight = $VirtualDesktopHeight[0]

    [/autoit]
    • Offizieller Beitrag
    Spoiler anzeigen
    [autoit]

    ;====================================================================================
    ;
    ;Function Name: _ScreenSetting()
    ;Description: Changes the screen resolution, color dept and refresh rate
    ;Version: 1.0
    ;Parameters: $iWidth - Width of the desktop screen in pixels. (horizontal resolution)
    ; $iHeight - Height of the desktop screen in pixels. (vertical resolution)
    ; $iDepth - Depth of the desktop screen in bits per pixel.
    ; $iRefresh - Refresh rate of the desktop screen in hertz.
    ;Return Value(s): On Success - Screen is adjusted
    ; On failure - Message with error description
    ;Requirement(s): Tested on AutoIt 3.2.10.0
    ;Autor(s): R.Gilman (a.k.a rasim); special thanks to amel27
    ;
    ;====================================================================================
    Func _ScreenSetting($iWidth = @DesktopWidth, $iHeight = @DesktopHeight, $iDepth = @DesktopDepth, $iRefresh = @DesktopRefresh)
    Local Const $DISP_CHANGE_SUCCESSFUL = 0
    Local Const $DISP_CHANGE_RESTART = 1
    Local Const $DISP_CHANGE_FAILED = -1
    Local Const $DISP_CHANGE_BADMODE = -2
    Local Const $DISP_CHANGE_NOTUPDATED = -3
    Local Const $DISP_CHANGE_BADFLAGS = -4
    Local Const $DISP_CHANGE_BADPARAM = -5

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

    Local Const $CDS_TEST = 0x4
    Local Const $CDS_UPDATEREGISTRY = 0x1

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

    Local Const $DM_PELSWIDTH = 0x80000
    Local Const $DM_PELSHEIGHT = 0x100000
    Local Const $DM_BITSPERPEL = 0x40000
    Local Const $DM_DISPLAYFREQUENCY = 0x400000

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

    Local Const $ENUM_CURRENT_SETTINGS = -1
    Local Const $WM_DISPLAYCHANGE = 0x007E
    Local Const $HWND_BROADCAST = 0xFFFF
    Local Const $SPI_SETNONCLIENTMETRICS = 0x2A

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

    Local $DEVMODE, $DllRet

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

    $DEVMODE = DllStructCreate("char dmDeviceName[32];ushort dmSpecVersion;ushort dmDriverVersion;short dmSize;" & _
    "ushort dmDriverExtra;dword dmFields;short dmOrientation;short dmPaperSize;short dmPaperLength;" & _
    "short dmPaperWidth;short dmScale;short dmCopies;short dmDefaultSource;short dmPrintQuality;" & _
    "short dmColor;short dmDuplex;short dmYResolution;short dmTTOption;short dmCollate;" & _
    "byte dmFormName[32];dword dmBitsPerPel;int dmPelsWidth;dword dmPelsHeight;" & _
    "dword dmDisplayFlags;dword dmDisplayFrequency")

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

    $DllRet = DllCall("user32.dll", "int", "EnumDisplaySettings", "ptr", 0, "dword", $ENUM_CURRENT_SETTINGS, _
    "ptr", DllStructGetPtr($DEVMODE))
    $DllRet = $DllRet[0]

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

    If $DllRet = 0 Then
    MsgBox(16, "Error", "Unable to get graphic mode")
    Return False
    EndIf

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

    $VGA_MAP_KEY = RegRead("HKLM\HARDWARE\DEVICEMAP\VIDEO", "\Device\Video0")
    $VGA_KEY = StringReplace($VGA_MAP_KEY, "\Registry\Machine", "HKLM")

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

    RegWrite($VGA_KEY, "PruningMode", "REG_DWORD", 0)

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

    DllStructSetData($DEVMODE, "dmSize", DllStructGetSize($DEVMODE))
    DllStructSetData($DEVMODE, "dmPelsWidth", $iWidth)
    DllStructSetData($DEVMODE, "dmPelsHeight", $iHeight)
    DllStructSetData($DEVMODE, "dmBitsPerPel", $iDepth)
    DllStructSetData($DEVMODE, "dmDisplayFrequency", $iRefresh)
    DllStructSetData($DEVMODE, "dmFields", BitOR($DM_PELSWIDTH, $DM_PELSHEIGHT, $DM_BITSPERPEL, $DM_DISPLAYFREQUENCY))

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

    $DllRet = DllCall("user32.dll", "int", "ChangeDisplaySettings", "ptr", DllStructGetPtr($DEVMODE), "int", $CDS_TEST)
    $DllRet = $DllRet[0]

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

    If $DllRet <> $DISP_CHANGE_SUCCESSFUL Then
    Switch $DllRet
    Case $DISP_CHANGE_RESTART
    MsgBox(48, "Warning", "Restart your computer for change display settings")
    Case $DISP_CHANGE_FAILED
    MsgBox(16, "Error", "The video driver not set a new mode")
    Return False
    Case $DISP_CHANGE_BADMODE
    MsgBox(16, "Error", "Video mode not supported")
    Return False
    Case $DISP_CHANGE_NOTUPDATED
    MsgBox(16, "Error", "Unable to write in registry")
    Return False
    Case $DISP_CHANGE_BADFLAGS
    MsgBox(16, "Error", "Bad flags")
    Return False
    Case $DISP_CHANGE_BADPARAM
    MsgBox(16, "Error", "Bad parameters")
    Return False
    EndSwitch
    EndIf

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

    $DllRet = DllCall("user32.dll", "int", "ChangeDisplaySettings", "ptr", DllStructGetPtr($DEVMODE), "int", $CDS_UPDATEREGISTRY)
    $DllRet = $DllRet[0]

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

    DllCall("user32.dll", "int", "SendMessage", "hwnd", $HWND_BROADCAST, "int", $WM_DISPLAYCHANGE, _
    "int", $SPI_SETNONCLIENTMETRICS, "int", 0)

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

    RegWrite($VGA_KEY, "PruningMode", "REG_DWORD", 1)

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

    $DEVMODE = ""
    $DllRet = ""
    EndFunc ;==>_ScreenSetting

    [/autoit]
  • Überragende Funktion - vielen dank fürs posten!

    Hat diese Funktion auch jemand verstanden? :D
    Die Funktion überlässt Windows die Kommunikation mit dem Graka-Treiber?
    Etwas befürchte ich, dass die Funktion je nach Graka-Treiber mal funktioniert und mal wieder nicht.

  • Ich würde gerne die Idee von IselOfTechno aufgreifen, die UDFs in einer Liste zusammenzufassen.
    Man könnte doch als "Community-Initiative" eine Seite starten, auf der alle UDFs mit Beispielen abgespeichert werden?

    Ich würde mich bereit erklären das PHP-Gerchreibe zu machen, bräuchte nur noch einen Grafiker, weil ich davon 0 Ahnung habe :D (Padmak, bist du da? ;) )

  • Sorry für den Doppelpost, muss aber jetzt mal sein! :)

    Die Idee ist überhaupt genial, ich würde mich anbieten dieses Portal umzusetzen, fahre jedoch bald in den Urlaub. Bestünde Interesse daran, dass ich das umsetzen würde?

    Ich bräuchte jetzt noch nicht einmal einen Grafiker, da ich ein AJAX-Framework einsetzen würde.

    Würde das jemand nutzen und wenn ich das umgesetzt hätte, wo dürfte ich das hochladen?

    Ich würde PHP/MySQL mitverwenden, dass jeder am Portal mitarbeiten kann, ohne den Source-Code zu verändern.

    Ich bräuchte auch Hilfe beim Zusammentragen der UDFs...

    Dann würden da Beispiele eine kleine Dokumentation etc. erscheinen...


    Also hätte jemand grundsätzlich Interesse, dass zu benutzen?

  • Also ich finde die Idee gut :) , vor allem wenn man auf Funktionen zurückgreifen kann die nicht in der Hilfe sind, aber trotzdem sehr gut sind.
    Es ist ja *immer besser auf eine (nahezu) fehlerfreie Lösung zurückzugreifen, als sich selber mit fehlerhaften Umsetzungen zu quälen!

    *Dazu muss gesagt werden, dass der Lernprozess bei einfachem Copy&paste auf der Strecke bleibt

    Das aktuell halten ist zwar ein kleines Problem, aber bei diesem Forum gibt es sicher den einen oder anderen der irgendwo UDFs ausgräbt :D
    Ich würde in erster Linie auf die Übersicht zurückgreifen und dann (bei möglichem Misserfolg) die Hilfe zur Hand nehmen!

    Wer immer nur das tut, was er bereits kann - wird auch immer nur das bleiben, was er bereits ist!

  • Dann setze ich mich mal dran...
    Im Moment ist in den Ferien die Zeit knapp, aber ich denke, dass ich nach den Ferien anfange, und jeden Tag was mache...
    Das Zusammentragen wäre ja noch das "einfachste", auch wenn es lange dauern wird, aber das aktuell halten, stimmt. Vielleicht kann man ja im Forum darauf hinweisen...

    2. Problem: Man darf dass nicht für jeden offen machen, da das sonst sicher zugespammt wird, also müssten sich da ein paar drum kümmern.

    3. Problem: Was ist mit den englischen AutoIt-Usern? Die Seite auf Deutsch und Englisch machen ist kein Problem, aber Beispiele/Hilfe?

  • Habe den Thread erst jetzt gelesen.
    Habe nämlich in einem anderen Forum so etwas ähnliches schon laufen. Es ist aber ein Programm und kein Portal. Alles funktioniert bereits.
    Falls ihr interresse daran habt könnt ihr euch ja per pm melden. Werde auch heute noch den Link hier reinstellen zum Download, dann könnt ihr es euch mal angucken.

    DL:
    Hier

    MfG
    Conan (Nur Mitlesend)
    Schon lange dabei

    3 Mal editiert, zuletzt von Conan10 (8. August 2009 um 14:20)

  • Ich würde eine UDF-Liste mit Beschreibung und Beispiel auch sehr nützlich finden.
    Wäre ja auch schade wenn viele nützliche Sachen die entwickelt worden sind in den tiefen des Forums "verschwinden" und neu programmiert werden müssten.

    Es gibt doch bestimmt einige hier die zum englischen Forum Kontakt haben, besteht da genrell die Möglichkeit ein solches System mit denen zusammen zu erarbeiten? Könnte im Bezug auf Aktualisierungen und vermeiden "doppelter Arbeit" ganz hilfreich sein.

  • ja ich würde soetwas machen wie das Hilfe Portal.
    Auch mit Login und verschiedenen Zugriffsstufen(darf uploaden,darf bearbeiten,...)
    @MatthiasG
    Würde dir bei den PHP dateien helfen, wenn du hilfe brauchst.

    Bitboy
    Du kannst ja mal mein Programm ausprobieren. Im Prinzip ist das das Gleiche nur als Programm und ohne Beispiel. Dafür aber mit Beschreibung.

    MfG
    Conan (Nur Mitlesend)
    Schon lange dabei

  • Also, frisch aus dem Urlaub zurück, und schon wieder einen Haufen Arbeit ;)

    Ich setze mich gerade dran und schreibe das Grundmuster, es wird wohl aussehen wie die extjs-APIDocumentation.

    @Conan: Super, ich kann Hilfe dabei immer gut gebrauchen, wenn was ist, kriegst du eine PM ;)

    Eistee macht schon die Grafik, also kann eigentlich nichts mehr schief gehen :)

    Ich denke, dass ich aber ein bisschen Zeit noch brauche, da ich im Moment noch viele andere Dinge parallel am Laufen habe, aber auf jedem Fall mach ich jeden Tag ein bisschen!

  • Hallo nochmal!

    Ich habe jetzt einen Grundstein gelegt :D
    Eine Zeile Code steht schon! ("<!DOCTYPE ...") ;)

    Ich arbeite dran! Conan10: Ich werde auf dein Angebot wohl zurückkommen. Ich melde mich demnächst per PM! :)

  • nützliche Sachen die entwickelt worden sind in den tiefen des Forums "verschwinden"

    Ganz deiner Meinung ! Ich hatte sowas schonmal wegen all den TuTs die bei irgendwelchen Usern in der Signatur rumschwirren bei Peethebee angefragt. Darauf hin wurde die alte Entwickler Kategorie in Tutorials umbenannt ;) Also mal fragen bei Pee wäre ja mal gut. Der setzt eigentl. alles recht schnell um. Muss ja nur ne Tabelle wie die HIlfe sein ;) Oder ein neuer Forenbereich ;)

    lg clonker