Beiträge von svart
-
-
Meinst du sowas z.B.: ?
AutoIt
Alles anzeigen#include <Array.au3> $aWin = processlist() $c = 0 Dim $aList[0][3] for $i = 0 to ubound($aWin)-1 $sWin = _Process2Win($aWin[$i][1]) if $sWin <> -1 then $c = $c + 1 ReDim $aList[$c][3] $aList[$c-1][0] = $aWin[$i][0] $aList[$c-1][1] = $aWin[$i][1] $aList[$c-1][2] = $sWin EndIf Next _Arraydisplay($aList) Func _Process2Win($pid) If IsString($pid) Then $pid = ProcessExists($pid) If $pid = 0 Then Return -1 Local $list = WinList(), $wpid For $i = 1 To $list[0][0] If $list[$i][0] <> "" AND BitAnd(WinGetState($list[$i][1]),2) Then $wpid = WinGetProcess($list[$i][0]) If $wpid = $pid Then Return $list[$i][0] EndIf Next Return -1 EndFunc ;==> Quelle: https://autoit.de/index.php/Thread/85367-Schleife-bis-R%C3%BCckgabewert-passt/?postID=683725&highlight=_Process2Win%2528%2524pid%2529
-
Vielen Dank.
Jetzt wo du es sagst (oder schreibst)..@GUI_CtrlId hatte ich schon einmal vor 1-2 Jahren bei einem ähnlichen Problem benutzt, bin aber nicht mehr darauf gekommen
-
Hallo,
ich hoffe ihr kennt einen einen Workaround für mein Problem
Ich möchte gerne in meine GUI Tools (*.exe) ausführen und diese per INI-Datei anpassen, so dass Sie automatisch in der Menübar unter "Tools" angezeigt werden.
Nur leider habe ich keine Ahnung wie ich jetzt herrausfinde, welcher Menübutton gedrückt worden ist..Das ganze sollte mit Opt("GUIOnEventMode", 1) laufen.
Hier mal ein Beispiel:
C
Alles anzeigen#include <GUIConstantsEx.au3> #include <WindowsConstants.au3> Opt("GUIOnEventMode", 1) $GUI = GUICreate("TEST", 300,300) $Menu_Tools = GUICtrlCreateMenu("Tools") GUISetState(@SW_SHOW) GUISetOnEvent($GUI_EVENT_CLOSE, "_EXIT") Local $aTools[4][3] for $i = 1 to ubound($aTools)-1 $aTools[$i][0] = "Tool " & $i $aTools[$i][1] = "Pfad zur Exe" $aTools[$i][2] = GUICtrlCreateMenuItem($aTools[$i][0], $Menu_Tools) GUICTRLSetOnEvent(-1,"_Test") Next While 1 sleep(50) WEnd Func _exit() Exit EndFunc func _Test() msgbox(0,"","WELCHER BUTTON?") endfunc
-
Vielen Dank, das löst mein Problem.
-
GuiCtrlSetOnEvent(-1, "LabelKlick") jedem Label zuweisen und in der Funktion "LabelKlick" dann mit GuiCtrlRead(@GUI_CtrlID) den Text des Labels auslesen.
-> das ist mir bewusst, wie in meinem Beispiel zu sehen ist möchte ich das aber nicht.
Du schreibst, dass Du den Text des Label haben willst, auf das Du klickst. Wozu dann ein ContextMenü?
-> weil ich möchte, dass ein Kontextmenü erscheint wenn ich mit der rechten Maustaste auf ein Label klicke, in den Funktionen die ich dann per Kontextmenü (mehrere Punkte) aufrufe, benötige ich dann den Labeltext.
Ich hoffe es ist jetzt verständlicher.
-
Man kann nicht den OnEventMode und den MsgLoopMode gleichzeitig benutzen!
Es geht zwar wechselweise, aber nicht gleichzeitig!Das weiß ich, hatte nur mit Koda ein GUI erstellt und vergessen den Part zu löschen, aber darum gings ja in dem Beispiel nicht.
Du kannst natürlich auch nur ein ContextMenu für die ganze Gui erstellen, und benutzt dann in der EventFunktion @GUI_CtrlID für die Auswahl.
Aber woher sollen wir wissen, was Du vorhast?Mit @GUI_CtrlID würde ich doch dann die ID vom Kontextmenü-Punkt "TEST" erhalten?
Also wie bereits geschrieben möchte ich gerne den Text des Labels auf das ich klicke in der Funktion als variable haben.
-
Hallo,
wie kann ich den Label-Text ausgeben, wenn ich per Kontext-Menü auf "TEST" klicke? (siehe Beispiel:)
C
Alles anzeigen#include <GUIConstantsEx.au3> #include <WindowsConstants.au3> Opt("GUIOnEventMode", 1) $MainGUI = GUICreate("", 250, 250) $Button = GUICTRLCreateButton("TEST",20,220,100,20) GUISetState(@SW_SHOW) GUISetOnEvent($GUI_EVENT_CLOSE, "_exit") $arLabels=_CreateLabel() While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $button EndSwitch WEnd Func _CreateLabel() local $Array[10] for $i = 0 to UBound($Array)-1 step 1 $Array[$i]=GUICTRLCreateLabel("Test" & $i, 20,20*$i,200,15) GUICtrlSetBkColor(-1,0x0B610B) $context = GUICtrlCreateContextMenu($Array[$i]) $context_test = GUICtrlCreateMenuItem("TEST",$context) GUICtrlSetOnEvent(-1, "_TEST") Next return $Array EndFunc func _Exit() Exit EndFunc func _Test() msgbox(0,"","TEXT?!") EndFunc
-
Danke, daran hab ich gar nicht gedacht.
-
Hallo,
ich möchte im nachhinein die einzelnen Labels anpassen können. (siehe Beispiel unten)
Beim Klick z.B. GUICtrlSetBkColor($LABEL,0x0101DF)
Leider scheiterts, da ich die Labels in der Schleife erstellen möchte... also $label & $i = GUICTRLcreateLabel funktioniert leider nicht.
Gibs da ein Workaround für?C
Alles anzeigen#include <GUIConstantsEx.au3> #include <WindowsConstants.au3> $MainGUI = GUICreate("", 250, 250) $Button = GUICTRLCreateButton("TEST",20,220,100,20) GUISetState(@SW_SHOW) _CreateLabel() While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $button EndSwitch WEnd func _CreateLabel() for $i = 1 to 10 GUICTRLCreateLabel("Test" & $i, 20,20*$i,200,15) GUICtrlSetBkColor(-1,0x0B610B) Next EndFunc
-
Vielen Dank euch Beiden, jetzt klappt alles so wie ich es will
-
Ich danke dir.
Leider funktioniert der RegEx nicht wenn mehrere Spalten in einer Zeile stehen.
z.B.
Spoiler anzeigen
Code
Alles anzeigen<form name="monObjects" method="POST" action="/MONOBJLIST"> <input name="cmd" value="" type="HIDDEN"> <table width="100%"> <tbody><tr> </tr></tbody><thead bgcolor="#46648C"> <tr><th> </th> <th>Lfd. Nr.</th> <th>Status</th> <th>Name</th> <th>Meldung</th> </tr> </thead><tbody bgcolor="#CAD5E3"> <tr><td><input name="marker" value="MonObj65" type="checkbox"></td><td><a name="1">1</a></td><td align="center"><img src="StateGreen.jpg" name="StateGreen.jpg" "="" align="absmiddle"></td><td><a href="http://192.168.0.1:5588/State?ID=MonObj65">SRVTEST01 - DATEN - FOLDER</a></td><td>Es befinden sich mindestens "0" Dateien in dem Verzeichnis "\\srvtest01\daten\folder" mit der Maske "*.*".Folgende Optionen wurden berücksichtigt: Zeitstempel; [Dauer = 0 ms]</td></tr><tr><td><input name="marker" value="MonObj10" type="checkbox"></td><td><a name="2">2</a></td><td align="center"><img src="StateGreen.jpg" name="StateGreen.jpg" "="" align="absmiddle"></td><td><a href="http://192.168.0.1:5588/State?ID=MonObj10">SRV02TEST - Prozess Test</a></td><td>process count:[26] cpu use:[0%] run</td></tr> <tr><td><input name="marker" value="MonObj72" type="checkbox"></td><td><a name="3">3</a></td><td align="center"><img src="StateRed_002.jpg" name="StateRed.jpg" "="" align="absmiddle"></td><td><a href="http://192.168.0.1:5588/State?ID=MonObj72">SRV02TEST - Service Test</a></td><td>Keine Antwort "Test" auf "SRV02TEST.domain.de" seit mehr als 120 Sekunden. [Dauer = 0 ms]</td></tr> </tbody> </table> </form> </body> </html>
Bei deinem Beispiel mittels "HTMLParser" funktioniert das, aber wie bekomme ich alle Tabellen ausgelesen?
Leider lässt sich die "3" in der Zeile bzw. Funktion _CssSelectFromString:
$a_Tds = _CssSelectFromString($s_String, "tr:nth-of-type(3) td")nicht über eine Variable ausführen:
$i = 3
$a_Tds = _CssSelectFromString($s_String, "tr:nth-of-type(" & $i & ") td")?
-
Hallo,
ich würde gerne Werte aus einer HTML Tabelle auslesen. Leider komme ich mit RegEx überhaupt nicht klar - auch nach dem Lesen eines Tutorials... (PS: kennt jemand noch ein gutes Tutorial???)
Hier mal eine Beispiel Tabelle:
Spoiler anzeigen
Code
Alles anzeigen<form name="monObjects" method="POST" action="/MONOBJLIST"> <input name="cmd" value="" type="HIDDEN"> <table width="100%"> <tbody><tr> </tr></tbody><thead bgcolor="#46648C"> <tr><th> </th> <th>Lfd. Nr.</th> <th>Status</th> <th>Name</th> <th>Meldung</th> </tr> </thead><tbody bgcolor="#CAD5E3"> <tr><td><input name="marker" value="MonObj65" type="checkbox"></td><td><a name="1">1</a></td><td align="center"><img src="StateGreen.jpg" name="StateGreen.jpg" "="" align="absmiddle"></td><td><a href="http://192.168.0.1:5588/State?ID=MonObj65">SRVTEST01 - DATEN - FOLDER</a></td><td>Es befinden sich mindestens "0" Dateien in dem Verzeichnis "\\srvtest01\daten\folder" mit der Maske "*.*".Folgende Optionen wurden berücksichtigt: Zeitstempel; [Dauer = 0 ms]</td></tr><tr><td><input name="marker" value="MonObj10" type="checkbox"></td><td><a name="2">2</a></td><td align="center"><img src="StateGreen.jpg" name="StateGreen.jpg" "="" align="absmiddle"></td><td><a href="http://192.168.0.1:5588/State?ID=MonObj10">SRV02TEST - Prozess Test</a></td><td>process count:[26] cpu use:[0%] run</td></tr> <tr><td><input name="marker" value="MonObj72" type="checkbox"></td><td><a name="3">3</a></td><td align="center"><img src="StateRed_002.jpg" name="StateRed.jpg" "="" align="absmiddle"></td><td><a href="http://192.168.0.1:5588/State?ID=MonObj72">SRV02TEST - Service Test</a></td><td>Keine Antwort "Test" auf "SRV02TEST.domain.de" seit mehr als 120 Sekunden. [Dauer = 0 ms]</td></tr> </tbody> </table> </form> </body> </html>
Ich würde gerne alle Zeilen/Spalten als Array haben, ich hatte es bereits mit _IETableWriteToArray probiert - aber da wird mir nichts in der Spalte "Status" (StateGreen / StateRed) angezeigt.
Also aus der Zeile:
<tr><td><input name="marker" value="MonObj10" type="checkbox"></td><td><a name="2">2</a></td><td align="center"><img src="StateGreen.jpg" name="StateGreen.jpg" "="" align="absmiddle"></td><td><a href="http://192.168.0.1:5588/State?ID=MonObj10">SRV02TEST - Prozess Test</a></td><td>process count:[26] cpu use:[0%] run</td></tr>Sollte dann z.B. : "MonObj10|StateGreen|SRV02TEST - Prozess Test|process count:[26] cpu use:[0%] run" werden.
Wäre nett wenn mir jemand ein passendes RegEx-Pattern geben könnte, eine Erklärung dazu wäre natürlich noch am Besten.
Vielen Dank schon mal.
-
Hi,
danke für die Antwort, leider haut das nicht hin, weil vor und nach dem String den ich benötige völlig unterschiedliche Sachen stehen, einige wurden beim Einfügen hier nicht übernommen (Sonderzeichen)
- ich denke das wird sicher auch mit RegEx schwierig.
Ich habe jetzt aber einen Workaround gefunden... ich weiß welche Werte gesendet werden, also "SRVTest - Verzeichnis" müsste dann nur noch aus dem SNMP-Trap auslesen ob Fehler oder OK... -
Hallo,
ich habe mir ein Script gebaut, dass SNMP-Traps, welche von einem Server gesendet werden liest.
Das funktioniert auch, nur es werden Binarys übergeben, die ich dann mittels BinaryToString umwandle.Das Resultat ist zB.:
0‰ public¤| +‚‰P @ C 0`0 TESTSERVER - PING0 Fehler / Rot03 .TESTSERVER.domain.de [192.168.2.5]
0‰ public¤| +‚‰P @ C 0`0 TESTSERVER - PING0 Fehler / Rot03 .TESTSERVER.domain.de [192.168.2.5]
0† public¤y +‚‰P @ C 0]0 TESTSERVER2 - SQL0 OK / Grün03 .TESTSERVER2.domain.de [192.168.2.7]
0‰ public¤| +‚‰P @ C 0`0 TESTSERVER2 - SQL+‚ Fehler / Rot03 .TESTSERVER2.domain.de [192.168.2.7]
0† public¤y +‚‰P @ C 0]0 SRVTEST - VERZEICHNIS¤| OK / Grün03 .SRVTEST.domain.de [192.168.2.3]
0‰ public¤| +‚‰P @ C 0`0 SRVTEST - VERZEICHNIS0 Fehler / Rot03 .SRVTEST.domain.de [192.168.2.3]Ich tu mich leider etwas schwer die Daten, die ich benötige rauszufiltern.
Die Tabelle sollte dann wie folgt aussehen:
TESTSERVER - PING | Fehler
TESTSERVER - PING | Fehler
TESTSERVER2 - SQL | OK
TESTSERVER2 - SQL | Fehler
SRVTEST - VERZEICHNIS | OK
SRVTEST - VERZEICHNIS | Fehler -
Hat sich erledigt,
ich stand auf dem Schlauch
-
Hallo,
ich würde gerne eine Funktion ausführen, wenn ENTER gedrückt wird und ein Inputfeld aktiv ist.
Beispiel: Wenn ENTER gedrückt wurde und Input1 aktiv ist - soll eine Funktion ausgeführt werden.
C
Alles anzeigen#include <EditConstants.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> HotKeySet("{ENTER}","_test") $Form1 = GUICreate("TESTFENSTER", 234, 100, 237, 163) $Input1 = GUICtrlCreateInput("", 40, 24, 161, 21) $Input2 = GUICtrlCreateInput("", 40, 64, 161, 21) GUISetState(@SW_SHOW) While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit EndSwitch WEnd func _test() msgbox(0,"","TEST") EndFunc
-
Es bleibt nichts genauso wie vorher, die Werte ändern sich bzw. werden aktualisiert.
Das Problem ist, wenn man etwas in der ListView sucht und die Liste sich aktualisiert ist die Sortierung falsch und man ist wieder am Anfang der Liste.Ich möchte die RDP-Sessions mehrerer Server auslesen und die Benutzer in einer ListView packen und z.B. alle 5 Sekunden aktualisieren.
Im Prinzip ein Nachbau des Remotedesktopdienste-Manager. -
Hallo,
ich würde gerne eine Listview refreshen, die Sortierung soll nach dem Refresh genauso sein wie zuvor und auch die Position der Scrollbar soll gleich bleiben.
Habt ihr eine Idee?
Danke schon mal im Vorraus.
Hier mal ein Beispiel:
C
Alles anzeigen#include <ButtonConstants.au3> #include <GUIConstantsEx.au3> #include <ListViewConstants.au3> #include <WindowsConstants.au3> #include <ListViewConstants.au3> #include <GuiListView.au3> Opt("GUIOnEventMode", 1) local $aNames[8][2] $aNames[0][0] = "Mustermann" $aNames[0][1] = "Frank" $aNames[1][0] = "Arndt" $aNames[1][1] = "Stephanie" $aNames[2][0] = "Zeppelin" $aNames[2][1] = "Konrad" $aNames[3][0] = "Musterfrau" $aNames[3][1] = "Paula" $aNames[4][0] = "Berndt" $aNames[4][1] = "Sigmund" $aNames[5][0] = "Alonso" $aNames[5][1] = "Stephan" $aNames[6][0] = "Henning" $aNames[6][1] = "Marc" $aNames[7][0] = "Kaufmann" $aNames[7][1] = "Olaf" $Form1 = GUICreate("", 376, 200, 192, 124) $ListView1 = GUICtrlCreateListView("", 140, 40, 230, 100) _GUICTRLListView_AddColumn($ListView1,"Name","100") _GUICTRLListView_AddColumn($ListView1,"Vorname","100") _fillList() $Button1 = GUICtrlCreateButton("Button1", 10, 40, 113, 33) GUICtrlSetOnEvent (-1, "_refresh") GUISetState(@SW_SHOW) GUISetOnEvent($GUI_EVENT_CLOSE, "_exit") GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY") Global $B_DESCENDING[_GUICtrlListView_GetColumnCount($ListView1)] While 1 sleep(50) WEnd func _refresh() $selected = _GUICtrlListView_GetSelectedIndices($ListView1) _GUICTRLListView_DeleteAllItems($ListView1) _fillList() _GUICTRLListView_Setitemselected(GUICtrlGetHandle($ListView1),$selected,True,True) endfunc func _filllist() for $i = 1 to 8 GUICtrlCreateListViewItem($aNames[random(1,8)][0] & "|" & $aNames[random(1,8)][1],$ListView1) next EndFunc func _exit() Exit endfunc Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam) #forceref $hWnd, $iMsg, $iwParam Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndListView, $tInfo $hWndListView = $listview1 If Not IsHWnd($listview1) Then $hWndListView = GUICtrlGetHandle($listview1) $tNMHDR = DllStructCreate($tagNMHDR, $ilParam) $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom")) $iIDFrom = DllStructGetData($tNMHDR, "IDFrom") $iCode = DllStructGetData($tNMHDR, "Code") If ($hWndFrom = $hWndListView) And ($iCode = $LVN_COLUMNCLICK) Then _GUICtrlListView_SimpleSort($hWndListView, $B_DESCENDING, DllStructGetData($tInfo, "SubItem")) EndIf EndFunc
-
Falls jemand das selbe Problem hat:
ich habe es statt WMI jetzt per Befehl: "quser" gelöst, geht deutlich schneller.
Alternativ wäre es auch per Powershell mit dem Befehl "Get-TSSession" möglich.