Verwende ein 2D-Array: [[Icon-ID, Programmaufruf]] Der Klick liefert die ID - dann startest du die zugehörige Funktion.
Beiträge von BugFix
-
-
Schon mal mein Array-Tut gelesen?
Du kannst entweder das gesamte Array anzeigen (_ArrayDisplay) ODER ein einzelnes Element, das du per Index ansprichst (z.B. ConsoleWrite( $Array[Index] & @CRLF) ) -
wie komme ich an das zweite Ergenis v. RegEx ran? (col1,2,3,4...)
Indem du meine Antworten gründlich liest?
Zitat von BugFixIndex 0 = Backreferenz 1 - erstes Auftreten
Index 1 = Backreferenz 2 - erstes Auftreten
Index 2 = Backreferenz 1 - zweites Auftreten
Index 3 = Backreferenz 2 - zweites AuftretenWie das Rückgabearray aufgebaut ist habe ich dir doch oben beschrieben! Natürlich hat es nur eine Dimension. Und die Ergebisse werden in der Reihenfolge des Auftretens eingesetzt.
-
Mit:
[autoit]GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
[/autoit]
und Auswerten von $NM_CLICK bzw. $NM_RCLICK.
Verwende die Styles: BitOR($LVS_EX_TRACKSELECT, $LVS_EX_FULLROWSELECT), damit auch bei Rechtsklick das Item unter der Maus selektiert ist.
Den Index der Zeile bekommst du mit: _GUICtrlListView_GetSelectedIndices und den Inhalt mit: _GUICtrlListView_GetItemText.
Um die Werte angeklickter SubItem direkt abzufragen brauchst du zum Zeilenindex noch den Spaltenindex: _GUICtrlListView_GetSelectedColumn. -
---wie kriege ich die nun in das Array?
Hääää?! Deine Variable $aAuswahl ist doch das Array, das die Ergebnisse aufnimmt, sofern das Pattern erfolgreich ist. -
Jede Klammer erstellt eine Backreferenz (Ergebnis) und in der Reihenfolge des Auftretens werden diese Werte in ein Array geschrieben.
Wenn also jede Backreferenz befüllt wird sieht dein Array so aus:
Index 0 = Backreferenz 1 - erstes Auftreten
Index 1 = Backreferenz 2 - erstes Auftreten
Index 2 = Backreferenz 1 - zweites Auftreten
Index 3 = Backreferenz 2 - zweites Auftreten
... usw.
Ist jedoch ein Pattern als optional gesetzt (kann auftreten, muß nicht) und es wird kein Wert gefunden, paßt diese Zuordnung nicht mehr. -
Ziemlich derbe, wenn du um Mitternacht postest und am Vormittag schon pusht!
Schon mal #RequireAdmin versucht?
Wenn Programme 'ordentlich'
geschrieben wurden, setzen sie i.A. einen Eintrag mit dem Installationspfad in den Uninstall-Schlüssel (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall), aber verpflichtend ist das nicht und somit muß dort nicht zwingend ein Eintrag zu installierter Software sein. -
Leider ignorierst du kräftig die Hinweise, die man dir gibt. :wacko:
Mit einer RegEx-Abfrage fragst du Daten ab - OK.
Aber du weißt doch nicht, ob dein RegEx auch Daten gebracht hat! Deshalb mußt du vor jedem Zugriff auf die Variable, die das Ergebnisarray enthalten soll prüfen, ob es auch wirklich befüllt wurde (IsArray).
Ist es kein Array setzt du die Schleife einfach mit ContinueLoop fort ohne einen Eintrag im Listview zu erstellen (sind ja auch keine Daten dafür da). -
-
Und wenn du die Daten speicherst (hier ist dann eine txt-Datei zu empfehlen), leg sie so ab, dass du die eingelesenen Zeilen sofort in dein Listview schreiben kannst, in der ersten Zeile legst du dann z.B. die Spaltenüberschrift ab:
-
Völlig egal ob du privat keyloggen willst oder nicht. Wir geben in diese Richtung keinen Support - lies mal die Forenregeln.
Die hier geposteten Ansätze sind zum Glück derart schlecht, dass ich mir nicht die Mühe mache sie zu löschen.[CLOSED]
-
-
Hallo Alina,
zu deinem Geburtstag (der wievielte es ist, verschweigst du Ladylike :D) wünsche ich dir Alles Gute.
Bleib frisch und munter und fördere auch weiterhin die Deutsch-Dänische Freundschaft.
-
Thema ist gelöst, die Diskussion unsinnig (und unwürdig) - [CLOSED]
-
Derartige Skripte gibt es inzwischen zuhauf und alle nennen es fälschlicherweise "Browser". Wie kommt ihr bloß dadrauf? :wacko:
Es ist der M$ Internet Explorer in einer GUI eingebettet. Die Programmierleistung dazu geht gegen null, da das fast identisch in der Hilfe zu finden ist.Von mir aus könnt ihr posten, was ihr wollt - aber mit einer Modifikation von Bsp. aus der Hilfe würde ich mir ziemlich bescheuert vorkommen.

