Ist nen Script was ich ewig schon bei spielen benutze
Forenregeln mal gelesen oder einfach weggeklickt?
Ist nen Script was ich ewig schon bei spielen benutze
Forenregeln mal gelesen oder einfach weggeklickt?
Der einzig für mich nachvollziehbare Sinn, wäre ein optisches Auffinden des Mauszeigers.
Aber dafür gibt es doch nen Hotkey.
Also, warum soll deine Maus rumzappeln?
Na dann poste doch die paar Zeilen. Dann wird man sehen.
aptitude Leichenfledderer
Hmm, also bei mir funktioniert der import nur, wenn die dark.theme.properties im Programmverzeichnis liegt und ich die SciTEGlobal.properties anpasse (statt der SciTEUser.properties.)
Pooh, bitte NIE etwas im Programmverzeichnis ablegen oder eine Global.properties ändern! In diesem Bereich hast du keine Schreibrechte (hast du sicher bemerkt, du musstest deinen Zugriff administrativ bestätigen).
Wenn du genau nach meiner Anweisung vorgehst, funktioniert es auch.
1. SciTEUser.properties öffnen
2. Datei NEU
3. Inhalt der Dark_Theme.properties einfügen
4. Speichern als "...Theme.properties"
So ist garantiert, dass das Theme im selben Ordner wie die SciTEUser.properties ist und geladen werden kann.
Probier doch mal:
If $objItem.InterfaceType = "243"
Ich habe es gerade getestet. Hat nicht funktioniert, ich glaube aber das ich die falsche au "noch" haben.
QRCreateCI.au3 v0.3 --> ich finde die nicht im Post bzw. ist da ggf noch die "alte" Version ? Sorry, evtl. bin ich auch blind.
Schreibfehler von mir, muss v0.4 heißen - habs korrigert.
Ob du die richtige Version hast, siehst du in der ersten Zeile:
;-- TIME_STAMP 2024-07-16 10:25:32 v 0.4
Ich habe deinen Aufruf getestet:
Parameter Text:
text="BEGIN:VCARD^VERSION:4.0^N:Mustermann;Erika;;Dr.;^FN:Dr. Erika Mustermann^ORG:Wikimedia^ROLE:Kommunikation^TEL;TYPE=work,voice;VALUE=uri:tel:+49-221-9999123^EMAIL:erika@mustermann.de^END:VCARD"
Hat bei mir funktioniert
Neue Version QRCreateCI.au3 v0.4
Multiline per Kommandozeile wurde bisher nicht erkannt. Habe ich nun angepasst.
Standard für Zeilenumbruch ist jetzt (wie bei Batch) ein Caret ^.
Nur wenn ein anderer Platzhalter für den Umbruch verwendet werden soll, muss dieser gesetzt werden - dann aber zwingend als erster Parameter! z.B. QRCreatorCI break="||" text="Zeile 1||Zeile 2||Zeile 3"
Für den (möglichen) Fall, dass man Text ohne Umbruch aber mit dem Standard-Platzhalter für Umbruch (^) ausgeben möchte, ist (wiederum als erster Parameter) break=none erforderlich!
OK, konnte jetzt testen.
Stimmt - Multiline wurde bisher nicht erkannt. Habe ich geändert und werde gleich den Thread dazu aktualisieren.
Standard für Zeilenumbruch ist jetzt (wie bei Batch) ein Caret ^.
Nur wenn ein anderer Platzhalter für den Umbruch verwendet werden soll, musst du diesen bekannt geben - dann aber zwingend als ersten Parameter! z.B. QRCreatorCI break="||" text="Zeile 1||Zeile 2||Zeile 3"
Für den (möglichen) Fall, dass du Text ohne Umbruch aber mit dem Standard-Platzhalter für Umbruch (^) ausgeben möchtest, ist wiederum als erster Parameter break=none erforderlich!
Ich nehme an, du meinst meine UDF:
Dann zeige doch bitte mal dein Skript, das zum Fehler führt.
EDIT:
Kann jetzt aber auch nicht testen. Mit meinem jetzigen Rechner (Win 11) läuft die CMD-Version gar nicht (Dateigröße immer 0) und die UI zeigt das Vorschaufenster nicht richtig an (Bild mal da - mal nicht, Ruckeln am Slider hilft manchmal )
Keine Ahnung, was da jetzt zwischen Win7 und Win11 passiert ist.
das war ich selbst.
Leider hat das eigentliche ListView-Control von alldem keine Ahnung. AutoIt speichert zwar die Control-ID im Eintrag, der Speicherort hat aber für das ListView-Control keine besondere Bedeutung.
Das ist mir jetzt unklar. Was meinst du mit Speicherort?
Die Informationen stehen alle über verschieden Funktionen zur Auswertung bereit. Egal, ob ich als Auslöser dem Listview oder dem Listview-Item eine Event-Funktion zuordne.
Das Listview-Control wird bei Klick auf ein Item informiert und dieses Ereignis liefert mir per GuiCtrlRead(Listview-Control-ID) die Item-Ctrl-ID.
Mit GUICtrlRead($CtrlID) erfahre ich den Inhalt des kpl. Item. Item-Index erfahre ich mit GUICtrlSendMsg(...).
Oder alternativ mit den UDF-Funktionen dafür, in denen diese Abfragen komprimiert sind.
Ich würde sagen, sie sind ebensogut verwertbar wie die anderen Controls, wenn man die zugehörigen UDFs einsetzt.
War vielleicht etwas unklar ausgedrückt, ich bezog mich da auf die Fülle der zur Verfügung stehenden Parameter.
P.S. casi4712 Sorry, ich wollte deinen Thread jetzt nicht für Listview-Diskussionen kapern.
Wenn du Sleep kpl. raushaben möchtest, würde ich nur mit AdlibRegister arbeiten (hier mal so gestaltet, dass es mit der konsole funktioniert):
Global $TimerShow
$dauermeldung = 5000
$intervallmeldung = 60000 - $dauermeldung ;####
AdlibRegister(checkMeldung, $intervallmeldung)
; zum Beenden
HotKeySet('{ESC}', _Exit)
While True
Sleep(50)
WEnd
Func _Exit()
Exit
EndFunc
Func checkMeldung()
Local $aInfo[] = ['ALARM', 'Kein ALARM']
AdlibUnRegister(checkMeldung)
Local $AlarmInfo = $aInfo[Random(0,1,1)] ; hier gehört die Überprüfung auf Alarmzustand rein
$TimerShow = TimerInit()
;~ GUICtrlSetData($lbl_Alarm, $AlarmInfo)
ConsoleWrite('[check]' & @CRLF)
ConsoleWrite($AlarmInfo & @CRLF)
AdlibRegister(_ShowMsg)
EndFunc ;==>checkMeldung
Func _ShowMsg()
If TimerDiff($TimerShow) < $dauermeldung Then Return
;~ GUICtrlSetData($lbl_Alarm, '[check ended]')
ConsoleWrite('[check ended]' & @CRLF)
AdlibUnRegister(_ShowMsg)
AdlibRegister(checkMeldung, $intervallmeldung) ; jetzt ist die gesamte Intervall-Zeit um ($intervallmeldung -$dauermeldung +$dauermeldung)
EndFunc
Alles anzeigen
Warum die WMI-Abfrage mittels Windows PowerShell durchführen?
Erfahrungsgemäß ist die Nutzung des WMI-Objektes in AutoIt etwas "behäbig", sodass der Umweg über PS durchaus einen Vorteil bringen kann. Muss man einfach testen, was zur entsprechenden Abfrage am besten passt.
Alles, was mit Klicks im ListView-Bereich zu tun hat, wird schnöde unter den Tisch gekehrt. Das gilt sowohl für den GetMsg- als auch für den OnEvent-Modus.
Wer hat dir denn diesen Bären aufgebunden?
Listview sind die am effektivsten verwertbaren Control überhaupt.
Bsp OnEvent:
EDIT:
Da du direkt die Nativen Funktionen angesprochen hast, habe ich vergleichsweise sowohl Nativ als auch Listview-UDF eingebaut (Zeile #13/14 entsprechend aus/kommentieren):
#include <GUIConstantsEx.au3>
#include <StringConstants.au3>
#include <GuiListView.au3>
AutoitSetOption('GUIOnEventMode', 1)
Global $hGui = GUICreate('Test LV', 500, 500)
GUISetOnEvent($GUI_EVENT_CLOSE, _Exit)
Global $cLV = GUICtrlCreateListView('A|B|C', 10, 10, 400, 400)
For $i = 1 To 10
GUICtrlCreateListViewItem(Stringformat('%i-1|%i-2|%i-3|', $i, $i, $i), $cLV)
;~ GUICtrlSetOnEvent(-1, _ItemClick)
GUICtrlSetOnEvent(-1, _ItemClick_Native)
Next
Global $hLV = GUICtrlGetHandle($cLV)
GUISetState()
While True
Sleep(250)
WEnd
Func _ItemClick()
Local $iIndex = _GUICtrlListView_GetSelectedIndices($hLV)
Local $sItem = _
'Index: ' & $iIndex & @CRLF & _
'Item Ctrl-ID: ' & @GUI_CtrlId & @CRLF & _
'Item Text: ' & _GUICtrlListView_GetItemTextString($hLV, $iIndex) & @CRLF & _
'Column 1: ' & _GUICtrlListView_GetItemText($hLV, $iIndex, 0) & @CRLF & _
'Column 2: ' & _GUICtrlListView_GetItemText($hLV, $iIndex, 1) & @CRLF & _
'Column 3: ' & _GUICtrlListView_GetItemText($hLV, $iIndex, 2)
ConsoleWrite($sItem & @CRLF & @CRLF)
EndFunc
Func _ItemClick_Native()
Local $CtrlID = GUICtrlRead($cLV)
Local $sItem = GUICtrlRead($CtrlID)
Local $aSubItem = StringSplit($sItem, Opt('GUIDataSeparatorChar'), BitOR($STR_ENTIRESPLIT,$STR_NOCOUNT))
Local $sOut = _
'Index clicked: ' & GUICtrlSendMsg($cLV, $LVM_GETNEXTITEM, -1, $LVNI_SELECTED) & @CRLF & _
'Sub-Item clicked: ' & _SubItem_Clicked($cLV, $CtrlID) & @CRLF & _
'Item Ctrl-ID: ' & $CtrlID & @CRLF & _
'Item Text: ' & $sItem & @CRLF & _
'Column 1: ' & $aSubItem[0] & @CRLF & _
'Column 2: ' & $aSubItem[1] & @CRLF & _
'Column 3: ' & $aSubItem[2]
ConsoleWrite($sOut & @CRLF & @CRLF)
EndFunc
Func _SubItem_Clicked($_cLV, $_ID)
Local $xClicked = GUIGetCursorInfo()[0] ; -- clicked x-position --
Local $hHeader = HWnd(GUICtrlSendMsg($_cLV, $LVM_GETHEADER, 0, 0)) ; -- count columns --
; $HDM_GETITEMCOUNT = 0x1200
Local $aCall = DllCall("user32.dll", "lresult", "SendMessageW", "hwnd", $hHeader, "uint", 0x1200, "wparam", 0, "lparam", 0)
Local $iCol = $aCall[0]
Local $iXLeft = ControlGetPos($hLV, '', 0)[0], $iW
For $i = 0 To $iCol -1 ; -- comparison xClicked inside each column
$iW = GUICtrlSendMsg($_cLV, $LVM_GETCOLUMNWIDTH, $i, 0)
If $xClicked >= $iXLeft And $xClicked <= $iXLeft + $iW Then Return $i
$iXLeft += $iW
Next
Return -1
EndFunc
Func _Exit()
Exit
EndFunc
Alles anzeigen
Und mit der Listview-UDF kannst du jede erdenkliche Info rausziehen.
dass es nicht möglich ist die GUICtrlSetOnEvent zusätzlich dazu zu bringen die Links auszulesen und diese dann zu öffnen. Wahrscheinlich kommt sich das dann in die Quere?
Das GUICtrlSetOnEvent ruft eine von dir bestimmte Funktion auf. Was du in dieser Funktion alles veranstaltest, liegt doch letztlich nur an dir.
Der korrekte Pfad lautet: C:\Users\USERNAME\AppData\Local\AutoIt v3\SciTE
Dir geht es eher um die Einstellungen von SciTE. Die sind in den properties Dateien hinterlegt. Aber nicht die im Programmordner, sondern unter /AppData/Local - wenn ich das grad richtig im Kopf habe. Von dort den Zweig SciTE kopieren und du hast dieselben Settings.
inwiefern kann mir Strinformat bei solchen Aufggaben helfen?
Mit Stringformat kannst du Kommandozeilenbefehle genau in der Form schreiben, wie sie angefordert werden. Für die einzusetzenden Werte gibt es Platzhalter (die in diverser Form Formatierung erzeugen können) und deine Inhalte fügst du in ihrer Reihenfolge am Ende hinzu.
Simples Bsp.: