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

Beiträge von zemkedesign

  • Statusampel mit Tooltipp

    • zemkedesign
    • 1. April 2015 um 12:57

    Hallo zusammen,

    ich habe bei einem meiner Projektescripte eine Art Statusampel gebraucht, die jedoch sekr kompakt sein musste.
    Das Projektescript sollte vor dem eigentlichen Start bestimmte Prüfungen durchführen und die Ergebnisse grafisch darstellen. Damit es sehr kompakt ist, sollte jede einzelne Ampel mit Tooltipps versehen werden.

    Diese grafische Statusampel mit Tooltipp möchte ich euch nicht vorenthalten. Vielleicht kann es jemand gebrauchen. Hier ein Screenshot:

    Spoiler anzeigen
    C
    #include <GUIConstantsEx.au3>
    #include <WinAPI.au3>
    #include <WinAPIGdi.au3>
    
    
    Global Const $tooltipps[5] = ["Prüfung A", "Prüfung B", "Prüfung C", "Prüfung D", "Prüfung E"]
    Global Const $GUICtrlSetBkColor_green = 0x00ff00
    Global Const $GUICtrlSetBkColor_red = 0xff0000
    Global Const $GUICtrlSetBkColor_default = _GetSysColor(15)
    Global Const $GUICtrlSetBkColor_working1 = 0xcccccc
    Global Const $GUICtrlSetBkColor_working2 = 0xbbbbbb
    
    
    Global $buttons[5], $idBlinking
    Global $hGUI = GUICreate("Example", 150, 150)
    Global $idStartCheck = GUICtrlCreateButton("Start Check", 20, 50)
    Global $idReset = GUICtrlCreateButton("Reset", 20, 80)
    
    
    For $i = 0 To UBound($buttons) - 1
    	$buttons[$i] = GUICtrlCreateButton(" ", 20 + ($i * 20), 20, 15, 15)
    	GUICtrlSetFont(-1, 2)
    	GUICtrlSetState(-1, $GUI_DISABLE)
    	GUICtrlCreateLabel(" ", 20 + ($i * 20), 20, 15, 15)
    	GUICtrlSetTip(-1, $tooltipps[$i])
    	GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    Next
    GUISetState(@SW_SHOW)
    
    
    While 1
    	Switch GUIGetMsg()
    		Case $GUI_EVENT_CLOSE
    			ExitLoop
    		Case $idStartCheck
    			start_check()
    		Case $idReset
    			reset()
    	EndSwitch
    WEnd
    
    
    Func start_check()
    	For $i = 0 To UBound($buttons) - 1
    		gui_button_progress_blink_start($buttons[$i])
    		Sleep(1000 * Random(3, 7))
    		gui_button_progress_blink_stopp()
    
    
    		If Mod(@SEC, 2) = 0 Then
    			GUICtrlSetBkColor($buttons[$i], $GUICtrlSetBkColor_green)
    		Else
    			GUICtrlSetBkColor($buttons[$i], $GUICtrlSetBkColor_red)
    		EndIf
    	Next
    EndFunc   ;==>start_check
    
    
    Func reset()
    	For $i = 0 To UBound($buttons) - 1
    		GUICtrlSetBkColor($buttons[$i], $GUICtrlSetBkColor_default)
    	Next
    EndFunc   ;==>reset
    
    
    Func gui_button_progress_blink_switch()
    	Local $gid = gui_button_progress_blink_get_gid()
    	Switch GUICtrlGetBkColor($gid)
    		Case $GUICtrlSetBkColor_working1
    			GUICtrlSetBkColor($gid, $GUICtrlSetBkColor_working2)
    		Case Else
    			GUICtrlSetBkColor($gid, $GUICtrlSetBkColor_working1)
    	EndSwitch
    EndFunc   ;==>gui_button_progress_blink_switch
    
    
    Func gui_button_progress_blink_get_gid()
    	Return $idBlinking
    EndFunc   ;==>gui_button_progress_blink_get_gid
    Func gui_button_progress_blink_set_gid($gid)
    	$idBlinking = $gid
    EndFunc   ;==>gui_button_progress_blink_set_gid
    
    
    Func gui_button_progress_blink_start($gid)
    	gui_button_progress_blink_set_gid($gid)
    	AdlibRegister("gui_button_progress_blink_switch", 1000)
    EndFunc   ;==>gui_button_progress_blink_start
    
    
    Func gui_button_progress_blink_stopp()
    	AdlibUnRegister("gui_button_progress_blink_switch")
    EndFunc   ;==>gui_button_progress_blink_stopp
    
    
    Func _GetSysColor($nIndex)
    	Return _RGB2BGR(_WinAPI_GetSysColor($nIndex))
    EndFunc   ;==>_GetSysColor
    
    
    Func _RGB2BGR($nColor)
    	Return (BitAND($nColor, 0xff) * 0x10000) + BitAND($nColor, 0xff00) + (BitAND($nColor, 0xff0000) / 0x10000)
    EndFunc   ;==>_RGB2BGR
    
    
    ; #FUNCTION# ====================================================================================================================
    ; Name ..........: GUICtrlGetBkColor
    ; Description ...: Retrieves the RGB value of the control background.
    ; Syntax ........: GUICtrlGetBkColor($hWnd)
    ; Parameters ....: $hWnd                - Control ID/Handle to the control
    ; Return values .: Success - RGB value
    ;                  Failure - 0
    ; Author ........: guinness
    ; Example .......: Yes
    ; ===============================================================================================================================
    
    
    Func GUICtrlGetBkColor($hWnd)
    	If Not IsHWnd($hWnd) Then
    		$hWnd = GUICtrlGetHandle($hWnd)
    	EndIf
    	Local $hDC = _WinAPI_GetDC($hWnd)
    	Local $iColor = _WinAPI_GetPixel($hDC, 5, 5)
    	_WinAPI_ReleaseDC($hWnd, $hDC)
    	Return "0x" & Hex($iColor, 6)
    EndFunc   ;==>GUICtrlGetBkColor
    Alles anzeigen
  • Jumper - Programme, Webseiten, Dokumente mittels kurzem Schlüsselwort öffnen

    • zemkedesign
    • 28. November 2014 um 09:55

    Hallo zusammen,

    ich habe ein kleines, für mich aber hilfreiches Tool entwickelt. Das Tool heißt "Jumper" und ermöglicht es für Programme, Webseiten oder Dokumente "Jumps" (Schlüsselwörter) zu definieren und diese direkt aufzurufen. So lässt sich häufig Geöffnetes noch schneller öffnen.

    Beschreibung der Bedienung:

    • Verknüpfung in den Autostart legen (dann startet es unsichtbar)
    • Um ein Programm zu starten:

      • Shortcut aufrufen (Default: Alt + j)
      • Jump (Schlüsselwort) eingeben (z. B. ai + Enter)
      • Es öffnet sich die Autoitseite


    Die einzelnen Jumps werden in einer INI definiert, die mit dem Spezialjump "ini" geöffnet werden kann. Hier eine Beispiel-INI:

    Spoiler anzeigen
    Code
    [JUMPS]
    n2 = C:\Programme\notepad2\notepad2.exe
    ff = firefox
    ai = http://autoit.de
    status = C:\Dokumente\status.xlsx    
    
    
    [PREFERENCES]
    ;Sonderzeichen ALT=!  STRG=^  SHIFT=+  (Beispiel: !j entspricht ALT+j)
    shortcut = !j
    exitjump = exit
    inijump = ini
    Alles anzeigen

    Und hier das eigentliche Script:

    Spoiler anzeigen
    [autoit]

    #AutoIt3Wrapper_Icon=jumper.ico
    #AutoIt3Wrapper_UseUpx=y
    #NoTrayIcon
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <EditConstants.au3>
    #include <Misc.au3>

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

    Global Const $ini = @ScriptDir & "\jumper.ini"
    Global Const $ini_section_jumps = "JUMPS"
    Local Const $ini_section_preferences = "PREFERENCES"
    Local Const $ini_preferences_shortcut_key = "shortcut"
    Local Const $ini_preferences_exitjump_key = "exitjump"
    Local Const $ini_preferences_inijump_key = "inijump"
    Global Const $exitjump = IniRead($ini, $ini_section_jumps, $ini_preferences_exitjump_key, "EXIT")
    Global Const $inijump = IniRead($ini, $ini_section_jumps, $ini_preferences_inijump_key, "INI")

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

    HotKeySet(IniRead($ini, $ini_section_preferences, $ini_preferences_shortcut_key, "!g"), "make_visible")

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

    Local Const $gui_h = 24
    Local Const $gui_w = 200
    Local Const $gui_gap = 16
    GUICreate("Jumper", $gui_w, $gui_h+$gui_gap, -1, -1, BitOR($WS_POPUPWINDOW, $WS_POPUP))
    GUISetBkColor(0xffffff)
    Global $gui_input = GUICtrlCreateInput("", 0, $gui_gap/2, $gui_w, $gui_h, $ES_CENTER, $WS_EX_TRANSPARENT)
    GUICtrlSetBkColor(-1, 0xffffff)
    GUICtrlSetFont(-1, 16)

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

    MsgBox(64, "Hinweis", "Das Tool ist im Hintergrund gestartet.", 2)
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    make_invisible()
    Case $gui_input
    jump()
    EndSwitch
    WEnd

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

    Func make_visible()
    GUICtrlSetData($gui_input, "")
    GUISetState(@SW_SHOW)
    EndFunc

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

    Func make_invisible()
    GUISetState(@SW_HIDE)
    EndFunc

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

    Func jump()
    If GUICtrlRead($gui_input) = $exitjump Then
    Exit
    ElseIf GUICtrlRead($gui_input) = $inijump Then
    ShellExecute($ini)
    make_invisible()
    ElseIf _IsPressed("1B") Then ;ESC nach Eingabe
    make_invisible()
    Else
    Local $run = IniRead($ini, $ini_section_jumps, GUICtrlRead($gui_input), "")
    If $run <> "" Then
    ShellExecute($run)
    make_invisible()
    Else
    MsgBox(48, "Hinweis", "Kein Jump gefunden!")
    EndIf
    EndIf
    EndFunc

    [/autoit]

    Im ZIP-Anhang befinden sich die au3- u. ini-Datei und ein schickes Icon.

  • Wenn Datei älter als 3 Stunden, dann ...

    • zemkedesign
    • 17. April 2014 um 10:49

    FileGetTime liefert leider ein anderes Datumsformat zurück, als DateDiff benötigt. Deshalb muss das Format vorher konvertiert werden. Ich habs mal am Beispiel einer Datei gemacht.

    [autoit]

    #include <Date.au3>
    Local $t = _DateDiffPrepareFormat(FileGetTime(@WindowsDir & "\notepad.exe", 0))
    MsgBox(0, $t, _DateDiff("h", $t, _NowCalc()))

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

    Func _DateDiffPrepareFormat($a)
    Return $a[0] & "/" & $a[1] & "/" & $a[2] & " " & $a[3] & ":" & $a[4] & ":" & $a[5]
    EndFunc

    [/autoit]
  • Checkbox erstellen für installierte Software

    • zemkedesign
    • 17. April 2014 um 07:20

    Die meisten Produkte sind in der Registry unter einem der beiden Pfade zu finden:
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\

  • Bilddateien per Rechtsklickauswahl ein Programm starten lassen

    • zemkedesign
    • 13. März 2014 um 12:44

    Suche mal nach Kontextmenü erweitern

  • autoIt install of a MSI with no reboot

    • zemkedesign
    • 11. März 2014 um 12:39
    [autoit]

    ControlClick("TMPGEnc Authoring Works 4", "", "[CLASS:Button; INSTANCE:2]")

    [/autoit]
  • Listbox Eintrag

    • zemkedesign
    • 28. Februar 2014 um 12:58

    Schau dir mal die Hilfe zu _GUICtrlListView_Create an.

    [autoit]

    _GUICtrlListView_Create

    [/autoit]
  • Pfadnamen für Ausgabe kürzen (.NET: TextRenderer.MeasureText)

    • zemkedesign
    • 28. Februar 2014 um 12:53

    Danke - genau das habe ich gesucht.

  • Pfadnamen für Ausgabe kürzen (.NET: TextRenderer.MeasureText)

    • zemkedesign
    • 28. Februar 2014 um 10:51

    In .NET gibt es die Funktion TextRenderer.MeasureText zum Kürzen von Pfadangaben - z. B. aus C:\Documents and Settings\Administrator\Desktop\test.au3 wird C:\Documents and Settings\...\test.au3.

    Gibt es diese Funktion in AutoIt?

  • Erkennungsfunktion

    • zemkedesign
    • 25. Februar 2014 um 16:19

    Schau dir mal die Hilfe zu ControlGetText an.

    [autoit]

    ControlGetText

    [/autoit]

    Edit: Ich war leider zu lahm.

  • Fehlerabfrage einbauen

    • zemkedesign
    • 25. Februar 2014 um 14:32

    Schöner wäre es, den Button Konvertieren erst freizuschalten, wenn mind. eine Datei ausgewählt ist.

    Den Button nach dem Anlegen also erstmal inaktiv schalten:

    [autoit]


    $Convert = GUICtrlCreateButton("Konvertieren", 8, 184, 113, 49)
    GUICtrlSetState(-1, $GUI_DISABLE)

    [/autoit]

    Und später aktiv schalten:

    [autoit]


    GUICtrlSetState($Convert , $GUI_ENABLE)

    [/autoit]
  • Simple Filename Replacer: mehrere Dateien gleichzeitig umbenennen; aufrufbar per Kontextmenü

    • zemkedesign
    • 21. Februar 2014 um 11:45

    Hm _Singleton ware in der Tat eine gute Idee gewesen.
    Deine verlinkte Lösungsvariante stürzt bei mir leider ab:
    "Line 8127 (File "C:\Explorer_GetSelected[1.0].exe"):
    Error: The requested action with this object has failed."

    Ich rede mich mal mit dem Argument raus, dass ich auch aus Suchergebnissen heraus umbenennen möchte.

  • Simple Filename Replacer: mehrere Dateien gleichzeitig umbenennen; aufrufbar per Kontextmenü

    • zemkedesign
    • 21. Februar 2014 um 08:43

    Motiviation:
    Häufig habe ich eine Liste von Dateien, die ich umbenennen muss. Dabei muss nicht jede Datei individuell umbenannt werden, sondern alle Namen folgen einem Schema, oder nur bestimmte Teile der bestehenden Dateinamen müssen angepasst werden.
    Es gibt bereits fertige Tools, die mir jedoch viel zu mächtig sind. Außerdem fand ich die Vorstellung gut, das Umbenennen aus dem Kontextmenü heraus starten zu können.

    Screenshots:
    Aufruf über Kontextmenü:

    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.

    Oberfläche des Programms:

    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.

    Schwierigkeiten:
    Die größter Schwierigkeit lag in der Umsetzung der Kontextmenüeinbindung. Der Eintrag war schnell angelegt. Aber bei einer Mehrfachselektion ruft Windows für jede Datei eine separate Instanz des Programms auf. Diese verschiedenen Instanzen müssen einen Master aushandeln; alle anderen Instanzen werden zu Slaves und kommunizieren mit dem Master. Windows startet die Instanzen manchmal auf die Millisekunde gleich, sodass es eine Herausforderung war.

    Installation:
    Wird das Programm direkt aufgerufen, kann der Kontextmenüeintrag angelegt und gelöscht werden.
    Alle weiteren Aufrufe werden dann indirekt über den Kontextmenüeintrag der Dateien gestartet.

    Update:
    Meine Master-Slave-Entscheidung zur Vermeidung von Mehrfachaufrufen durch _Singleton ersetzt. Danke BugFix

    Dateien

    1.png 11,13 kB – 624 Downloads 2.png 7,67 kB – 620 Downloads simple-filename-replacer.zip 321,05 kB – 555 Downloads
  • StringRegExpReplace ersetzt bei .* als pattern zweimal

    • zemkedesign
    • 21. Februar 2014 um 07:39

    Danke für die erläuternden Beispiele. An Stringanfang und -ende hatte ich nicht gedacht.

  • StringRegExpReplace ersetzt bei .* als pattern zweimal

    • zemkedesign
    • 20. Februar 2014 um 14:44

    Warum ersetzt das Beispiel zweimal, sodass "##" zurückgegeben wird? Ich hätte erwartet, dass egal welcher Teststring verwendet wird, immer "#" zurückgegeben wird.

    [autoit]

    MsgBox(0, "", StringRegExpReplace("a", ".*", "#"))

    [/autoit]
  • IP Adressen und Maske in einem Text suchen

    • zemkedesign
    • 19. Februar 2014 um 16:03
    [autoit]

    $aIPAddress_und_Netze = StringRegExp($Text, '(?:\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})(?: ?/\d{1,2})?', 3)

    [/autoit]

    Ich habs aufgeteilt in zwei Teile, wovon der zweite Teil vorhanden sein kann, aber nicht muss.
    (?: muss man bei den Klammergruppen einfügen, damit keine einzelnen Treffer zurückgegeben werden.

  • if(@SEC==00 geht nicht

    • zemkedesign
    • 19. Februar 2014 um 15:49

    "alle 20 Sekunden" könntest du auch so lösen:

    [autoit]

    If Mod(@SEC, 20) = 0 Then

    [/autoit]
  • _GUICtrlEdit: bestimmte Zeichen verbieten; Eingabe bestimmter Zeichen verhindern

    • zemkedesign
    • 19. Februar 2014 um 14:09

    Versucht man in Windows eine Datei umzubenennen und gibt ein unzulässiges Sonderzeichen ein, wird die Eingabe des Zeichens verhindert und ein Tooltipp mit den verbotenen Zeichen wird angezeigt.

    Diese Funktionsweise habe ich für ein Editfeld nachgebaut. Vielleicht kann es jemand brauchen.


    Für das folgende Beispielscript habe ich die Beispielfunktion von _GUICtrlEdit_Create abgeändert.

    [autoit]

    #include <GuiEdit.au3>
    #include <WinAPI.au3> ; used for Lo/Hi word
    #include <WindowsConstants.au3>
    #include <GUIConstantsEx.au3>

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

    $Debug_Ed = False ; Check ClassName being passed to Edit functions, set to True and use a handle to another control to see it work

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

    Global $hEdit
    Global Const $restricted = "\ / : * "" < > |"

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

    _Example1()

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

    Func _Example1()
    Local $hGUI

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

    ; Create GUI
    $hGUI = GUICreate("Edit Create", 400, 300)
    $hEdit = _GUICtrlEdit_Create($hGUI, "This is a test" & @CRLF & "Another Line", 2, 2, 394, 268)
    GUISetState()

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

    GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")

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

    _GUICtrlEdit_AppendText($hEdit, @CRLF & "Append to the end?")

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

    ; Loop until user exits
    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE
    GUIDelete()
    EndFunc ;==>_Example1

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

    Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
    #forceref $hWnd, $iMsg
    Local $hWndFrom, $iIDFrom, $iCode, $hWndEdit
    If Not IsHWnd($hEdit) Then $hWndEdit = GUICtrlGetHandle($hEdit)
    $hWndFrom = $ilParam
    $iIDFrom = _WinAPI_LoWord($iwParam)
    $iCode = _WinAPI_HiWord($iwParam)
    Switch $hWndFrom
    Case $hEdit, $hWndEdit
    Switch $iCode
    Case $EN_UPDATE ; Sent when an edit control is about to redraw itself
    Local $replace = "", $pos = 0
    For $i = 1 To StringLen(_GUICtrlEdit_GetText($hEdit))
    If StringInStr(StringStripWS($restricted, 8), StringMid(_GUICtrlEdit_GetText($hEdit), $i, 1)) = 0 Then
    $replace &= StringMid(_GUICtrlEdit_GetText($hEdit), $i, 1)
    Else
    $pos = $i
    EndIf
    Next

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

    If $pos > 0 Then
    _GUICtrlEdit_SetText($hEdit, $replace)
    _GUICtrlEdit_SetSel($hEdit, $pos-1,$pos-1)
    _GUICtrlEdit_ShowBalloonTip($hEdit, "", "verboten: " & @CR & $restricted, $TTI_NONE)
    EndIf
    ; no return value
    EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_COMMAND

    [/autoit]
  • Word Feldfunktion erstellen

    • zemkedesign
    • 25. August 2010 um 10:59

    Besten Dank. Mit dem TAB hats geklappt.
    Hab noch eine Überprüfung eingebaut, ob erst nach links und dann nach rechts oder umgedreht, je nachdem in welcher Spalte der Cursor steht.
    Problem ist der Cursor in der letzten Spalte und anschließendem TAB eine neue Zeile ergibt.

  • Word Feldfunktion erstellen

    • zemkedesign
    • 25. August 2010 um 08:45

    Leider ohne Erfolg. Hier mal das komplette Minimaltestscript:

    [autoit]

    #include <Word.au3>
    ;Word öffnen
    Local $oWordApp = _WordCreate("")
    ;Tabelle 5x5 erzeugen
    $oWordApp.ActiveDocument.Tables.Add($oWordApp.Selection.Range,5,5)
    ;Zelle 2,2 markieren
    $oWordApp.ActiveDocument.Tables(1).Cell(2,2).Range.Select()
    ;Feldfunktion einfügen
    $oWordApp.Selection.Fields.Add($oWordApp.Selection.Range, -1, "SEQ Step", False)

    [/autoit]


    Letzte Zeile meldet: The requested action with this object has failed.:

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™