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

  • ListView - SubItem einzeln färben/formatieren, Finale Version! (v1.3)

    • BugFix
    • 23. Juli 2011 um 23:12
    Zitat von chip

    dass wenn man einen Button drückt sich die Farbe des entsprechenden Listview eintrages erst dann ändert, wenn man im Anschluss nochmal den Eintrag im Listview anklickt.


    Du bist wahrscheinlich der erste, der keine Änderung der Hintergrundfarbe vornimmt. :D Hatte ich niemals bewußt allein geprüft, da das Färben des Hintergrundes im Vordergrund der UDF stand.
    Stimmt, die Überprüfung, ob das Subitem neu gezeichnet werden muß berücksichtigte nicht, dass evtl. nur die Vordergrundfarbe geändert wird. Hab das jetzt angepaßt.
    Tausche mal in der LV_Format_include.au3 die folgende Funktion aus, dann paßt es:

    _GUICtrlListView_FormattingCell
    [autoit]

    Func _GUICtrlListView_FormattingCell($hWnd, $iItem, $iSubItem, $iBkCol=-1, $iCol=-1, $iSize=-1, $iWeight=-1, $sFont=-1)
    Local $sumParam = 0
    Local $iParam = _GUICtrlListView_GetItemParam($hWnd, $iItem)
    Local $index = $oParamSearch.Item($iParam)
    If $iBkCol = -1 Then
    $iBkCol = $defBkColLV
    $sumParam += 1
    EndIf
    If $iCol = -1 Then
    $iCol = $defColLV
    $sumParam += 1
    EndIf
    If $iSize = -1 Then
    $iSize = $defSize
    $sumParam += 1
    EndIf
    If $iWeight = -1 Then
    $iWeight = $defWeight
    $sumParam += 1
    EndIf
    If $sFont = -1 Then
    $sFont = $defFont
    $sumParam += 1
    EndIf
    $aIParam[$index][$iSubItem+1][0] = $iBkCol
    $aIParam[$index][$iSubItem+1][1] = $iCol
    $aIParam[$index][$iSubItem+1][2] = $iSize
    $aIParam[$index][$iSubItem+1][3] = $iWeight
    $aIParam[$index][$iSubItem+1][4] = $sFont
    ; if SubItem not registered in IParam OR all values by -1 (delete Sub from IParam) ==> switch Sub value in IParam
    Local $mark = DllStructGetData($aIParam[$index][0][0], 2, $iSubItem+1)
    If Not $mark Or $sumParam = 5 Then
    DllStructSetData($aIParam[$index][0][0], 2, BitXOR($mark, 1), $iSubItem+1)
    EndIf
    ;~ If DllStructGetData($aIParam[$index][0][0], 2, $iSubItem+1) <> $mark Then
    If DllStructGetData($aIParam[$index][0][0], 2, $iSubItem+1) <> $mark Or $sumParam <> 5 Then
    _GUICtrlListView_RedrawItems($hWnd, $iItem, $iItem)
    EndIf
    EndFunc ;==>_GUICtrlListView_FormattingCell

    [/autoit]
  • Variable ausgeben die sich ändert

    • BugFix
    • 23. Juli 2011 um 12:52
    Zitat von patiii

    also erst wenn man auf den button drückt soll man die zwischenschritte sehen


    Und was hindert dich, den Schritt unterhalb des Case einzufügen? :wacko:

  • Variable ausgeben die sich ändert

    • BugFix
    • 23. Juli 2011 um 10:38
    Zitat von patiii

    ich habe z.b. 1 + 1 = $a


    Das geht schon mal gar nicht ;) - wenn dann so: $a = 1 +1
    Ausgeben kannst du doch per MsgBox - oder um es anschaulicher zu machen und Klickerei zu sparen, in ein Edit ausgeben. Rechenschritt ins Edit schreiben, nächste Zeile das Ergebnis, kurzes Sleep() und nächster Schritt usw.

    Edit:
    Hier mal ein Muster

    [autoit]

    #include <GuiEdit.au3>
    Local $a = 10, $b = 20

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

    GUICreate('Test')
    $hEdit = GUICtrlCreateEdit('', 10, 10, 200, 200)
    GUISetState()

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

    Sleep(500)
    _Operate($a, $b, '+')
    Sleep(500)
    _Operate($a, $b, '-')
    Sleep(500)
    _Operate($a, $b, '*')
    Sleep(500)
    _Operate($a, $b, '/')

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

    Do
    Until GUIGetMsg() = -3

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

    Func _Operate($a, $b, $action)
    _GUICtrlEdit_AppendText($hEdit, $a & ' ' & $action & ' ' & $b & @CRLF)
    _GUICtrlEdit_AppendText($hEdit, @TAB & '=' & Execute($a & $action & $b) & @CRLF)
    EndFunc

    [/autoit]
  • 2 Hexwerte überprüfen, dann Aktion

    • BugFix
    • 22. Juli 2011 um 18:19

    Hexwerte werden in Autoit so dargestellt: 0xABCDEF

    [autoit]

    AND NOT > $max_Wert1 Then

    [/autoit]

    geht nicht, es fehlt die Vergleichsbedingung

    [autoit]

    $a_Regex_mit_2_Hexwerten[0] <= $max_Wert1

    [/autoit]
  • Auto IT Supporttool

    • BugFix
    • 22. Juli 2011 um 18:04
    Zitat von campweb

    OT: AutoIt


    Da hättest du mal besser den Startpost gründlich gelesen, es geht um ein Auto - IT - Support - Tool (automatisches IT Support Tool), nicht um ein AutoIt-Support-Tool. ;)

  • stringInStr Problem

    • BugFix
    • 21. Juli 2011 um 20:04

    Laß dir den gelesenen Text in die Konsole ausgeben, vergleiche mit deinem Suchbegriff, ob dieser überhaupt in der Form enthalten ist (da Case Sense geprüft wird, ist natürlich der exakte Begriff und Schreibweise erforderlich).


    Edit:
    @campweb: Was soll diese Bot-Vermuterei? Ich sehe bisher nichts, was gegen unsere Forenregeln verstößt! Also bitte nicht hinter jedem Skript einen Bot vermuten. ;)

  • stringInStr Problem

    • BugFix
    • 21. Juli 2011 um 19:50

    Ich habe dir doch gesagt du mußt Casesens auf 1 setzen ;)
    So gehts:

    [autoit]

    $Read = 'Hallo liebe Gemeinde und ein besonderes Willkommen, USER_X aus Klein-Siehste-mich-nicht.'
    $IdL = 'USER_X'
    IF StringInStr($Read, "Willkommen, " & $IdL, 1) Then MsgBox(0, '', $IdL & ' - im Text enthalten')

    [/autoit]
  • Dynamisches Label

    • BugFix
    • 21. Juli 2011 um 16:57

    Verwende doch die Meßfunktion aus meinem TextMeter. Etwas anpassen, dann kannst du das dazu verwenden.

  • regex

    • BugFix
    • 20. Juli 2011 um 17:48

    Das leidige Problem mit der schwachbrüstigen RegEx-Engine in AutoIt :wacko:
    Im RegexBuddy funzt es tadellos.

  • regex

    • BugFix
    • 20. Juli 2011 um 13:06

    OK, mit dem folgenden Pattern und Flag 3 bekommst du im Array nur "keywords" aus dem Quelltext.
    Voraussetzung, dass das mit anderem Source auch klappt ist, was zwischen "type=hidden" und "name=" steht.
    Nach dem vorgegeben Source folgt "name" direkt auf "type=hidden" oder es steht "value="" " dazwischen (In den Zeilen, die "name=" enthalten aber nicht ins Ergebnis sollen). Sollte das in anderer Source nicht so sein, muß dort mit Oder-Verknüpfungen im Optionalzweig [ (?:value="" )? ] angepaßt werden.
    Hier das Pattern: (?<!type="hidden" (?:value="" )?)(?:name=")([^"]+)

  • regex

    • BugFix
    • 20. Juli 2011 um 12:33

    Also mal als Kurzfassung:
    Wenn eine Zeile mit "<input" beginnt UND das Feld "name=" enthalten ist, dann möchtest du den Begriff hinter "name=" als Ergebnis haben. Ist das korrekt?

    Edit:
    Ich sehe gerade, das würde ja auch auf "userUsedAutocompletion" und "categoryId" zutreffen.
    Mal sehen, ob das mit einem Aufruf geht.

  • Script mit mehreren Mäusen bedienen

    • BugFix
    • 20. Juli 2011 um 12:24
    Zitat von eukalyptus

    Die Lösung ist nicht ganz zufriedenstellend, aber für meine Zwecke reicht es fürs erste...

    Habs nochmal angeschaut, gibt wohl keinen anderen Weg als
    - Mouse Events auffangen und blocken
    - Input Device abfragen
    - gewollte Events senden

    Es ist recht aufwändig - aber weshalb nicht zufriedenstellend?

  • Script mit mehreren Mäusen bedienen

    • BugFix
    • 20. Juli 2011 um 12:11

    Habs gerade bemerkt, dass es um die Selektion geht. ;) Der Code war zu lang :D
    Ich muß mal mit mehrerer Mäusen testen, aber vermutlich gehts wohl nicht.

  • Script mit mehreren Mäusen bedienen

    • BugFix
    • 20. Juli 2011 um 12:04
    Zitat von eukalyptus

    Da gibt es jedoch ein großes Problem: $WM_MOUSE_LL-Hook wird VOR RawInput aufgerufen und ich hab keine Chance auf diesem Weg!


    Dann verwende RawInput nicht und hol dir die Infos, die du damit erhalten willst aus dem Hook.
    Wenn ich richtig geschaut habe, sollte der Hook doch alle relevanten Infos liefern:

    Spoiler anzeigen
    [autoit]

    #include <WinAPI.au3>
    #include <WindowsConstants.au3>
    OnAutoItExitRegister('OnAutoItExit')
    HotKeySet('{ESC}', '_Exit')

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

    Global Const $HC_ACTION = 0
    Global $hStub_MouseProc = DllCallbackRegister("_MouseProc", "long", "int;wparam;lparam")
    Global $hmod = _WinAPI_GetModuleHandle(0)
    Global $hHook = _WinAPI_SetWindowsHookEx($WH_MOUSE_LL, DllCallbackGetPtr($hStub_MouseProc), $hmod)

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

    While True
    Sleep(50)
    WEnd

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

    Func _MouseProc($nCode, $wParam, $lParam)
    Local $event, $info, $iX, $iY, $mouseData = "", $wheelData = "", $wheelCount
    $info = DllStructCreate("int X;int Y;dword mouseData;dword flags;dword time;ulong_ptr dwExtraInfo", $lParam)
    $iX = DllStructGetData($info, 1)
    $iY = DllStructGetData($info, 2)
    $mouseData = DllStructGetData($info, 3)
    If $nCode < 0 Then Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam)
    If $nCode = $HC_ACTION Then
    Switch $wParam
    Case $WM_MOUSEMOVE
    $event = "Mouse Move"
    Case $WM_MOUSEWHEEL
    $event = "Mouse Wheel"
    If _WinAPI_HiWord($mouseData) > 0 Then
    $wheelData = " Forward"
    Else
    $wheelData = " Backward"
    EndIf
    $wheelCount = _WinAPI_HiWord($mouseData)/120
    Case $WM_LBUTTONDOWN
    $event = "Left Down"
    Case $WM_LBUTTONUP
    $event = "Left Up"
    Case $WM_RBUTTONDOWN
    $event = "Right Down"
    Case $WM_RBUTTONUP
    $event = "Right Up"
    Case $WM_MBUTTONDOWN
    $event = "Wheel Down"
    Case $WM_MBUTTONUP
    $event = "Wheel Up"
    EndSwitch
    EndIf
    ConsoleWrite($iX & ', ' & $iY & ' ' & $event & $wheelData & ' count: ' & $wheelCount & @CRLF)
    Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam)
    EndFunc

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

    Func _Exit()
    Exit
    EndFunc

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

    Func OnAutoItExit()
    _WinAPI_UnhookWindowsHookEx($hHook)
    DllCallbackFree($hStub_MouseProc)
    EndFunc ;==>OnAutoItExit

    [/autoit]
  • Das Verhältnis verhält sich verhältnismäßig nicht so wie es soll

    • BugFix
    • 20. Juli 2011 um 11:56

    Dein Ergebnis der neuen Größe hat mit Sicherheit Nachkommastellen, die dann gerundet werden. Somit verändert sich dein Control von mal zu mal mehr.
    Das kannst du nur verhindern, indem du die neue Größe nicht berechnest, sondern festlegst in einer Tabelle in der Form:

    Code
    WheelEvents  Ctrl-Größenänderung (Breite, Höhe)
        1                +1, +3
        2                +2, +4
        3                +3, +6
       ...
       -1                -1, -3
       -2                -2, -4
       -3                -3, -6
  • regex

    • BugFix
    • 20. Juli 2011 um 11:47
    Zitat von BugFix

    den Musterquellcode und färbe die Elemente ein, die du als Ergebnis willst


    Ist denn das sooo schwer??? Jetzt hast du wieder mit Worten beschrieben, was du dir vorstellst - und damit kann ich leider nicht viel anfangen.
    Dein Bild mußt du erst noch erklären, blau, gelb.. :D

  • Prüfen auf Rechtsklick mit _isPressed

    • BugFix
    • 20. Juli 2011 um 11:00

    Ich nutze die MouseOnEvent.au3 nicht, letzlich macht diese aber nichts anderes, als ich im folgenden Skript - nämlich das Wheel-Event auswerten.
    Im Bsp. siehst du, wie nur bei gedrückter rechter Maustaste eine Zählervariable mit dem Mausrad hoch- oder runtergezählt wird, je nach Richtung (vorwärts "+", rückwärts "-").

    Spoiler anzeigen
    [autoit]

    #include <WinAPI.au3>
    #include <WindowsConstants.au3>
    #include <GUIConstantsEx.au3>
    OnAutoItExitRegister('OnAutoItExit')

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

    Global Const $HC_ACTION = 0
    Global $hStub_MouseProc = DllCallbackRegister("_MouseProc", "long", "int;wparam;lparam")
    Global $hmod = _WinAPI_GetModuleHandle(0)
    Global $hHook = _WinAPI_SetWindowsHookEx($WH_MOUSE_LL, DllCallbackGetPtr($hStub_MouseProc), $hmod)

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

    Global $SecMousState = False
    Global $WheelCount

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

    $gui = GUICreate('Test')
    GUISetState()

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

    While True
    Switch GUIGetMsg()
    Case -3
    Exit
    Case $GUI_EVENT_SECONDARYDOWN
    If Not $SecMousState Then
    $SecMousState = True
    $WheelCount = 0
    EndIf
    Case $GUI_EVENT_SECONDARYUP
    If $SecMousState Then $SecMousState = False
    EndSwitch
    WEnd

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

    Func _Wheel($iCount)
    $WheelCount += $iCount
    ConsoleWrite($WheelCount & @CRLF) ; hier kannst du dein Skript ausführen
    EndFunc

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

    Func _MouseProc($nCode, $wParam, $lParam)
    Local $event, $info, $iX, $iY, $mouseData = "", $wheelData = "", $iWheelCount
    $info = DllStructCreate("int X;int Y;dword mouseData;dword flags;dword time;ulong_ptr dwExtraInfo", $lParam)
    $iX = DllStructGetData($info, 1)
    $iY = DllStructGetData($info, 2)
    $mouseData = DllStructGetData($info, 3)
    If $nCode < 0 Then Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam)
    If $nCode = $HC_ACTION Then
    Switch $wParam
    Case $WM_MOUSEWHEEL
    $iWheelCount = _WinAPI_HiWord($mouseData)/120
    If $SecMousState Then _Wheel($iWheelCount)
    EndSwitch
    EndIf
    Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam)
    EndFunc

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

    Func OnAutoItExit()
    _WinAPI_UnhookWindowsHookEx($hHook)
    DllCallbackFree($hStub_MouseProc)
    EndFunc ;==>OnAutoItExit

    [/autoit]
  • "_IECreate" Probleme

    • BugFix
    • 20. Juli 2011 um 09:55
    Zitat von PHIPU

    aber ich möchte die Form neu laden

    Zitat von AutoIt Hilfe

    _IEAction ( ByRef $o_object, $s_action )
    $action = "refresh"


    Lesen bildet :P

  • DLL und API und viele Fragen

    • BugFix
    • 20. Juli 2011 um 09:47
    Zitat von Camulus

    bin noch ziemlich verwirrt mit $szEntryName und $RasActiveEntryName.


    $szEntryName ist ein Telefonbucheintrag und wenn dieser angewählt wurde ist es der $RasActiveEntryName. ;)

    Zitat von MSDN RASDIALPARAMS

    szEntryName

    A null-terminated string that contains the phone-book entry to use to establish the connection. An empty string ("") specifies a simple modem connection on the first available modem port, in which case a non-empty szPhoneNumber must be provided.


    Alle Informationen findest du auf MSDN RasDial Function und hier die Struktur RASDIALPARAMS.

  • regex

    • BugFix
    • 20. Juli 2011 um 09:29

    Ilse, das Problem ist, dass keiner erkennen kann, WAS du willst. :wacko:
    Poste doch einfach den Musterquellcode und färbe die Elemente ein, die du als Ergebnis willst. Alles andere ist Sterndeuterei.

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™