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

Beiträge von BugFix

  • hilfe im forum

    • BugFix
    • 24. März 2008 um 11:04
    Zitat

    <meta name="keywords" content= "hacken, hacker, ...


    :D Glaubst du ernsthaft, dass du mit solchen Meta-Tags die Google Robots locken kannst? Das Gegenteil wird eher der Fall sein ==> Black-List

  • 2 Gui´s

    • BugFix
    • 24. März 2008 um 10:55

    Das kann aber nicht am Skript liegen. Prozessorlast max. 8% hierbei.

  • Neuling hat einige Fragen

    • BugFix
    • 24. März 2008 um 10:40

    Hier mal ein Bsp. für Progressbar.
    Die Variable $vor dient hier nur als Krücke um in die Case-Auswahl zu gelangen.
    Beim Richtungswechsel wird mit ContinueCase ja ohne Wertprüfung in den folgende Case zur Abarbeitung gewechselt.

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    Global $vor = True

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

    GUICreate("My GUI Progressbar",220,100, 100,200)
    $progressbar = GUICtrlCreateProgress (10,40,200,20,$PBS_SMOOTH)
    $button = GUICtrlCreateButton ("Vorwärts",75,70,70,20)
    GUISetState ()

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

    $wait = 20; wait 20ms for next progressstep
    $s = 0 ; progressbar-saveposition
    Do
    $msg = GUIGetMsg()
    If $msg = $button Then
    Select
    Case $vor
    GUICtrlSetData($button, 'Rückwärts')
    For $i = $s To 100
    $m = GUIGetMsg()
    If $m = $button Then ContinueCase
    GUICtrlSetData($progressbar, $i)
    $s = $i
    Sleep($wait)
    Next
    Case Not $vor
    GUICtrlSetData($button, 'Stop')
    For $i = $s To 0 Step -1
    $m = GUIGetMsg()
    If $m = $button Then ExitLoop
    GUICtrlSetData($progressbar, $i)
    $s = $i
    Sleep($wait)
    Next
    EndSelect
    GUICtrlSetData($button, 'Vorwärts')
    EndIf
    Until $msg = $GUI_EVENT_CLOSE

    [/autoit]
  • AutoCloseBrackets.lua für SciTE

    • BugFix
    • 24. März 2008 um 10:01
    Zitat von maycontainnuts

    2. muss man dafür etwas markieren

    Was hast du für eine seltsame Installation? Markieren mußt du nichts, nur innerhalb der zu kommentierenden Zeile einfach STR+Q. Und obwohl es zwei Tasten sind, ist dieses ein Handgriff, da genialerweise der Abstand Daumen Zeigefinger linke Hand in etwa dem Abstand zwischen STRG und Q entspricht. :D

  • AutoCloseBrackets.lua für SciTE

    • BugFix
    • 24. März 2008 um 00:29

    @maycontainnuts: Oder STRG+Q :D

  • AutoCloseBrackets.lua für SciTE

    • BugFix
    • 23. März 2008 um 20:56

    :thumbup::thumbup: - dem ist nichts hinzuzufügen ;)

  • IntelliSenseBox

    • BugFix
    • 23. März 2008 um 20:12

    Danke progandy :)

    Für die Übernahme per Mausklick fehlt nur noch ein kleines bischen :P

    [autoit]

    ElseIf $hCtrl = $box And $nNotifyCode = 1 Then
    $index = _GUICtrlListBox_GetCurSel($box)
    GUICtrlSetData($Input, _GUICtrlListBox_GetText($box, $index))
    GUISetState(@SW_HIDE, $guiBox)
    $show = False

    [/autoit]
  • 2 Gui´s

    • BugFix
    • 23. März 2008 um 19:46

    Du kannst statt Switch auch Select verwenden.
    Da du aber nur eine Variable auswertest ist Switch zu empfehlen, da schneller.
    Bei Select wäre es in etwa so:

    [autoit]

    Select
    Case $msg[1] = $gui1
    Select
    Case $msg[0] = $GUI_EVENT_CLOSE
    Exit
    ; usw.

    [/autoit]
  • Den Cursor in einer Editbox setzen?

    • BugFix
    • 23. März 2008 um 19:41

    Da du also das Edit-Ctrl selbst erstellst, nutze die Edit-UDF.
    Du kannst eine Auswahl setzen mit _GUICtrlEdit_SetSel($hWnd, $iStart, $iEnd).
    Wenn $iStart und $iEnd denselben Wert haben, wird nicht markiert, sondern nur der Cursor gesetzt - das, was du willst.
    Dazu brauchst du also die Anzahl der geschriebenen Zeichen - aber das solltest du hinbekommen.

  • 2 Gui´s

    • BugFix
    • 23. März 2008 um 19:32

    Mit GUIGetMsg mußt du Advanced-Mode verwenden:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

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

    $gui1 = GUICreate('GUI 1')
    $btn = GUICtrlCreateButton('Zeige GUI 2', 10, 20, 100, 20)

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

    $gui2 = GUICreate('GUI 2')

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

    GUISetState(@SW_SHOW, $gui1)

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

    While True
    $msg = GUIGetMsg(1)
    Switch $msg[1] ; Window Handle
    Case $gui1
    Switch $msg[0] ; Event
    Case $GUI_EVENT_CLOSE
    Exit
    Case $btn
    GUISetState(@SW_SHOW, $gui2)
    EndSwitch
    Case $gui2
    Switch $msg[0] ; Event
    Case $GUI_EVENT_CLOSE
    GUISetState(@SW_HIDE, $gui2)
    EndSwitch
    EndSwitch
    WEnd

    [/autoit]
  • Array in input schreiben

    • BugFix
    • 23. März 2008 um 19:23
    Zitat von Xenobiologist

    hilft nicht evtl. _ArrayToString?

    Ja, aber dann braucht man ein Include ;)

  • 2 Gui´s

    • BugFix
    • 23. März 2008 um 19:17

    Du kannst das natürlich auch mit GUIGetMsg verwenden und dann die Msg abfragen.
    Das umzustellen sollte aber kein Problem darstellen. Probier mal, wenns nicht klappt, melde dich wieder.

  • Array in input schreiben

    • BugFix
    • 23. März 2008 um 13:08

    Eine Schleife tuts:

    [autoit]

    $str = ''
    For $i = 0 To Ubound($Array)-1
    $str &= $Array[$i]
    Next
    GUICtrlSetData($input, $str)

    [/autoit]
  • 2 Gui´s

    • BugFix
    • 23. März 2008 um 10:12
    Zitat

    Beide GUIs am besten am Anfang anlegen und dann mit GUISetState anzeigen


    Wie Pee schon richtig sagte, du erzeugst die GUI aber erst im Programm.

    Besser so:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    Opt("GUIOnEventMode", 1)

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

    $gui1 = GUICreate('GUI 1')
    GUISetOnEvent($GUI_EVENT_CLOSE, 'GUI1_close')
    $btn = GUICtrlCreateButton('Zeige GUI 2', 10, 20, 100, 20)
    GUICtrlSetOnEvent(-1, 'ClickButton')

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

    $gui2 = GUICreate('GUI 2')
    GUISetOnEvent($GUI_EVENT_CLOSE, 'GUI2_close')

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

    GUISetState(@SW_SHOW, $gui1)

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

    While True
    Sleep(100)
    WEnd

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

    Func GUI1_close()
    Exit
    EndFunc

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

    Func GUI2_close()
    GUISetState(@SW_HIDE, $gui2)
    EndFunc

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

    Func ClickButton()
    GUISetState(@SW_SHOW, $gui2)
    EndFunc

    [/autoit]
  • IntelliSenseBox

    • BugFix
    • 23. März 2008 um 09:38
    Zitat von autoirrer

    Es fehlt noch ein #include <File.au3> im DownloadScript. Zumindest funktioniert es bei mir sonst nicht.

    :rolleyes: Da hast du recht, hatte ich irgendwie versiebt.

  • IntelliSenseBox

    • BugFix
    • 23. März 2008 um 03:13

    Als StandardControl haben wir ja mit der ComboBox die Möglichkeit eine eingabesensitive Auswahl zu ermöglichen.
    Ich habe hier mal ein Beispiel erstellt, wie man diese Funktionalität auch für z.B. Input-Ctrl erreichen kann.
    Gründe dafür:
    - ich finde es optisch nicht sehr ansprechend, wenn die Schaltfläche der ComboBox die GUI 'verschandelt'
    - ich habe hiermit die Möglichkeit eigene Auswahllisten auch für Fremdanwendungen (so sie denn Standard Windows Controls verwenden) zu nutzen


    Funktionsweise:
    Wird in das Inputfeld ein Buchstabe eingegeben, der auch als Anfangsbuchstabe in der Liste hinterlegt ist, popt das Auswahlfenster auf.
    Der Focus bleibt aber beim Inputfeld.
    Ist in der Liste kein Eintrag mit diesem Buchstaben, wird sie auch nicht eingeblendet.
    Es wird mit jedem weiteren Buchstaben auf Übereinstimmung geprüft und entsprechend der erste Eintrag markiert, auf den die bisherige Eingabe zutrifft.
    Mit PFEIL AUF / PFEIL AB kann in der Liste die Auswahl verschoben werden.
    Mit ENTER wird der momentan markierte Eintrag aus der Liste in das Input übernommen.
    Mit ESC kann die Liste ohne Übernahme gechlossen werden.

    Edit 08.03.09:
    Habe das Skript nochmal etwas bearbeitet. Alle bisher im Thread besprochenen Änderungen/Ergänzungen sind enthalten.
    Es ist jetzt allgemein gehalten, sodass es für Input- und ComboBox-Ctrl gleichermaßen verwendet werden kann. Es brauchen auch keine Anpassungen in den Funktionen für die Control-ID's erfolgen.
    Es muß zur Anwendung nur noch folgendes getan werden:
    - Einmalig bei der Erstellung eine Zuweisung auf den allgemeinen Namen ($SenseGui u. $SenseCtrl)
    - Befüllen des DatenArray mit den Auswahldaten
    Edit zum Edit: $nNotifyCode für ComboBox fehlte noch :S - jetzt komplett

    Spoiler anzeigen
    [autoit]

    #include<GUIConstantsEx.au3>
    #include<ListBoxConstants.au3>
    #include <WindowsConstants.au3>
    #include <GUIListBox.au3>
    #Include <WinAPI.au3>
    #include <Misc.au3>
    Opt("GUICloseOnESC", 0)

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

    #region - Deklarationen für Sense
    Global $show = False
    Global $indexB = -1
    Global $SenseGui, $SenseCtrl, $guiBox, $box
    Global $POSSenseGui[2]
    #Region Box
    ; Hier die Auswahldaten (braucht nicht sortiert sein):
    Global $aData[10] = ['Birne','Alligator','Auto','Dank','Automat','Bett','Garten','Bettler','Danke','Danksagung']
    $guiBox = GUICreate('', 150, 85, 0, 0, BitOR($WS_SIZEBOX,$WS_POPUP), $WS_EX_TOPMOST)
    $box = _GUICtrlListBox_Create($guiBox, '', 0, 0, 150, 86, BitOR($LBS_SORT, 0x00B00002))
    ; ListBox muß 1 Pixel höher als GUI sein - sonst fehlerhafte Darstellung
    For $i = 0 To UBound($aData) -1 ; falls Daten mit _FileReadToArray gelesen werden: StartIndex=1
    _GUICtrlListBox_AddString($box, $aData[$i])
    Next
    #EndRegion Box
    GUIRegisterMsg($WM_COMMAND, "MY_WM_COMMAND")
    GUIRegisterMsg($WM_MOVE, "_WM_MOVE")
    GUIRegisterMsg(0x231, "_WM_ENTERSIZEMOVE")
    #EndRegion - Deklarationen Sense

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

    #Region Main
    $Form1 = GUICreate('Intelli Sense Box', 400, 300, 200, 50)
    $SenseGui = $Form1 ; <== Für Allgemeingültigkeit Zuweisung an $SenseGui
    $Input = GUICtrlCreateInput('', 10, 10, 380, 21)
    $SenseCtrl = $Input ; <== Für Allgemeingültigkeit Zuweisung an $SenseCtrl
    $hInput = GUICtrlGetHandle($Input)
    GUISetState()
    #EndRegion Main

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

    While True
    _ChooseBox()
    If GUIGetMsg() = $GUI_EVENT_CLOSE Then Exit
    WEnd

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

    #region - SenseFuncs
    Func _ChooseBox()
    If Not $show Then Return
    If _IsPressed('0D') Then ; ENTER
    ControlSetText($SenseGui, '', $SenseCtrl, _GUICtrlListBox_GetText($box, $indexB))
    GUISetState(@SW_HIDE, $guiBox)
    $show = False
    ElseIf _IsPressed('1B') Then ; ESC
    GUISetState(@SW_HIDE, $guiBox)
    $show = False
    ElseIf _IsPressed('26') Then ; UP
    If $indexB > 0 Then
    $indexB -= 1
    _GUICtrlListBox_SetCurSel($box, $indexB)
    Sleep(90)
    EndIf
    ElseIf _IsPressed('28') Then ; DOWN
    If $indexB < _GUICtrlListBox_GetCount($box)-1 Then
    $indexB += 1
    _GUICtrlListBox_SetCurSel($box, $indexB)
    Sleep(90)
    EndIf
    EndIf
    EndFunc

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

    Func MY_WM_COMMAND($hWnd, $Msg, $wParam, $lParam)
    Local $nNotifyCode = BitShift($wParam, 16)
    Local $hCtrl = $lParam
    Local $hSenseCtrl = $SenseCtrl
    If Not IsHWnd($hSenseCtrl) Then $hSenseCtrl = GUICtrlGetHandle($hSenseCtrl)
    If ($nNotifyCode = 1024 Or $nNotifyCode = 6) And $hCtrl = $hSenseCtrl Then
    Local $str = ControlGetText($SenseGui, '', $SenseCtrl)
    $indexB = _GUICtrlListBox_FindString($box, $str)
    _GUICtrlListBox_SetCurSel($box, $indexB)
    $caret = _CaretPos()
    If Not @error And Not $show Then
    If $caret[3] + $caret[4] - 95 < 0 Then ; Platz für Liste über dem Ctrl ausreichend?
    WinMove($guiBox, '', $caret[0], $caret[1] +25) ; Versatz 25 (Ctrlhöhe+5) unter y vom Ctrl
    Else
    WinMove($guiBox, '', $caret[0], $caret[1] -95) ; Versatz 95 (Boxhöhe+10) über y vom Ctrl
    EndIf
    GUISetState(@SW_SHOWNOACTIVATE, $guiBox)
    $show = True
    EndIf
    ElseIf $hCtrl = $box And $nNotifyCode = 1 Then
    $indexB = _GUICtrlListBox_GetCurSel($box)
    ControlSetText($SenseGui, '', $SenseCtrl, _GUICtrlListBox_GetText($box, $indexB))
    GUISetState(@SW_HIDE, $guiBox)
    $show = False
    ElseIf $show And $nNotifyCode = 512 And $hCtrl = $lParam And Not $hCtrl = $box Then
    GUISetState(@SW_HIDE,$guiBox)
    $show = False
    EndIf
    Return $GUI_RUNDEFMSG
    EndFunc

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

    Func _WM_ENTERSIZEMOVE($hWnd)
    If $hWnd = $SenseGui Then $POSSenseGui = WinGetPos($SenseGui)
    EndFunc

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

    Func _WM_MOVE($hWnd)
    If $hWnd = $SenseGui Then
    Local $pos = WinGetPos($guiBox)
    Local $postemp = WinGetPos($SenseGui)
    WinMove($guiBox,"",$pos[0]-($POSSenseGui[0]-$postemp[0]),$pos[1]-($POSSenseGui[1]-$postemp[1]))
    $POSSenseGui = WinGetPos($SenseGui)
    EndIf
    EndFunc

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

    Func _CaretPos()
    Local $old = Opt("CaretCoordMode", 0) ;relative mode
    Local $c = WinGetCaretPos() ;relative caret coords
    Local $w = WinGetPos("") ;window's coords
    Local $f = ControlGetFocus("","") ;text region "handle"
    Local $e = ControlGetPos("", "", $f) ;text region coords
    Local $h = ControlGetHandle("", "", $f) ;Ctrl-Handle
    Local $t[5]
    If IsArray($c) and IsArray($w) and IsArray($e) Then
    If _WinAPI_IsClassName($SenseCtrl, 'Edit') Then ; Input wird als Edit-Class erkannt
    $t[0] = $c[0] + $w[0] + $e[0]
    ElseIf _WinAPI_IsClassName($SenseCtrl, 'ComboBox') Then
    $t[0] = $w[0] + $e[0]
    EndIf
    $t[1] = $c[1] + $w[1] + $e[1]
    $t[2] = $h
    $t[3] = $w[1]
    $t[4] = $e[1]
    Opt("CaretCoordMode", $old)
    Return $t ;absolute screen coords of caret cursor
    Else
    Opt("CaretCoordMode", $old)
    SetError(1)
    EndIf
    EndFunc
    #endregion - SenseFuncs

    [/autoit]

    DL bisher: 70

  • 2 Explorer horizontal/vertikal

    • BugFix
    • 22. März 2008 um 15:07

    Hi,
    um Dateien hin- und herzuschieben ist es oft notwendig 2 Explorerinstanzen zu öffnen.
    Da ich ungern die Fenster dann in der Größe anpasse und verschiebe, hab ich ein Skript geschrieben, das das erledigt.
    Ich rufe hier den Arbeitsplatz auf, das kann man natürlich anpassen und z.B. Eigene Dateien verwenden. Die CLSID dazu findet ihr in der Hilfe.
    Wird das Skript mit Parameter "/h" aufgerufen, werden die Fenster nebeneinander angeordnet auf voller Bildschirmgröße.
    Ohne Parameter (bzw. bei jedem anderen) werden die Fenster untereinander angeordnet.

    Spoiler anzeigen
    [autoit]

    Global $appHorizontal = False ; wenn True, horizontale Anordnung
    Global $aSize[3][5] ; [0]=Handle, [1]=Breite, [2]=Höhe, [3]=x, [4]=y
    $aSize[0][1] = @DesktopWidth
    $aSize[0][2] = @DesktopHeight
    If $CmdLine[0] > 0 Then
    If $CmdLine[1] = '/h' Then $appHorizontal = True
    EndIf
    If $appHorizontal Then
    $aSize[1][1] = @DesktopWidth/2
    $aSize[2][1] = @DesktopWidth/2
    $aSize[1][2] = @DesktopHeight
    $aSize[2][2] = @DesktopHeight
    $aSize[1][3] = 0
    $aSize[2][3] = @DesktopWidth/2
    $aSize[1][4] = 0
    $aSize[2][4] = 0
    Else
    $aSize[1][1] = @DesktopWidth
    $aSize[2][1] = @DesktopWidth
    $aSize[1][2] = @DesktopHeight/2
    $aSize[2][2] = @DesktopHeight/2
    $aSize[1][3] = 0
    $aSize[2][3] = 0
    $aSize[1][4] = 0
    $aSize[2][4] = @DesktopHeight/2
    EndIf
    Run ('Explorer.exe /n, ::{20D04FE0-3AEA-1069-A2D8-08002B30309D}', '', @SW_HIDE)
    WinWaitActive('Arbeitsplatz')
    $aSize[1][0] = WinGetHandle('Arbeitsplatz')
    WinMove($aSize[1][0], '', $aSize[1][3], $aSize[1][4], $aSize[1][1], $aSize[1][2])
    WinSetTitle('Arbeitsplatz', '', 'Arbeitsplatz_1')
    Run ('Explorer.exe /n, ::{20D04FE0-3AEA-1069-A2D8-08002B30309D}', '', @SW_HIDE)
    WinWaitActive('Arbeitsplatz')
    $aSize[2][0] = WinGetHandle('Arbeitsplatz')
    WinMove($aSize[2][0], '', $aSize[2][3], $aSize[2][4], $aSize[2][1], $aSize[2][2])
    WinSetTitle('Arbeitsplatz', '', 'Arbeitsplatz_2')
    WinSetState($aSize[1][0], '', @SW_SHOW)
    WinSetState($aSize[2][0], '', @SW_SHOW)

    [/autoit]

    Dateien

    2Explorer.au3 1,43 kB – 293 Downloads
  • MemoryRead

    • BugFix
    • 22. März 2008 um 08:44
    Zitat

    Aber könntest du den unwissenden mal erklären was man mit sowas machen kann?


    Ich bin mal so frei und antworte dadrauf :)
    Da als Bsp. calc.exe angeführt war, verwende ich das gleich mal.
    Möchtest du den Calculator benutzen ohne die Werte mit Send oder ControlCommand an das Programm zu übergeben, kannst du direkt in die verwendeten Speicherregister schreiben bzw. auch von dort lesen.
    Du kannst auch auf diese Art Daten aus anderen Programmen auslesen. Wenn z.B. ein Festplattentool in einem bestimmten Register die Festplattentemperatur ablegt, kannst du somit dadrauf zugreifen.

  • Problem mit Controlclick

    • BugFix
    • 21. März 2008 um 23:19

    Probier das mal:

    [autoit]

    ControlClick("Xfire Installation", "", "[CLASS:Button; INSTANCE:4]")

    [/autoit]
  • Problem mit Controlclick

    • BugFix
    • 21. März 2008 um 22:58

    Du mußt mit der Maus über dem Kontrollkästchen sein und dann die Infos auslesen.
    Kontrollkästchen sind Klasse: Button, hier vermutlich Button1.
    Dann funzt es auch mit ControlClick.

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™