-
Du kannst auch ohne jede Prüfung ganz simpel vor die Zahl einfach eine '0' setzen und dann die 2 Stellen von rechts abgreifen - passt immer.
[autoit]= StringRight( '0' & GuiCtrlRead(...), 2)
[/autoit]
Allerdings ist StringFormat viel eleganter
-
Ja, das ist halt der gravierende Unterschied zwischen: ein Skript hinklatschen und Programmieren.
Befehle aneinanderreihen, dass das gewünschte Verhalten auftritt reicht halt nicht. Jedenfalls nicht, wenn der Faktor Zeit eine Rolle spielt. Da sollte man schon vor Beginn gründlich analysieren, was wann passieren soll. (Stichwort 'Softwareengeneering')
Ganz nebenbei ist ein optimiertes Skript normalerweise auch sehr gut lesbar.
-
NEU: Version 1.4 in Post #1
-
bei denen man iPhones & pads & hasteNichtGesehen gewinnen kann
Nun, ich bin der Meinung: Jeder der auf einen Link klickt, der ihm ohne Einsatz Gewinne verspricht, soll sich nicht wundern, wenn er hinterher Probleme hat. NIEMAND hat etwas zu verschenken, NICHTS gibt es gratis, auch nicht als Dank für eine Umfragebeteiligung o.ä.
Gesunder Menschenverstand schützt einen vor der Mehrzahl der Bedrohungen am Besten. -
Hi UEZ,
das Hauptproblem ist eigentlich, dass es keinen definierten Zustand für das Ende der Farbwahl gibt (und somit den Zeitpunkt zum Wechsel des Fokus).
Du hast mehrere Möglichkeiten die Auswahl zu treffen:
1. Klick auf Combo-Button zum Ausklappen der Auswahlliste
- a) mit Mausklick Farbeintrag wählen
- b) mit Pfeiltasten auf/ab bewegen und mit Enter übernehmen
2. Fokus auf Combo ohne dass die LIste ausgeklappt ist
- a) mit Pfeiltasten ändert sich der Eintrag im sichtbaren Bereich - Übernahme mit Enter
- b) mit Scrollen des Mausrades ändert sich der Eintrag im sichtbaren Bereich - Übernahme mit EnterDie einzig klare Form der Wahl ist: Ausklappen, mit Mausklick wählen.
Aber der Nutzer hat ja durchaus die Möglichkeit anders vorzugehen. Deshalb denke ich, dass das Standard Combo-Ctrl hier nicht geeignet ist. Ich würde hier ein eigenes Ctrl erstellen, dem du nur die gewollten Eigenschaften zuordnen kannst.
Unabhängig davon, werde ich mich mal an der Variante: "Ausklappen, mit Mausklick wählen, Fokus auf Button" probieren.Edit:
Du hattest "WM_NOTIFY" statt "WM_COMMAND" ausgewertet.
So geht es per Auswahl mit Mausklick:Spoiler anzeigen
[autoit]#include <Array.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <ComboConstants.au3>
#include <Constants.au3>
#include <EditConstants.au3>
#include <GuiComboBoxEx.au3>
#include <GUIConstantsEx.au3>
#include <GuiImageList.au3>
#include <Misc.au3>
#include <SliderConstants.au3>
#include <StructureConstants.au3>
#include <WinAPI.au3>
#include <WindowsConstants.au3>Global $hGUI = GUICreate("")
[/autoit] [autoit][/autoit] [autoit]
GUISetState()
Global $load_auto = ""
Global $load_auto, $GUI_Bg_Color = 0xB9D1EA, $ping_to = 500
Global Const $ini_file = @ScriptDir & "\Check Online Status.ini"Global $bSet, $hComboColor, $hGUI_Settings, $hProc, $hHook
[/autoit] [autoit][/autoit] [autoit]
Settings()Exit
[/autoit] [autoit][/autoit] [autoit]Func Settings()
[/autoit] [autoit][/autoit] [autoit]
GUISetState(@SW_DISABLE, $hGUI)
$hGUI_Settings = GUICreate("Settings", 612, 229, -1, -1, $GUI_SS_DEFAULT_GUI, Default, $hGUI)
Local Const $iAutoLoadFile = GUICtrlCreateInput($load_auto, 152, 16, 369, 22)
GUICtrlSetFont(-1, 9, 400, 0, "Arial")
Local Const $lLoadAuto = GUICtrlCreateLabel("Load List Automatically", 8, 18, 140, 20)
GUICtrlSetFont(-1, 10, 400, 0, "Arial")
GUICtrlSetTip(-1, "Select a file which will be loaded to the program automatically")
Local Const $bBrowse = GUICtrlCreateButton("&Browse", 528, 14, 75, 25)
GUICtrlSetFont(-1, 10, 400, 0, "Arial")
Local Const $lBgColor = GUICtrlCreateLabel("Change GUI background color", 6, 58, 177, 20)
GUICtrlSetFont(-1, 10, 400, 0, "Arial")
;~ Local Const $lBgColorAdd = GUICtrlCreateLabel("Add new color", 6, 97, 97, 20)
;~ GUICtrlSetFont(-1, 10, 400, 0, "Arial")
;~ Local Const $bAddColor = GUICtrlCreateButton("Add &Color", 105, 94, 75, 25)
;~ GUICtrlSetFont(-1, 10, 400, 0, "Arial")
$hComboColor = _GUICtrlComboBoxEx_Create($hGUI_Settings, "", 192, 56, 329, 200, BitOR($CBS_DROPDOWNLIST, $CBS_DISABLENOSCROLL))
;~ $hComboColor = GUICtrlCreateCombo("", 192, 56, 329, 200, BitOR($CBS_DROPDOWNLIST, $CBS_DISABLENOSCROLL))
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $hComboColor = ' & $hComboColor & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
GUICtrlSetData(-1, "item2|item3", "item3")
GUICtrlSetFont(-1, 10, 400, 0, "Arial")
$bSet = GUICtrlCreateButton("&Set", 528, 55, 75, 64) ;#############################
GUICtrlSetFont(-1, 10, 400, 0, "Arial")
Local Const $bApply = GUICtrlCreateButton("&Apply", 528, 180, 75, 40)
GUICtrlSetFont(-1, 10, 400, 0, "Arial")
Local Const $bExit_Setting = GUICtrlCreateButton("E&xit", 438, 180, 75, 40)
GUICtrlSetFont(-1, 10, 400, 0, "Arial")
Local Const $cSlider = GUICtrlCreateSlider(88, 138, 440, 30, BitOR($TBS_BOTH,$TBS_NOTICKS, $TBS_ENABLESELRANGE, $TBS_FIXEDLENGTH, $WS_TABSTOP))
GUICtrlSetLimit(-1, 5000, 100)
GUICtrlSetData(-1, 500)
GUICtrlSetCursor (-1, 0)
Local Const $lSlider = GUICtrlCreateLabel("Ping Timeout", 8, 141, 80, 20)
GUICtrlSetFont(-1, 10, 400, 0, "Arial")
GUICtrlSetTip(-1, "Default is 500 ms")
Local Const $iPing = GUICtrlCreateInput($ping_to, 528, 140, 74, 21, BitOR($ES_CENTER, $ES_NUMBER))
GUICtrlSetFont(-1, 10, 400, 0, "Arial")GUISetState(@SW_SHOW, $hGUI_Settings)
[/autoit] [autoit][/autoit] [autoit]
ControlFocus($hGUI_Settings, "", $bExit_Setting)
GUISetIcon(@SystemDir & "\Shell32.dll", 14, $hGUI_Settings)
Local $nMsg, $i, $file, $cindex, $em, $p, $newcolorLocal $aColors[7] = [0xB9D1EA, 0xC0DCC0, 0xD7E4F2, 0xFFFFE1, 0xA6CAF0, 0xFFFBF0, 0xFECFF4]
[/autoit] [autoit][/autoit] [autoit]Local Const $hImage = _GUIImageList_Create(256, 56, 5, 3)
[/autoit] [autoit][/autoit] [autoit]
For $i = 0 To 6
_GUIImageList_Add($hImage, _GUICtrlComboBoxEx_CreateSolidBitMap($hComboColor, $aColors[$i], 256, 56))
Next
_GUICtrlComboBoxEx_SetImageList($hComboColor, $hImage)_GUICtrlComboBoxEx_BeginUpdate($hComboColor)
[/autoit] [autoit][/autoit] [autoit]
For $i = 0 To 6
_GUICtrlComboBoxEx_AddString($hComboColor, "Color " & $i + 1, $i, $i)
Next
_GUICtrlComboBoxEx_EndUpdate($hComboColor)$cindex = _ArraySearch($aColors, $GUI_Bg_Color)
[/autoit] [autoit][/autoit] [autoit]
If Not @error Then
_GUICtrlComboBoxEx_SetCurSel($hComboColor, $cindex)
Else
_GUICtrlComboBoxEx_SetCurSel($hComboColor, 0)
EndIf;~ GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
[/autoit] [autoit][/autoit] [autoit]
GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")While 1
[/autoit] [autoit][/autoit] [autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE, $bExit_Setting
GUISetState(@SW_ENABLE, $hGUI)
GUIDelete($hGUI_Settings)
Return 1
Case $cSlider
GUICtrlSetData($iPing, GUICtrlRead($cSlider))
Case $iPing
$p = GUICtrlRead($iPing)
If $p > 5000 Then
$p = 500
ElseIf $p < 100 Then
$p = 100
EndIf
GUICtrlSetData($cSlider, $p)
Case $bBrowse
$file = FileOpenDialog("File Selection", "", "Text Files (*.txt;*.csv)")
If Not @error Then GUICtrlSetData($iAutoLoadFile, $file)
Case $bSet
$GUI_Bg_Color = "0x" & Hex($aColors[_GUICtrlComboBoxEx_GetCurSel($hComboColor)], 6)
GUISetBkColor($GUI_Bg_Color, $hGUI)
Case $bApply
$GUI_Bg_Color = "0x" & Hex($aColors[_GUICtrlComboBoxEx_GetCurSel($hComboColor)], 6)
GUISetBkColor($GUI_Bg_Color, $hGUI)
IniWrite($ini_file, "Bg-Color", "Color", "0x" & Hex($aColors[_GUICtrlComboBoxEx_GetCurSel($hComboColor)], 6))
$em = @error
IniWrite($ini_file, "Auto-Load", "Load", GUICtrlRead($iAutoLoadFile))
$em = @error
IniWrite($ini_file, "Ping-Timeout", "Ping", GUICtrlRead($iPing))
$em = @error
If $em Then
MsgBox(16, "Error", "Unable to save one or more settings to ini file!", 10)
Else
MsgBox(64, "Information", "Settings were save to " & $ini_file & " successfully", 10)
EndIf
;~ Case $bAddColor
;~ $newcolor = _ChooseColor(2, 0, 2, $hGUI_Settings)
;~ If Not @error Then
;~ ConsoleWrite($newcolor & @CRLF)
;~ EndIf
EndSwitch
WEnd
EndFuncFunc WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
[/autoit]
#forceref $hWnd, $iMsg
Local $hWndFrom, $iIDFrom, $iCode
$hWndFrom = $ilParam
$iIDFrom = BitAND($iwParam, 0xFFFF)
$iCode = BitShift($iwParam, 16)
Switch $hWndFrom
Case $hComboColor
Switch $iCode
Case $CBN_SELENDOK
ControlFocus($hGUI_Settings, '', $bSet)
EndSwitch
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_COMMAND