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

Beiträge von peethebee

  • Happy Birthday i2c :)

    • peethebee
    • 18. April 2011 um 09:09

    Meinen herzlichen Glückwunsch, i2c!
    Lass es dir heute trotz allem mal gut gehen :).

    Wir sind dir sehr dankbar für deine unermüdliche und sehr gute Arbeit an der Technik hier im Forum, vor allem an der Shoutbox. Danke!

    Auf das nächste Jahr(-zehnt)!
    Johannes

  • Buch

    • peethebee
    • 13. April 2011 um 19:58

    Hi jojot,

    Vielen Dank für dein Lob!
    Ich habe länger nicht mehr am Inhalt des Buches gearbeitet und es ist auch bei weitem noch nicht fertig. Außerdem ist die inhaltliche Struktur noch unklar. Es ist aus meiner Sicht nicht einfach, einen Weg zu finden, der nicht zu sehr ins Detail geht (also jede Funktion besprechen), aber auch nicht zu oberflächlich bleibt. Wenn ich eines Tages weiterschreibe, behalte ich deinen Input im Hinterkopf :). Feedback ist da sehr nützlich!
    Wenn es dann neuen Text gibt, komme ich auch gerne auf dein Angebot zum Korrekturlesen zurück.

    Johannes

  • HTML-Datei auf Server bearbeiten

    • peethebee
    • 13. April 2011 um 16:36

    Fehlermeldung (@error-Wert) von AutoIt?
    Rückgabewert der Funktion?
    Evtl. Log-Eintrag auf dem Server, der zeigt, was schiefgelaufen ist?

    Johannes

  • Das bin ich

    • peethebee
    • 13. April 2011 um 13:09

    Herzlich willkommen,

    Freut mich immer, wenn wir auch "Professionelle" (ja, ich bin mir über das Wortspiel bewusst!) hier im Forum haben :).

    Grüße,
    Johannes

  • HTML-Datei auf Server bearbeiten

    • peethebee
    • 13. April 2011 um 13:05

    INetGet triggert z.B. einen Aufruf ohne sichtbaren Browser :).
    Für POST-Daten kannst du die WinHTTP-UDF nutzen soweit ich mich erinnere…

    Johannes

  • Hardeware emulation

    • peethebee
    • 12. April 2011 um 21:30

    chip, lass deinen Rachefeldzug bitte einfach sein, ich sehe keinen Verstoß gegen die Forenregeln oder Gesetze und verantworte den Thread daher. Diskussion back-to-topic!

    Ich glaube, dass AutoIt nicht genug Performance bieten wird, um den gesamten (wenn auch langsamen) Prozessor zu emulieren. Ich würde da eher in C(++) loslegen (wenn ich es gescheit könnte :D).

    Johannes

  • jEdit für AutoIt

    • peethebee
    • 9. April 2011 um 00:32

    Hi Stilgar,


    Vorneweg: Tolles Projekt :). Besonders die Funktionsliste hätte es mir angetan im Vergleich zu SciTE.

    Leider funktioniert es (wohl dank der Windows-7-64-Bit-Rechtehölle) nicht so ganz. Der AutoIt-Edit-Mode ist scheinbar halb da, globale Einstellungen lassen sich nicht treffen (Look-And-Feel, Schriftgröße usw.), selbst wenn ich mit Administatorrechten und UAC-Erlaubnis starte :(. Kennst du da den richtigen Trick? Jetzt als ich die Version raussuchen wollte, hat er einmalig (!) eine veränderte Schriftgröße angenommen. Auch das Highlighting ist jetzt da!?

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

    Ich nutze jEdit 4.3.

    Geht außerdem folgendes:
    - Skriptneustart (!) per Tastenkombination
    - Originalfarben von SciTE im Highlighting
    - größere Schrift im Codefenster


    Johannes

    Dateien

    editmode.png 170,12 kB – 0 Downloads
  • WinNav - Fenster mit der Tastatur wechseln

    • peethebee
    • 6. April 2011 um 18:37
    Zitat von chip

    Viel besser, jetzt kommt die List sofort.

    Sehr gut, danke für den Restest! :) Die Änderung war nur ein Umstellen von Filterprüfungen, erstaunlich, dass sich das derart auf die Laufzeit auswirkt, aber es bestätigt meine These, dass schlechte Programmierung oft mehr Performance kostet als die Sprache "verbockt" ;).

    Johannes

  • WinNav - Fenster mit der Tastatur wechseln

    • peethebee
    • 6. April 2011 um 11:07

    So, ich war mit dieser UDF noch mal optimieren. Die Geschwindigkeit ist dramatisch verbessert worden, vielleicht kannst du noch mal testen, chip?
    Das mit der Reihenfolge kann ich nicht so ganz nachvollziehen. Im Moment taucht der Firefox in WinNav z.B. immer auf Position 1 auf. Das hängt bei Alt-Tab ja davon ab, wann es zuletzt den Fokus hatte.

    Johannes

  • WinNav - Fenster mit der Tastatur wechseln

    • peethebee
    • 5. April 2011 um 23:57
    Zitat von chip

    Mh nette Idee, aber unter Win 7 hast das gleiche ja schon mit Alt+TAB und das wesentlich intuitiver durch zusätzlicher Miniaturvorschau.

    Danke für das Feedback :). Offenbar muss ich noch ein bisschen genauer den Mehrwert erläutern :D. Ich kann mit meinem Skript besser kontrollieren, wie ich ein Fenster erreiche. Die Reihenfolge der Fenster in der Alt-Tab-Ansicht ist leider im besten Fall logisch, intuitiv aber auf keinen Fall, weil sich niemand die Reihenfolge so vieler Elemente merken kann und will. Außerdem kann man durch das Pinning die Auswahl schnell verkleinern und mit dem Filtern Fenster dauerhaft aus der Auswahl heraus halten. Das ist so die Überlegung dahinter :).

    Kannst du mehr zu dem Fehler bei dir sagen? Ich habe es unter 64-Bit Windows 7 entwickelt und es funktioniert bei 8-10 Fenstern mit gut einer Sekunde Ladezeit (im Video ja angesprochen, dass Caching noch nicht implementiert ist und auch sonst keine Optimierungen).

    Johannes

  • WinNav - Fenster mit der Tastatur wechseln

    • peethebee
    • 5. April 2011 um 22:23

    Code und Video online :).

    Johannes

  • WinNav - Fenster mit der Tastatur wechseln

    • peethebee
    • 5. April 2011 um 21:23

    Hi,

    Ein kleines Projekt, um Fenster etwas komfortabler mit der Tastatur wechseln zu können.

    Features:
    - Zunächst Auswahl nach Prozess
    - Dann Auswahl des Fensters dazu (falls mehere existieren)
    - Aufruf über Strg+Shift+a, Auswahl mit F1-F9
    - Übersichtsfenster zur Orientierung

    Code:

    Spoiler anzeigen
    [autoit]

    #cs ----------------------------------------------------------------------------

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

    AutoIt Version: 3.3.6.1
    Author: Johannes Mitlmeier

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

    Script Function:
    Window navigation via keyboard.

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

    #ce ----------------------------------------------------------------------------

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

    ; Vorbereitungen
    Global $sHotkey = "^+a"
    Global $aFilter[2][2] = [["Start", "explorer.exe"],["Program Manager", "explorer.exe"]]
    Global $aFixOrder[3] = ["firefox.exe", "explorer.exe", "scite.exe"]

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

    ; UDFs
    #include <Process.au3>
    #include <Array.au3>
    #include <GUIConstantsEx.au3>
    #include <GuiListView.au3>
    #include <WindowsConstants.au3>
    #include <Misc.au3>
    #include <Math.au3>

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

    Global Enum $PRECHOICE, $PROCESSCHOICE, $WINCHOICE
    Global $selectionStatus = $PRECHOICE
    Global $hGUI, $xChoiceList, $xChoiceItem

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

    HotKeySet($sHotkey, "_init")
    Opt("GUIOnEventMode", 1) ; Change to OnEvent mode

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

    ; Hauptschleife
    While Sleep(1000000)
    WEnd

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

    ; Funktionen

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

    Func _init()
    ConsoleWrite($selectionStatus & @CRLF)
    If $selectionStatus <> $PRECHOICE Then Return
    $aProc = _GetProcesses()
    $selectionStatus = $PROCESSCHOICE
    _ShowSelectionWindow($aProc)
    EndFunc ;==>_init

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

    Func _WinChoice()
    ConsoleWrite("winchoice '" & $xChoiceItem & "'" & @CRLF)
    $aList = _GetWindowsByProcessName($xChoiceItem)
    _DebugWindowList($aList)
    If UBound($aList) > 1 Then
    ; Nummern vergeben
    For $j = 0 To UBound($aList) - 1
    If StringInStr($aList[$j], "|") Then ContinueLoop
    $aList[$j] = ($j + 1) & "|" & $aList[$j]
    Next
    $selectionStatus = $WINCHOICE
    _ShowSelectionWindow($aList)
    Else
    ConsoleWrite("activating " & WinGetTitle(HWnd($aList[0])) & @CRLF)
    WinActivate(HWnd($aList[0]))
    $selectionStatus = $PRECHOICE
    EndIf
    EndFunc ;==>_WinChoice

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

    Func _ShowSelectionWindow($aArray)
    ConsoleWrite("_ShowSelectionWindow " & UBound($aArray) & @CRLF)
    $xChoiceList = $aArray
    $iHeight = 28 + 28 * UBound($aArray)
    $iWidth = _Iif($selectionStatus = $PROCESSCHOICE, 150, 450)
    $sTitle = _Iif($selectionStatus = $PROCESSCHOICE, "Prozess", "Fenster")
    $hGUI = GUICreate("Auswahl", $iWidth, $iHeight, Default, Default, $WS_POPUP)
    GUISetFont(14)
    $hListView = GUICtrlCreateListView("Nr.|" & $sTitle, 0, 0, $iWidth, $iHeight)
    ; Liste aufbauen
    Switch $selectionStatus
    Case $PROCESSCHOICE
    For $i = 0 To UBound($aArray) - 1
    $parts = StringSplit($aArray[$i], "|")
    GUICtrlCreateListViewItem($parts[1] & "|" & StringTrimRight($parts[2], 4), $hListView)
    Next
    Case $WINCHOICE
    For $i = 0 To UBound($aArray) - 1
    $parts = StringSplit($aArray[$i], "|")
    GUICtrlCreateListViewItem($parts[1] & "|" & WinGetTitle(HWnd($parts[2])), $hListView)
    Next
    EndSwitch

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

    ; Hotkeys setzen
    For $i = 1 To UBound($aArray)
    HotKeySet("{F" & $i & "}", "_selected")
    Next

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

    ; Anzeigen
    GUISetOnEvent($GUI_EVENT_CLOSE, "_HideWin")
    GUISetState(@SW_SHOW, $hGUI)
    EndFunc ;==>_ShowSelectionWindow

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

    Func _selected()
    ; gewähltes Item erkennen
    $iIndex = StringTrimRight(StringTrimLeft(@HotKeyPressed, 2), 1)
    $iMax = _Min(Int($iIndex), UBound($xChoiceList) - 1) ; Int-Aufruf hier existentiell!
    For $i = 0 To $iMax
    If StringInStr($xChoiceList[$i], $iIndex & "|") == 1 Then
    $xChoiceItem = $xChoiceList[$i]
    $xChoiceItem = StringRegExpReplace($xChoiceItem, "^\d*.", "") ; entferne 1| und ähnliches
    ConsoleWrite("chosen item " & $xChoiceItem & @CRLF)
    ExitLoop
    EndIf
    Next

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

    ; Wie geht es weiter?
    GUIDelete($hGUI)
    Switch $selectionStatus
    Case $PROCESSCHOICE
    _WinChoice()
    Case $WINCHOICE
    ConsoleWrite("activating " & WinGetTitle(HWnd($xChoiceItem)) & @CRLF)
    WinActivate(HWnd($xChoiceItem))
    $selectionStatus = $PRECHOICE
    EndSwitch
    EndFunc ;==>_selected

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

    Func _GetProcesses()
    ; Alle Fenster holen
    $aList = _GetAllWindows()
    ; Fensterhandles durch Prozessnamen ersetzen
    For $i = 0 To UBound($aList) - 1
    $aList[$i] = _ProcessGetName(WinGetProcess($aList[$i]))
    Next
    ; Dubletten entfernen
    $aList = _ArrayUnique($aList)
    _ArrayDelete($aList, 0) ; Anzahl in [0] entfernen

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

    ; gewünschte Sortierung sicherstellen
    For $i = 0 To UBound($aFixOrder) - 1
    For $j = 0 To UBound($aList) - 1
    If $aFixOrder[$i] = $aList[$j] Then
    $aList[$j] = ($i + 1) & "|" & $aList[$j]
    ContinueLoop 2
    EndIf
    Next
    Next
    ; Rest automatisch vergeben
    $iNumber = UBound($aFixOrder) + 1
    For $j = 0 To UBound($aList) - 1
    If StringInStr($aList[$j], "|") Then ContinueLoop
    $aList[$j] = $iNumber & "|" & $aList[$j]
    $iNumber += 1
    Next
    ; sortieren
    _ArraySort($aList)
    Return $aList
    EndFunc ;==>_GetProcesses

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

    Func _GetAllWindows()
    Return _GetWindowsByProcessName("")
    EndFunc ;==>_GetAllWindows

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

    Func _GetWindowsByProcessName($sProcessName = "")
    ConsoleWrite("getwinbyprocname " & $sProcessName & @CRLF)
    $aWinList = WinList()
    If $aWinList[0][0] = 0 Then Return -1
    Local $aReturn[$aWinList[0][0]], $iCount = 0

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

    For $i = 1 To $aWinList[0][0]
    ; nur sichtbare Fenster beachten
    If ($aWinList[$i][0] = "") Or Not _IsWindowVisible($aWinList[$i][1]) Then ContinueLoop
    ; Prozessnamen finden und abgleichen
    If $sProcessName <> "" Then
    $sRealProcessName = _ProcessGetName(WinGetProcess($aWinList[$i][1]))
    If $sRealProcessName <> $sProcessName Then ContinueLoop
    EndIf
    ; Filtern
    For $j = 0 To UBound($aFilter) - 1
    If ($aFilter[$j][0] = $aWinList[$i][0]) And ($aFilter[$j][1] = $sProcessName) Then ContinueLoop 2 ; außen fortsetzen
    Next

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

    ; in Rückgabe schreiben
    $aReturn[$iCount] = $aWinList[$i][1]
    $iCount = $iCount + 1
    Next
    ; Rückgabe sauber dimensionieren
    If $iCount = 0 Then Return -1
    ReDim $aReturn[$iCount]
    Return $aReturn
    EndFunc ;==>_GetWindowsByProcessName

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

    Func _DebugWindowList($aList)
    For $i = 0 To UBound($aList) - 1
    ConsoleWrite(StringFormat("Titel: '%s', Prozess: '%s', Daten: %i", WinGetTitle($aList[$i]), _ProcessGetName(WinGetProcess($aList[$i])), WinGetState($aList[$i])) & @CRLF)
    Next
    EndFunc ;==>_DebugWindowList

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

    Func _IsWindowVisible($handle)
    If BitAND(WinGetState($handle), 2) Then
    Return 1
    Else
    Return 0
    EndIf
    EndFunc ;==>_IsWindowVisible

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

    Func _HideWin()
    GUIDelete($hGUI)
    $selectionStatus = $PRECHOICE

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

    ; Hotkeys entfernen
    For $i = 1 To 11
    HotKeySet("{F" & $i & "}")
    Next
    EndFunc ;==>_HideWin

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

    Func _exit()
    Exit
    EndFunc ;==>_exit

    [/autoit]

    Demo:
    http://slzm.de/winnav

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

    Die Funktion zum Darstellen der Wahlmöglichkeiten ist leicht austauschbar, vielleicht will sich da ein GDI-Künstler mal ranwagen? :)


    Viel Spaß damit und gerne Feedback!
    Johannes

    Dateien

    WinNav.au3 6,41 kB – 424 Downloads
  • Quelltext auslesen

    • peethebee
    • 5. April 2011 um 20:36

    Das wird (leider) sicher keine HTTP-Authentifizierung sein, sondern einen vollen Login benötigen, z.B. mit der FF.au3 oder IE.au3 :(.

    Johannes

  • Wie sortiere ich mein ListView

    • peethebee
    • 2. April 2011 um 16:19

    Genug ;).

  • Tabellennamen aus SQLite-Datenbank auslesen

    • peethebee
    • 30. März 2011 um 12:48

    Evtl. über die PRAGMA-Geschichte? Siehe http://stackoverflow.com/questions/9288…-in-empty-table

  • Easy Func List

    • peethebee
    • 27. März 2011 um 00:16

    Hi,

    Ein paar weitere Fixes:
    - Tastatursteuerung (Enter zur Auswahl)
    - Fenster vergrößerbar, klebt trotzdem weiter sauber an SciTE (das ist klasse gemacht, Sprenger!)
    - Automatisches Reaktivieren von SciTE nach Funktionsauswahl
    - Kein Verschieben von SciTE mehr am Anfang, stilles Andocken
    - Kein mehrfacher Start (siehe Post von elchimforum), stattdessen aktiviert Strg+E beim zweiten Mal das Fenster zur Funktionsauwahl per Pfeiltasten

    Installationsanweisungen wie im ersten Post :).

    Spoiler anzeigen
    [autoit]

    #NoTrayIcon
    #AutoIt3Wrapper_Outfile=EasyFuncList.exe
    #AutoIt3Wrapper_Icon=EasyFuncList.ico
    #AutoIt3Wrapper_UseX64=n
    #include <Array.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <WinAPI.au3>
    #include <GUIListView.au3>
    #include <Crypt.au3>
    #include <GUIStatusBar.au3>
    #include <SendMessage.au3>
    ;by Sprenger120
    ;Icon by Blume
    Global $iWidth = 400, $iHeight = 600, $aOldToolPos[4], $aOldSciTEWinPos[4], $iRahmen, $aOldGUIWinPos[4], $bMoved = False, $aCheckSums[1][2]

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

    Switch $CMDLINE[0]
    Case 1
    ShellExecute(@ScriptFullPath, $CMDLINE[1] & " -nk")
    Exit
    Case 2
    Case Else
    MsgBox(16, "Easy Func List", "Bitte nur mit SciTe ausführen!")
    Exit
    EndSwitch

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

    $hSciTEWin = WinGetHandle("[REGEXPTITLE:[[:print:]]+\s[\-\*]\sSciTE]")
    If @error Then
    MsgBox(16, "UserDef Func List", "SciTE läuft nicht.")
    Exit
    EndIf

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

    ;thx 2 prog@andy
    $hWndDirector = HWnd($CMDLINE[1])
    ; Check whether we got a valid Director Window
    $WMU_GETSCITEDIRECTOR = _WinAPI_RegisterWindowMessage("SciTEDirectorInterface")
    If Not $hWndDirector Or $WMU_GETSCITEDIRECTOR <> _WinAPI_SendMessageTimeout($hWndDirector, $WMU_GETSCITEDIRECTOR) Then
    MsgBox(0, '', "No valid director interface given")
    Exit
    EndIf
    ; Find Scintilla window for direct access without DirectorInterface
    $iSciTe = WinGetProcess($hWndDirector)
    Opt("WinSearchChildren", 1)
    $aList = WinList("[CLASS:Scintilla; INSTANCE:1]")
    $hScintilla = 0
    For $i = 1 To $aList[0][0]
    If WinGetProcess($aList[$i][1]) = $iSciTe Then
    $hScintilla = $aList[$i][1]
    ExitLoop
    EndIf
    Next
    If $hScintilla = 0 Then
    MsgBox(16, "Easy Func List", "Konnte keine Verbindung zu Scintilla herstellen!")
    Exit
    EndIf

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

    _Crypt_Startup()

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

    Opt("WinTitleMatchMode", 3)
    If WinExists("[TITLE:Easy Func List]") Then
    WinActivate("Easy Func List")
    Exit
    EndIf

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

    ; Position gleich an SciTE ausrichten, sonst verschiebt sich SciTE dann gleich
    $aSciTEPos = WinGetPos($hSciTEWin)
    $hGUI = GUICreate("Easy Func List", $iWidth, $iHeight + 20, $aSciTEPos[0] - $iWidth + 0, $aSciTEPos[1], $WS_SIZEBOX, $WS_EX_TOOLWINDOW)
    $cListView = GUICtrlCreateListView("", 0, 0, $iWidth - 3, $iHeight - 1, $LVS_SINGLESEL, BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT))
    $hListView = GUICtrlGetHandle($cListView)
    $cPhraseProcess = GUICtrlCreateProgress(0, 0)
    _GUICtrlListView_AddColumn($hListView, "Name der Funktion", 150)
    _GUICtrlListView_AddColumn($hListView, "Parameter", 238)
    Dim $aParts[2] = [190, 260]
    $hStatusBar = _GUICtrlStatusBar_Create($hGUI, $aParts)
    _GUICtrlStatusBar_EmbedControl($hStatusBar, 1, GUICtrlGetHandle($cPhraseProcess))
    _GUICtrlStatusBar_SetText($hStatusBar, "Bereit.")
    GUIRegisterMsg($WM_MOVE, "WM_MOVE")
    GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
    GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")

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

    $btnJump = GUICtrlCreateDummy()
    Dim $AccelKeys[1][2] = [["{ENTER}", $btnJump]]
    GUISetAccelerators($AccelKeys)

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

    GUISetState(@SW_SHOW)

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

    AdlibRegister("Update", 1000)
    Update()
    While True
    Switch GUIGetMsg()
    Case $btnJump
    _jump()
    Case -3
    Exit
    EndSwitch

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

    $aSciTEPos = WinGetPos($hSciTEWin)
    $aToolPos = WinGetPos($hGUI)
    If @error Then Exit
    ;Wenn sich die Coordinaten/Größe verändert haben
    If ($aToolPos[2] <> $aOldToolPos[2]) Or ($aSciTEPos[0] <> $aOldSciTEWinPos[0]) Or ($aSciTEPos[1] <> $aOldSciTEWinPos[1]) Or ($aSciTEPos[3] <> $aOldSciTEWinPos[3]) Then
    WinMove($hGUI, "", $aSciTEPos[0] - $aToolPos[2] + 0, $aSciTEPos[1])
    $aOldSciTEWinPos = $aSciTEPos
    $aOldToolPos = $aToolPos
    $bMoved = True
    _GUICtrlStatusBar_Resize($hStatusBar) ;Damit die statusbar nicht verschwindet
    EndIf
    WEnd

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

    Func Update()
    Local Static $RegExp_FindFileNameInTitle = "((?:\\\\[^`~!@#\$%\^&\*\(\)=\+_\[\]\{\}\\\|;:'" & '",<>\/]+\\(?:\\?[^\\\/:\*\?<>\|]*\\)+|\w:\\(?:\\?[^\\\/:\*\?<>\|]+\\)*)[^\\\/:\*\?<>\|]+)\s(?:\-|\*)\sSciTE'
    Local $iInList = -1
    Local Static $LastFile = -1
    $sTitle = WinGetTitle($hSciTEWin)
    $sFile = StringRegExp($sTitle, $RegExp_FindFileNameInTitle, 3)
    If @error Then Return

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

    For $x = 0 To UBound($aCheckSums) - 1
    If $aCheckSums[$x][0] = $sFile[0] Then
    $iInList = $x
    ExitLoop
    EndIf
    Next

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

    $sHash = _Crypt_HashFile($sFile[0], $CALG_MD5)
    ;Wenn eine andere datei ausgwählt wurde | oder die datei noch nicht in der liste ist | oder die datei gleich geblieben ist aber der hash sich verändert hat
    If $sFile[0] <> $LastFile Or $iInList = -1 Or ($sFile[0] = $LastFile And $aCheckSums[$iInList][1] <> $sHash) Then
    ;Prüfen ob Datei bereits in Liste
    If $iInList = -1 Then
    ReDim $aCheckSums[UBound($aCheckSums) + 1][2]
    $aCheckSums[UBound($aCheckSums) - 1][0] = $sFile[0]
    $aCheckSums[UBound($aCheckSums) - 1][1] = $sHash
    Else
    $aCheckSums[$iInList][1] = $sHash
    EndIf
    Else
    Return
    EndIf

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

    _GUICtrlStatusBar_SetText($hStatusBar, "Datei hat sich verändert. Analysiere.", 0)

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

    $aData = FileRead($sFile[0])
    If Not @extended Then
    _GUICtrlStatusBar_SetText($hStatusBar, "Fehler beim Einlesen der Datei.", 0)
    Return
    EndIf

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

    $aData = StringSplit($aData, @CRLF, 1)
    If $aData[0] = 0 Then
    _GUICtrlStatusBar_SetText($hStatusBar, "Bereit.", 0)
    Return
    EndIf

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

    _GUICtrlListView_BeginUpdate($hListView)
    _GUICtrlListView_DeleteAllItems($hListView)

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

    For $x = 1 To $aData[0]
    GUICtrlSetData($cPhraseProcess, (($x + 1) * 100) / ($aData[0] + 1))
    $aRet = StringRegExp($aData[$x], "(?i)Func\s*(((?:\s*ByRef\s+)?[_\w][\w\d_]*)\s*\(.*\))", 3)
    If @error Then ContinueLoop
    If Mod(UBound($aRet), 2) Then ContinueLoop

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

    $iID = _GUICtrlListView_AddItem($hListView, $aRet[1])
    _GUICtrlListView_SetItemParam($hListView, $iID, $x)

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

    $aVars = StringRegExp($aRet[0], "(?i)((?:\s*ByRef\s+)?\$[_\w][\w\d_]*(?:\s*=[^\)]+)?)", 3)
    If @error Then
    _GUICtrlListView_AddSubItem($hListView, $iID, "-", 1)
    ContinueLoop
    EndIf

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

    _GUICtrlListView_AddSubItem($hListView, $iID, StringStripWS(_ArrayToString($aVars, ","), 4), 1)
    Next
    _GUICtrlListView_SetColumnWidth($hListView, 1, 238)
    _GUICtrlListView_EndUpdate($hListView)
    _GUICtrlStatusBar_SetText($hStatusBar, "Bereit.", 0)
    GUICtrlSetData($cPhraseProcess, 0)
    $LastFile = $sFile[0]
    EndFunc ;==>Update

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

    Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
    Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndListView
    $hWndListView = $hListView
    If Not IsHWnd($hListView) Then $hWndListView = GUICtrlGetHandle($hListView)

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

    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
    $iCode = DllStructGetData($tNMHDR, "Code")
    Switch $hWndFrom
    Case $hWndListView
    Switch $iCode
    Case -4
    MsgBox(0, "", 'ENTER' & @CRLF)
    EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_COMMAND

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

    Func WM_NOTIFY($hWndGUI, $MsgID, $wParam, $lParam)
    ;http://www.autoitscript.com/forum/topic/30…372#entry221372
    Local $tagNMHDR, $event
    $tagNMHDR = DllStructCreate("int;int;int", $lParam);hwnd, id, code
    If @error Then Return
    $event = DllStructGetData($tagNMHDR, 3)

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

    If DllStructGetData($tagNMHDR, 1) = $hListView And $event = $NM_DBLCLK Then
    _jump()
    EndIf ;==>WM_NOTIFY

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

    $tagNMHDR = 0
    $event = 0
    $lParam = 0
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_NOTIFY

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

    Func WM_MOVE($hWndGUI, $MsgID, $wParam, $lParam)
    If $bMoved Then
    $bMoved = False
    Return $GUI_RUNDEFMSG
    EndIf
    $aGUIPos = WinGetPos($hGUI)
    If ($aGUIPos[0] <> $aOldGUIWinPos[0]) Or ($aGUIPos[1] <> $aOldGUIWinPos[1]) Or ($aGUIPos[2] <> $aOldGUIWinPos[2]) Then
    WinMove($hSciTEWin, "", $aGUIPos[0] + $aGUIPos[2] - 0, $aGUIPos[1])
    $aOldGUIWinPos = $aGUIPos
    EndIf
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_MOVE

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

    Func Sci_SetCurrentLine($Sci, $Line)
    ;http://www.autoitscript.com/forum/topic/51547-scilexer-udf/
    Local $SCI_GOTOLINE = 2024
    _SendMessageA($Sci, $SCI_GOTOLINE, $Line - 1, 0, 0, "int", "int", "long")
    If @error Then
    Return 0
    Else
    Return 1
    EndIf
    EndFunc ;==>Sci_SetCurrentLine

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

    Func _jump()
    $aSelect = _GUICtrlListView_GetSelectedIndices($hListView, True)
    If $aSelect[0] <> 0 Then Sci_SetCurrentLine($hScintilla, _GUICtrlListView_GetItemParam($hListView, $aSelect[1]))
    WinActivate($hSciTEWin)
    EndFunc ;==>_jump

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

    Func _WinAPI_SendMessageTimeout($hWnd, $iMessage, $wParam = 0, $lParam = 0, $iTimeout = 1000, $iFlags = 0)
    ; Author: Yashied
    Local $Ret = DllCall('user32.dll', 'lresult', 'SendMessageTimeoutW', 'hwnd', $hWnd, 'uint', $iMessage, 'wparam', $wParam, 'lparam', $lParam, 'uint', $iFlags, 'uint', $iTimeout, 'dword_ptr*', 0)

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

    If (@error) Or (Not $Ret[0]) Then
    Return SetError(1, 0, -1)
    EndIf
    Return $Ret[7]
    EndFunc ;==>_WinAPI_SendMessageTimeout

    [/autoit]

    Happy Coding!
    Johannes

  • Abkürzungen in SciTE verwalten

    • peethebee
    • 26. März 2011 um 20:48

    Ah, wunderbar :).
    Hatte "Wiederherstellen" gesehen, aber intuitiv ein "Backup" vermisst ;).

    Johannes

  • Abkürzungen in SciTE verwalten

    • peethebee
    • 26. März 2011 um 20:03

    Hi BugFix,

    Super-Tool, wie man es von dir halt auch "erwartet" :).
    Funktioniert bei mir gut, neue Einträge sind sogar on-the-fly nutzbar in SciTE :thumbup: .
    Wie ist das aktuell jetzt geregelt mit Robustheit gegen SciTE-Updates?

    Johannes

  • [UDF] OpenDocumentFormat, ODT, OpenOffice, LibreOffice

    • peethebee
    • 26. März 2011 um 19:42

    Hi,

    Gut, dass es funktioniert :).

    Drucken eher so von der Parameterstruktur her, denke ich:

    [autoit]

    ShellExecute(@ScriptDir & "\testfile2.odt","", "", "print")

    [/autoit]

    Johannes

  • Probleme mit neuem Forum? Hierrein schreiben!

    • peethebee
    • 26. März 2011 um 18:12

    Außer der Online-Box habe ich kürzlich nichts eingespart. Evtl. hat aber Gun Updates gemacht!?

    Johannes

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™