• Hallo liebe Community
    hier wird mit der Zeit ein FAQ entstehen.
    Falls jemand Tips oder interesante und themabezogene Links hat, einfach mal hier posten.


    [link_int=#post2028]Wie ueberwache ich bei AutoIt ob eine Taste gedrueckt worden ist?[/link_int]
    [link_int=#post2029]Wo sind alle rundll32 Befehle aufgelistet?[/link_int]
    [link_int=#post2116]Gibt es auch Tips für SciTe?[/link_int]

    24 Mal editiert, zuletzt von geRRus (5. Mai 2006 um 11:14)

  • Wie ueberwache ich bei AutoIt ob eine Taste gedrueckt worden ist?

    Die UDF (User Defined Functions -> Funktionen von AutoIt-Benutzern definiert) "_IsPressed" bietet die Moeglichkeit Eingabegeraete wie die Tastatur und Maus auf Ereignisse durch Bedienung eines Benutzer zu ueberwachen. In der aktuellen stabilen Version von AutoIt (v3.1.1) ist die UDF _IsPressed aber leider noch nicht integriert. Die Hilfe der Version 3.1.1 enthaellt auch keine Informationen zu _IsPressed.
    Es bestehen dennoch mehrere Moeglichkeit _IsPressed in einen AutoIt v3.1.1 Script zu integrieren. Bei mir hat das so funktioniert, ich habe mir die neueste Beta von AutoIt besorgt und mir erst mal die AutoIt-Hilfe angeschaut (die Hilfe der Beta-Version!). Hier ist unter "User Defined Functions -> Misc Management" auch die UDF _IsPressed behandelt. Dort kann entnommen werden, dass durch "#Include <Misc.au3>" die UDF _IsPressed verfuegbar gemacht werden kann.

    Also habe ich mir mal die "Misc.au3" der Beta Version angeschaut und dort folgendes gefunden:

    code:

    Spoiler anzeigen

    Dann habe ich die Funktion direkt in meinen AutoIt v3.1.1 Script uebernommen und die UDF _IsPressed war verfuegbar. großes Grinsen

    Es besteht natuerlich auch die Moeglichkeit per "#Include <Misc.au3>" die Beta "Misc.au3" in einem v3.1.1 Script verfuegbar zu machen.


    Dank an: Kruemel_02

    5 Mal editiert, zuletzt von Gun-Food (5. Mai 2006 um 11:37)

  • Wo sind alle rundll32 Behfele auf gelistet?

    Auf den Seiten hier und hier sind so ziemlich alle Befehle aufgelistet.

    Dank an: ytwinky

    4 Mal editiert, zuletzt von geRRus (4. Mai 2006 um 08:55)

  • Gibt es auch Tips für SciTe?


    Ja einen Tip habe ich.Viele kennen ihn vielleicht schon, ich aber bin nur du Zufall drauf gestossen, weil ich nie die Hilfe von den jeweiligen Programmen lese, schon gar nicht wenn diese auf englisch sind:)

    Also, in SciTe besteht die Möglichkeit Abkürzungen zu benutzen, was das Schreiben vom Code deutlich beschleunigt.
    Am besten mache ich einfach ein Beispiel:

    Wenn man in SciTE z.B. cmd schreibt und danach die Leertaste drückt, wird cmd durch diesen Code ersetzt:

    Code
    RunWait(@ComSpec & ' /c ', '', @SW_HIDE)


    was wirklich praktisch ist. Natürlich wäre SciTe nicht SciTe wäre es nicht noch mehr solcher Abkürzungen im Programm integriert:)
    Die ganze Liste könnt ihr der SciTE-Hilfe entnehmen, Stichwort Abbreviation List.
    Es soll wohl sogar die Möglichkeit bestehen diese Liste seine Bedürfnissen anzupassen, nur bin ich noch nicht dahinter gekommen wie das geht.


    Dank an: Gtaspider

    • Offizieller Beitrag
    Zitat

    Es soll wohl sogar die Möglichkeit bestehen diese Liste seine Bedürfnissen anzupassen, nur bin ich noch nicht dahinter gekommen wie das geht.

    Schaut erstmal nach, ob das überhaupt nötig ist ;) , denn eigentlich ist ja schon alles drin.
    Öffnet in SciTE die Datei "..\SciTE\au3abbrev.properties". Hier findet ihr die komplette Auflistung in der Form

    Code
    Kürzel=gesamter Befehl od. Makro
    z.B.
    slp1=Sleep(1000)\n|

    Wenn ihr also etwas erweitern möchtet, prüft mit Suchbefehl ob das Kürzel noch frei ist und fügt es dann mit der Befehlsfolge in obiger Form in der entsprechenden Gruppe oder einer eigenen (z.B. #; -- UserDef -- ) ein.

    Edit:
    Ihr könnt allerdings einige Vorlagen an eure Einstellungen anpassen, z.B. die Funktionsbeschreibung läßt sich mit "setupudf" erstellen, sieht dann so aus:

    Hier läßt sich schonmal der Autor eintragen und natürlich kann man dann auch deutsch schreiben. =)

    • Offizieller Beitrag

    Voraussetzung: Beta

    Hallo,
    ich habe hier eine GUI erstellt, an der man die grundlegenden Operationen in einer Liste testen kann. Zu jedem Vorgang wird gleich der ausgeführte Code mit angezeigt.
    Ich denke, das ist verständlicher als die Programmierbeispiele in der Hilfe.
    Es sind noch längst nicht alle möglichen Funktionen eingebunden. Das werde ich mal bei Gelegenheit komplettieren.

    EDIT 09.02.2009 Da ich mal wieder zufällig hier reingeschaut habe, fällt mir auf, dass hier noch aktuell gedownloadet wird. Jedoch gibt es die GuiList.au3 und deren Befehle in der aktuellen Version nicht mehr. Jedoch ist das Prinzip auch auf die GuiListBox.au3 anwendbar.


    Spoiler anzeigen
    • Offizieller Beitrag

    Wie kann ich auf dem ausführenden Rechner bestimmte Datums-oder Ländereinstellungen garantieren?

    Erzeuge ich z.B. ein Datumsauswahlfeld

    [autoit]

    GUICtrlCreateDate("", 384, 50, 120, 21,$DTS_SHORTDATEFORMAT) ; Kurzform TT.MM.JJJJ

    [/autoit]


    ist die Darstellung abhängig von den Ländereinstellungen in der Systemsteuerung des Rechners auf dem das Programm läuft.
    Um sicherzugehen, dass das von mir erforderte Format erscheint, muß ich es in der Registry überprüfen und ggf. korrigieren.
    Zum Programmende muß natürlich der Originalzustand wiederhergestellt werden.

    Mein Bsp. überwacht die Darstellung des Datums in der Kurzform (Registry 'sShortDate') und kann natürlich analog für die anderen Werte verwendet werden.

    Spoiler anzeigen
    [autoit]

    #region - Datumeinstellung überprüfen / korrigieren
    $currVal = RegRead("HKEY_CURRENT_USER\Control Panel\International\","sShortDate")
    $RegChanged = 0
    If $currVal <> "dd.MM.yyyy" Then
    RegWrite("HKEY_CURRENT_USER\Control Panel\International\","sShortDateTMP","REG_SZ",$currVal) ; Einstellung sichern
    RegWrite("HKEY_CURRENT_USER\Control Panel\International\","sShortDate","REG_SZ","dd.MM.yyyy"); alten Eintrag überschreiben
    $RegChanged = 1
    EndIf
    #endregion - Datumeinstellung
    ;;
    ;;
    ;; Code
    ;;
    ;;
    ; Registry geändert ?
    If $RegChanged = 1 Then
    $tmpVal = RegRead("HKEY_CURRENT_USER\Control Panel\International\","sShortDateTMP") ; gesicherten Wert lesen
    RegWrite("HKEY_CURRENT_USER\Control Panel\International\","sShortDate","REG_SZ",$tmpVal) ; Originalzustand wiederherstellen
    EndIf
    Exit

    [/autoit]
    • Offizieller Beitrag

    Eigene Abkürzungen in SciTE

    SciTE verfügt über eine Liste von Abkürzungen (zu finden in der Datei "abbrev.properties"), die das Codieren sehr vereinfachen.
    Durch Eingabe der Abkürzung + Leertaste wird der hinterlegte Code eingefügt.
    In einem vorigen Beitrag hatte ich bereits zur Änderung bestehender Abkürzungen geschrieben. Zu den bestehenden Abkürzungen lassen sich auch ganz einfach eigene hinzufügen.

    Die Datei "abbrev.properties" kannst du direkt über SciTE -> Optionen -> Abkürzungsdatei öffnen.
    Füge einfach die neue Zeile in die Dateie ein (Position ist eigentlich egal - Hauptsache vor der Markierung [#-#-#-#..]) - aber für eine bessere Übersicht macht es vielleicht Sinn, eine eigene Sektion (#; -- Eigene Abkürzungen --) einzufügen.
    Damit das Kürzel auch aktiv wird, mußt du es in der "au3.keywords.properties" (SciTE -> Optionen -> Öffnen au3.keywords.properties) eintragen.
    Füge das Kürzel an das Ende der Sektion: ".keywords.abbrev=..." an. Hier aufpassen, dass als letztes immer ein Zeilenumbruch in der Datei bleibt - gibt sonst 'nen Fehler.
    Ab sofort steht die neue Abkürzung zur Verfügung.

    • Offizieller Beitrag

    Label als Button

    Mit der Funktion von rakudave habe ich hier mal ein Bsp. erstellt, wie man farbige Button erstellen kann.
    Ich habe die Funktion noch etwas erweitert, damit ich auch den Schriftstyle verändern kann.
    Für die meisten Anwendungen sollte dies ausreichen.
    Was nicht geht: Verändern der Buttoneigenschaften (Beschriftung, Farbe, Style) zur Laufzeit.

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    Dim $steelblue = 0xB0C4DE, $khaki = 0xF0E68C, $violet = 0x800080, $rot = 0xFF0000, $gelb = 0xFFFF00
    Dim $aqua = 0x00FFFF, $crimson = 0xDC143C

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

    $Form1 = GUICreate("Colored Button", 504, 186, -1, -1)
    GUISetBkColor($steelblue)
    ; die Erzeugung des Buttons gibt eine Array-Variable zurück
    $ret1 = _GUICtrlCreateColorButton("Button1", 25, 75, 85, 25, $khaki, $violet)
    ; an Position [0] des Arrays ist das Handle, über das der Button abgefragt werden kann
    $btn1 = $ret1[0]
    $ret2 = _GUICtrlCreateColorButton("Button2", 143, 75, 85, 25, $aqua, $rot, 10, 600, 0, "Verdana")
    $btn2 = $ret2[0]
    $ret3 = _GUICtrlCreateColorButton("Button3", 267, 75, 85, 25, $crimson, $gelb, 12, 600, 2, "Courier")
    $btn3 = $ret3[0]
    $ret4 = _GUICtrlCreateColorButton("Button4", 393, 75, 85, 25, $gelb, $crimson, 11, 400, 0, "Arial Narrow")
    $btn4 = $ret4[0]
    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $btn1
    GUICtrlSetStyle($btn1, $SS_ETCHEDFRAME) ; Button im Gedrückt-Zustand
    Sleep(150) ; Verweildauer im Gedrückt-Zustand
    GUICtrlSetStyle($btn1, $SS_NOTIFY + $SS_GRAYRECT) ; Button ungedrückt
    Sleep(100) ; Pause um Vorgang optisch wahrzunehmen
    ; ab hier der Code für ButtonClick
    MsgBox(0, '', "Standardschrift u. -größe" & @LF & "violett auf khaki")
    Case $btn2
    GUICtrlSetStyle($btn2, $SS_ETCHEDFRAME)
    Sleep(150)
    GUICtrlSetStyle($btn2, $SS_NOTIFY + $SS_GRAYRECT)
    Sleep(100)
    MsgBox(0, '', "Verdana 10, 600 breit" & @LF & "rot auf aqua")
    Case $btn3
    GUICtrlSetStyle($btn3, $SS_ETCHEDFRAME)
    Sleep(150)
    GUICtrlSetStyle($btn3, $SS_NOTIFY + $SS_GRAYRECT)
    Sleep(100)
    MsgBox(0, '', "Courier 12, kursiv, 600 breit" & @LF & "gelb auf crimson")
    Case $btn4
    GUICtrlSetStyle($btn4, $SS_ETCHEDFRAME)
    Sleep(150)
    GUICtrlSetStyle($btn4, $SS_NOTIFY + $SS_GRAYRECT)
    Sleep(100)
    MsgBox(0, '', "Arial Narrow 11" & @LF & "crimson auf gelb")
    EndSwitch
    WEnd

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

    ;=============================================================================
    ;
    ; Function Name: _GUICtrlCreateColorButton()
    ;
    ; Description: Creates a colored Button
    ;
    ; Syntax: _GUICtrlCreateColorButton($text, $left, $top, $width, $height,$bkcolor[,$fontcolor] _
    ; [,$fontsize][,$fontweight][,$fontattrib][,$fontname])
    ;
    ; Parameter(s); $text = The text of the control
    ; $left = The left side of the control
    ; $top = The top of the control
    ; $width = The width of the control
    ; $height = The height of the control
    ; $bkcolor = Backgroundcolor of the control
    ; $fontcolor = [optional] Fontcolor of the control
    ; $fontsize = [optional] Schriftgröße (default 9)
    ; $fontweight = [optional] Zeichenbreite (default 400)
    ; $fontattrib = [optional] Schriftattribut
    ; (kursiv:2 unnterstrichen:4 durchgestrichen:8)
    ; $fontname = [optional] Schriftfont
    ;
    ; Return Value(s): array[1] = used to change colors
    ; array[0] = notifies GUIGetMsg if user clicks
    ;
    ; Author: rakudave <[email='rakudave@gmx.net'][/email]>
    ; Erweiterung $fontsize, $fontweight, $fontattrib, $fontname von BugFix
    ;==========================================================================================
    Func _GUICtrlCreateColorButton($text, $left, $top, $width, $height, $bkcolor, $fontcolor = -1, _
    $fontsize = 9, $fontweight = 400, $fontattrib = "default", $fontname = "default")
    Local $colbut[2]
    If $fontcolor == -1 Then $fontcolor = 0x000000
    $colbut[0] = GUICtrlCreateLabel("", $left, $top, $width, $height, $SS_BLACKRECT)
    GUICtrlCreateLabel("", $left, $top, $width - 1, $height - 1, $SS_WHITERECT)
    GUICtrlCreateLabel("", $left + 1, $top + 1, $width - 2, $height - 2, $SS_GRAYRECT)
    $colbut[1] = GUICtrlCreateLabel($text, $left + 1, $top + 1, $width - 3, $height - 3, $SS_NOTIFY & $SS_CENTER)
    GUICtrlSetBkColor(-1, $bkcolor)
    GUICtrlSetColor(-1, $fontcolor)
    GUICtrlSetFont(-1, $fontsize, $fontweight, $fontattrib, $fontname)
    Return $colbut
    EndFunc ;==>_GUICtrlCreateColorButton

    [/autoit]
    • Offizieller Beitrag

    Array Tutorial

    Hi,

    da doch ziemlich oft Fragen zu Arrays gestellt werden, das richtige Verständnis aber wohl nicht unbedingt entsteht, habe ich mal versucht ein Tutorial zum Thema Array zu verfassen.

    Ich habe mich für den Anfang etwas kurz gehalten, man könnte ja problemlos seitenweise zu dem Thema referieren ;).
    Es ist gedacht als Einstiegshilfe für all jene, die schon bei dem Wort Array das Grauen kriegen :D
    Daraus resultierende Fragen könnt ihr mir gerne zukommen lassen, ich werde das Tut dann um eine FAQ erweitern.

    Also viel Spaß.

    Array Tutorial

    EDIT 31.10.07

    Inhalt aktuell

  • Hallo,

    dein Array Tutorial ist nicht erreichbar. Würdest du es bitte nochmal hochladen?

    Danke.

    /Edit: Grad gesehen: Du hast in deiner Signatur nen anderen Link, der funktioniert. Aber der von oben im Post nicht.

    • Offizieller Beitrag

    Hi,
    da immer wieder angefragt wird, wie man mit Dll's arbeitet, habe ich mich aufgerafft und mal versucht ein kleines Tut zu erstellen. Die Datentypenbeschreibung aus der AutoIt-Hilfe habe ich mit übernommen, damit alles beieinander ist.

    Hier findet ihr das Tut. Ich hab es auch angehängt.

    Sollte irgendwas fehlerhaft sein, bitte melden. 100% fit bin ich bei dem Thema noch nicht. :rolleyes:

    Edit: Habe es nochmal überarbeitet und um Strukturen und Pointer erweitert. Außerdem ist es optisch aufgefrischt ;)

  • SciTE, AutoiT-Quelltext öffnen "setupudf" eingeben (wird rot), Leertaste drücken. Ist in der abrrev-Datei für SciTE hinterlegt.

    peethebee

    Ich hab setupgui in der Datei au3abbrev.properties verändert, weil mir die andere nicht so gefallen hat ( ich benutzt auch immer switch statt select ) :

    Code
    #; -- GUI setup --
    setupgui=#include <GUIConstantsEx.au3>\n#include <WindowsConstants.au3>\n\n$MainGUI=GUICreate("",400,300,-1,-1)\nGUISetState()\n\nWhile 1\n$msg=GUIGetMsg()\nSwitch $msg\nCase $GUI_EVENT_CLOSE\nExit\nEndSwitch\nWEnd

    So sieht das jetzt aus, aber wenn ich setupgui eingeben kommt immer noch das alte, obwohl das jetzt garnicht mehr drinsteht.
    Warum geht das nicht?