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

  • ImageSearch

    • BugFix
    • 25. März 2008 um 09:45

    Guckst du hier: http://www.autoitscript.com/forum/index.php?showtopic=65748&view=findpost&p=488195

  • Arbeitsspeicherfragen

    • BugFix
    • 24. März 2008 um 13:29
    Zitat von Deepred

    Na das brauch ich für ein script :huh:


    Das du damit keinen Kuchen backen willst, war klar :P
    Welches Ziel verfolgst du mit dem Skript? Ohne das zu wissen, ist es schwer Hilfestellung zu geben.

  • array problem

    • BugFix
    • 24. März 2008 um 13:26
    Zitat von m4j0r

    oder geht das anders besser?

    Ja, ;)
    Hol dir die Inhalte z.B. mit _IEBodyReadText aus der IE.au3, nutze die Excel-UDF um die Daten mit Autoit direkt in das Tabellenblatt zu schreiben.

  • hilfe im forum

    • BugFix
    • 24. März 2008 um 11:09

    Hmm, dann habe ich Google versehentlich für etwaws seriöses gehalten, kommt nicht wieder vor :D

  • 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

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™