Kannst Du so machen. ![]()
Beiträge von BugFix
-
-
bzw. "identifier".

-
Es war ein klassischer Copy&Paste Fehler.
Davor ist niemand gefeit.

Zumindest führt sowas zum tieferen Verständnis, ist ja auch was wert. Die Stunde also nicht wirklich verschenkt.

-
Für die engl. Übersetzung der Installationsanleitung brauche ich noch etwas.
Hehe, die deutsche Version in DeepL kopieren und das Ergebnis minimal anpassen (die Übersetzung dort ist sowohl inhaltlich als auch grammatikalisch fast perfekt). Auf jeden Fall spart es die Arbeit sich selbst durch die korrekte SPO Struktur zu kämpfen.

Sollen wir in diesem Thema/Thread weitermachen oder ein neues Thema (wäre eher für diese Variante)?
Neues Thema ist sinnvoll. Das hier war Entwicklung - Auslieferung ist ein anderer Schuh.

-
Eines noch:
Da nicht jeder mit der Funktionsweise von Property Dateien vertraut ist, halte ich es für sinnvoll zu erwähnen, dass mit dem Eintrag ("command.help.$(au3)=") der Standardhilfeeintrag überschrieben wird.
-
Advanced.help
Klangmäßig recht angenehm.

-
Auch wenn du im Off Topic Bereich postest, wäre eine Anfrage in einem PS Forum wohl zielführender.
-
-
Kann ich irgendwas für Dich testen?
Nein, passt schon.

Im Skript hole ich mir ja über die PID der gestarteten hh.exe das zugehörige Fensterhandle und setze damit (bzw dem Fenster Titel - Verhalten ist identisch) das Fenster auf maximiert. Egal in welcher Reihenfolge (Ol dann AD oder umgekehrt) - AD wird maximiert, OL nicht.
Aber daran hänge ich nicht meine Seligkeit. Wenn es bei euch funktioniert ist das prima.
-
Zu 1) Das können wir derzeit so lassen. Man ändert ja nicht laufend den Speicherort seiner UDFs. Derzeit läuft es ja und mehr fällt unter: Nice to have.
OK
Zu 2) Das wäre super, wenn man mehrere UDFs angeben könnte. Ausnahmen sind dann nicht notwendig, da ja alle Funktionen in beiden UDFs den selben Prefix haben.
Ist hiermit getan.
Zu 3) Ich habe auch schon an ein Auto-Skript gedacht. Da werde ich mich gleich dranmachen.
Zu 4) Da habe ich an ProcessClose gedacht. Das obige AutoIt-Skript killt einfach alle HH Prozesse bevor es einen neuen startet.
Und nun auch das AutoIt-Skript zum Hilfeaufruf. Dadurch poppt kein Cmd-Window auf. Die alternativen Hilfefenster schließe ich, wenn ein neuer Aufruf der Art erfolgt.
Es gibt dadurch Veränderungen in den properties, bitte genau beachten.
Code: alternate.help.properties
Alles anzeigen#--------------------------------------------------------------------------------------------------- #~ File: alternate.help.properties #~ #~ Save this file in the same folder as the "SciTEUser.properties" file. #~ This is normally: "C:\Users\_U_S_E_R_\AppData\Local\AutoIt v3\SciTE" #~ #~ Add this line to the beginning of the "SciTEUser.properties" file: import alternate.help #--------------------------------------------------------------------------------------------------- #~ We assume that each UDF function has a prefix like: "_" & "1 or more literals" & "_". #~ The search for the assigned help file follows this pattern. #~ If there is no match, the default Autoit3Help is called. #~ We need to override the au3-help-call # Commands to for Help F1 #~ command.help.$(au3)=$(SciteDefaultHome)\..\Autoit3Help.exe "$(CurrentWord)" #~ command.help.subsystem.$(au3)=2 # New call: --- SET YOUR PATH HERE --- #~ command.help.$(au3)=dofile C:\\CODE\\Lua\\alternate.help.lua #~ command.help.subsystem.$(au3)=3 command.help.$(au3)="C:\CODE\AutoIt\TEST\call.alternate.help.exe" "C:\CODE\Lua\alternate.help.lua" command.help.subsystem.$(au3)=2 #~ You can define a folder where all your help files will be stored. chm.mainfolder=C:\CODE\AutoIt\helpfiles #~ Define all paths as: "chm.path.prefix_value=Path". #~ The "prefix_value" defines the specific first characters of the UDF functions ("_AD_, _OL_"). #~ IMPORTANT! The path to the help file must never contain a space!! #~ Active Directory #~ If "chm.mainfolder" is used, you can apply it like this: chm.path._AD_=$(chm.mainfolder)\AD.chm #~ otherwise use the full path: #~ chm.path._AD_=C:\CODE\AutoIt\helpfiles\AD.chm udf.path._AD_=C:\CODE\AutoIt\FREMD_CODE\AD 1.6.0.0\AD.au3 #~ OutlookEX chm.path._OL_=$(chm.mainfolder)\OutlookEX.CHM udf.path._OL_=C:\CODE\AutoIt\FREMD_CODE\OutlookEX 1.7.0.0\OutlookEX.au3|C:\CODE\AutoIt\FREMD_CODE\OutlookEX 1.7.0.0\OutlookEX_Base.au3 #~ If you have a very long base path for multiple UDF, you can create a separate property just for that use for better readability: #~ udf.path.base=C:\CODE\AutoIt\FREMD_CODE\OutlookEX 1.7.0.0 #~ udf.path._OL_=$(udf.path.base)\OutlookEX.au3|$(udf.path.base)\OutlookEX_Base.au3Code: alternate.help.lua - v 0.2
Alles anzeigen-- TIME_STAMP 2021-11-26 13:52:54 v 0.2 --[[ History v 0.2 added: Multiple UDF files for the same prefix i.e.: "udf.path._OL_=C:\Code\AutoIt\udf\OutlookEX 1.7.0.0\OutlookEX.au3|C:\Code\AutoIt\udf\OutlookEX 1.7.0.0\OutlookEX_Base.au3" changed: This script is now called from an executable *.au3 file. Therefore, the resulting command line for calling the respective help is passed to the calling program for execution. ]] local tAU3Help = {} do tAU3Help.pattFunc = '([Ff][Uu][Nn][Cc]%s+[%w_]+%s-%b())' tAU3Help.pattFuncName = '([Ff][Uu][Nn][Cc]%s+)([%w_]+)(%s-%b())' tAU3Help.t_names = {} tAU3Help.Split = function(self, _s, _delim) if not _s:find(_delim) then return {_s} end local t_res = {} for v in (_s.._delim):gmatch("(.-)".._delim) do table.insert(t_res, v) end return t_res end tAU3Help.GetItemHelp = function(self, _item) local prefix = _item:match('^(_%w+_)') if prefix ~= nil then if self:Extract(prefix) then if self.t_names[_item:upper()] then self:CallHelp(prefix, _item) return end end end self:CallHelp('AU3', _item) end tAU3Help.Extract = function(self, _prefix) self.t_names = {} local func, fname, err, s, a, e = '', '', 0 local t_udfpath = self:Split(props['udf.path.'.._prefix:upper()], '|') if #t_udfpath == 0 then return false end for i=1, #t_udfpath do local fh = io.open(t_udfpath[i]) if fh == nil then err = err + 1 else s = fh:read('*a') fh:close() e = 1 while e do a, e, func = s:find(self.pattFunc , e) if a then _, _, _, fname = func:find(self.pattFuncName) if fname:sub(1, _prefix:len()):upper() == _prefix:upper() then self.t_names[fname:upper()] = true end end end end end if err == #t_udfpath then return false end return true end tAU3Help.CallHelp = function(self, _prefix, _item) local path, cmd = props['chm.path.'.._prefix:upper()] if _prefix == 'AU3' then cmd = '"'..props['autoit3dir']..'\\Autoit3Help.exe" "'.._item..'"' else cmd = 'mk:@MSITStore:'..path..'::/funcs/'.._item..'.htm' end props['extender.result'] = cmd -- Runtime property, is queried by the calling Au3 script. end end tAU3Help:GetItemHelp(props['CurrentWord'])Dieses ist das Aufrufskript, welches selbst erst das Lua-Skript startet und dann dessen Ergebnis (die Befehlszeile zum Aufruf) abfragt. Damit wird dann der erforderliche Hilfeaufruf gestartet.
Ich nutze dazu das Interface mit SciTE ("DirectorExtension"). Dadurch ergibt sich eine minimale Verzögerung, aber nicht wirklich störend.
Das Skript kompilieren und gemäß der Anweisung im Skript den Aufruf in die properties eintragen.
EDIT
Ich speichere jetzt die PID der aufgerufenen hh.exe in einer Property. Dadurch wird auch nur die von diesem Skript aufgerufenen PID gekillt und nicht evtl. eine später geöffnete hh.exe eines anderen Programms.
Etwas unklar ist mir, wieso ich die AD-Hilfe maximieren kann, jedoch nicht die OL-Hilfe. - Vielleicht fällt dir ja was auf?
AutoIt: call.alternate.help.au3
Alles anzeigen;-- TIME_STAMP 2021-11-26 17:22:14 v 0.1 #cs File: call.alternate.help.au3 compile as: call.alternate.help.exe Settings in your "alternate.help.properties": # Commands to for Help F1 command.help.$(au3)="FULL_PATH\call.alternate.help.exe" "FULL_PATH\alternate.help.lua" command.help.subsystem.$(au3)=2 #ce Global $g_SciTECmd GUIRegisterMsg(74, "MY_WM_COPYDATA") ; $WM_COPYDATA = 74 Global $sCmd, $au3, $param, $pos, $PID, $aWin, $hWnd, $last_hh = 0 If Not $CmdLine[0] Then ShellExecute(StringTrimRight(@AutoItExe, 11) & 'Autoit3Help.exe') Else $sCmd = _GetCmdLine($CmdLine[1]) If StringInStr($sCmd, '" "') Then $pos = StringInStr($sCmd, ' ', 0, -1) $au3 = StringLeft($sCmd, $pos -1) $param = StringTrimLeft($sCmd, $pos) ShellExecute($au3, $param) Else SendSciTE_Command("askproperty:hh.pid", 1) $last_hh = Number($g_SciTECmd) If ProcessExists($last_hh) Then ProcessClose($last_hh) $PID = ShellExecute(@WindowsDir & '\hh.exe', $sCmd) SendSciTE_Command("extender:dostring props['hh.pid'] = " & $PID) $aWin = WinList('[CLASS:HH Parent]') If $aWin[0][0] > 0 Then For $i = 1 To $aWin[0][0] If WinGetProcess($aWin[$i][0]) = $PID Then $hWnd = $aWin[$i][1] ExitLoop EndIf Next WinSetState($hWnd, '', @SW_MAXIMIZE) EndIf EndIf EndIf ; test results: ; "C:\Program Files (x86)\AutoIt3\Autoit3Help.exe" "ConsoleWrite" ; mk:@MSITStore:C:\CODE\AutoIt\helpfiles\OutlookEX.CHM::/funcs/_OL_ErrorNotify.htm ; mk:@MSITStore:C:\CODE\AutoIt\helpfiles\AD.chm::/funcs/_AD_DisableObject.htm Func _GetCmdLine($_sLuaFile) SendSciTE_Command("extender:dostring do dofile '" & StringReplace($_sLuaFile, '\', '/') & "' end", 1) SendSciTE_Command("askproperty:extender.result", 1) Return StringReplace($g_SciTECmd, '\\', '\') EndFunc ; by BugFix Func _GetHwndDirectorExtension() Local $hActive = WinGetHandle('[ACTIVE]') Local $PIDActive = WinGetProcess($hActive) Local $aExtension = WinList("DirectorExtension") Local $PIDExt For $i = 1 To $aExtension[0][0] $PIDExt = WinGetProcess($aExtension[$i][1]) If $PIDExt = $PIDActive Then Return $aExtension[$i][1] Next EndFunc ;==>_GetHwndDirectorExtension ; by Jos Func SendSciTE_Command($_sCmd, $Wait_For_Return_Info = 0) Local Static $My_Hwnd = GUICreate("AutoIt3-SciTE interface") ; Create GUI to receive SciTE info Local Static $My_Dec_Hwnd = Dec(StringTrimLeft($My_Hwnd, 2)) ; Convert my Gui Handle to decimal Local Const $SCI_GETLINE = 0x0869 ; 2153 Local Const $WM_COPYDATA = 0x004A ; 74 Local Const $WM_GETTEXT = 0x000D ; 13 Local Const $WM_GETTEXTLENGTH = 0xE224 ; 57892 ;~ Local $Scite_hwnd = WinGetHandle("DirectorExtension") ; Get SciTE DIrector Handle Local $Scite_hwnd = _GetHwndDirectorExtension() ; Get SciTE DIrector Handle $_sCmd = ":" & $My_Dec_Hwnd & ":" & $_sCmd ; Add dec my gui handle to commandline to tell SciTE where to send the return info Local $CmdStruct = DllStructCreate('CHAR[' & StringLen($_sCmd) + 1 & ']') DllStructSetData($CmdStruct, 1, $_sCmd) Local $COPYDATA = DllStructCreate('ULONG_PTR;DWORD;PTR') DllStructSetData($COPYDATA, 1, 1) DllStructSetData($COPYDATA, 2, StringLen($_sCmd) + 1) DllStructSetData($COPYDATA, 3, DllStructGetPtr($CmdStruct)) $g_SciTECmd = "" DllCall('User32.dll', 'None', 'SendMessage', _ 'HWnd', $Scite_hwnd, _ 'Int', $WM_COPYDATA, _ 'HWnd', $My_Hwnd, _ 'Ptr', DllStructGetPtr($COPYDATA)) ;~ GUIDelete($My_Hwnd) If $Wait_For_Return_Info Then For $x = 1 To 10 If $g_SciTECmd <> "" Then ExitLoop Sleep(20) Next $g_SciTECmd = StringTrimLeft($g_SciTECmd, StringLen(":" & $My_Dec_Hwnd & ":")) $g_SciTECmd = StringReplace($g_SciTECmd, "macro:stringinfo:", "") Return $g_SciTECmd EndIf EndFunc ;==>SendSciTE_Command Func MY_WM_COPYDATA($hWnd, $msg, $wParam, $lParam) Local $COPYDATA = DllStructCreate('ULONG_PTR;DWORD;PTR', $lParam) Local $SciTECmdLen = DllStructGetData($COPYDATA, 2) Local $CmdStruct = DllStructCreate('CHAR[255]', DllStructGetData($COPYDATA, 3)) $g_SciTECmd = StringLeft(DllStructGetData($CmdStruct, 1), $SciTECmdLen) EndFunc ;==>MY_WM_COPYDATA -
BTW: Habe gerade gesehen, dass Jos die AutoItHelp für SciTE "missbraucht". Vielleicht könnte man die auch für unsere CHMs verwenden und hätte somit das Instanzen-Problem erschlagen.
Das sollte sich erledigen, wenn ich als Main-Skript eine Exe nutze. Im SciTE - Command Aufruf wird dann die Laufzeitumgebung auf Windows (2) festgelegt und dann sollte das automatisch mit der Prozessverwaltung durch SciTE funktionieren.
-
Wie kann ich angeben, dass z.B. die AD.au3 im User Include Directory liegt (wie über SciTEConfig konfiguriert)?
Da die Lösung ja allgemeingültig sein soll, wäre das etwas tricky. Denn:
In der Property openpath.$(au3) sind die Includ-Pfade !! hinterlegt. Somit möglicherweise mehrere Ordner. Das wäre nicht so günstig zum Abfragen.
Ist dort nur ein Pfad, kannst du die Variable $(openpath.$(au3)) als Verweis auf diesen Pfad nutzen. Oder du schreibst halt den realen Pfad zur Property.
Fein wäre es, wenn man noch Ausnahmen definieren könnte.
Konkret habe ich die Outlook-Funktionen in 2 UDFs: OutlookEX.au3 und OutlookEX_Base.au3 (hier sind die Konstanten definiert und die Basisfunktionen wie _OL_Open etc.).
Für beide UDF-Dateien gilt der selbe Prefix (hier "_OL_") und sie sollen auf die selbe CHM_Datei zeigen.
In diesem Fall würde es genügen für die Ausnahmen die UDF nicht zu durchsuchen, sondern direkt die CHM aufzurufen. Nachteil: Die Ausnahmen müssten von Hand gepflegt werden
Alternative wäre, dass man für den Prefix (_OL_) mehere UDFs angeben kann. Vorteil: keine manuelle pflege, Nachteil: Etwas längere Laufzeit.OK, ich werde das mal einpflegen mit Zuweisbarkeit von mehreren UDF. (Ausnahmen wären dann nicht mehr erforderlich? - Falls doch kann ich ein Property der Form: chm.except._OL_=L_i_s_t exceptions erstellen.) Glaub mir, der Laufzeitaufwand ist absolut vernachlässigbar. Dateien parsen mit Lua ist im Vergleich zu AutoIt um mehrfachen Faktor 10 schneller!
Das cmd-Fenster bleibt beim Aufruf der AutoIt-Hilfe offen bis die Hilfe beendet wird. bei AD und OutlookEX popt das cmd_Fenster kurz auf und verschwindet dann gleich wieder.
Wenn man das noch abstellen könnte, dann wäre die Lösung perfekt!Ich weiß jetzt nicht welche SciTE-Version du nutzt. Ich selbst nutze noch eine recht alte Version, die es erlaubt Dll in Lua zu laden (Geht ja aktuell und auf lange Sicht nicht mehr).
Aber aus der History war ersichtlich, dass die Property create.hidden.console=1 eingeführt wurde, um das Aufpoppen der CMD-Windows zu unterbinden. Ich konnte das somit nicht selbst testen.
Beim Standardaufruf hatte ich "start /B" vergessen, das sollte schon mal dasselbe Verhalten, wie bei den alternativen Aufrufen erzwingen.Aber ich werde mal an einer Kombinationslösung Lua-AutoIt testen. Die Geschwindigkeitsvorteile des Lua-Skripts nutzen, aber den Hilfeaufruf aus einer Kompilierten AutoIt.exe ausführen, um das CMD-Window Problem zu umgehen.
Was mir noch aufgefallen ist: Wird im Skript die AutoIt-Hilfe mehrfach aufgerufen, so wird in der bestehenden Hilfe-Instanz der nächste Suchbegriff angezeigt.
Bei eigenen UDFs wird jedesmal eine neue Instanz des Hilfeprogramms gestartet.Da gilt dasselbe, wie zum vorigen Punkt. Das erfordert Prozessmanagement in Windows, was mit den Standard Lua-Bibliotheken nicht realisierbar ist. Mit Alien-Lua wäre es machbar, aber das erfordert wieder das Einbinden von Dll's... s.o.

Somit wird hier auch eine Kombination mit AutoIt erforderlich sein.
Das Skript sollte auch erstmal nur einen Funktionstest ermöglichen.
Wenn alle Funktionalitäten geklärt sind, werde ich die Umsetzung in "schön" in Angriff nehmen.

Also überleg, was dir noch wichtig erscheint. Wie gesagt: Daten parsen geht rasend schnell, also auch kein Problem, statt einer z.B. 6 Dateien zu durchsuchen.
-
-
Nun wäre es natürlich fein, wenn man diese Hilfe von SciTE aus aufrufen könnte - analog zur AutoIt-Hilfe.
So, ich habe das mal umgesetzt.
Die Liste von Funktionsnamen brauchen wir nicht extra führen, die ist in ein paar ms aus der UDF ausgelesen.
Der Standard-Hilfeaufruf wird umgeroutet über das Skript. Details sind in der alternate.help.properties beschrieben.
- Die alternate.help.lua abspeichern
- Die alternate.help.properties im Ordner C:\Users\_U_S_E_R_\AppData\Local\AutoIt v3\SciTE speichern (im Anhang habe ich .txt angehängt, damit die Datei hochgeladen werden konnte)
- Pfade in den Properties anpassen
Da UDF-Funktionsnamen immer nach dem Muster _Buchstaben_ & ... erstellt werden, frage ich dieses Prefix vom markierten Wort ab.
Gibt es für das Prefix keine gespeicherte Hilfedatei, wird der Standard-Hilfeaufruf durchgeführt. Gibt es eine Hilfedatei, wird aus der UDF ein Table aller Funktionsnamen erstellt. Ist der markierte Begriff einer dieser Funktionsnamen, wird die UDF-Hilfe mit dem markierten Begriff aufgerufen. Wird der markierte Begriff nicht im Table gefunden erfolgt ebenfalls der Aufruf der Standard-Hilfe.
Da hier Kommandozeilenaufrufe zum Einsatz kommen, ist es erforderlich (wie in der properties-Datei ersichtlich) die Property create.hidden.console=1 zu setzen.
So, nun probier mal schön.
Code: alternate.help.properties
Alles anzeigen#~ *** ANMERKUNG *** #~ Das Erfassen von Keywords ist nicht erforderlich. #~ Als Keywords werden die Funktionsnamen verwendet, und das Extrahieren der Namen in eine Liste dauert nur wenige ms. #~ ***************** #--------------------------------------------------------------------------------------------------- #~ File: alternate.help.properties #~ #~ Save this file in the same folder as the "SciTEUser.properties" file. #~ This is normally: "C:\Users\_U_S_E_R_\AppData\Local\AutoIt v3\SciTE" #~ #~ Add this line to the beginning of the "SciTEUser.properties" file: import alternate.help #--------------------------------------------------------------------------------------------------- #~ We assume that each UDF function has a prefix like: "_" & "1 or more literals" & "_". #~ The search for the assigned help file follows this pattern. #~ If there is no match, the default Autoit3Help is called. #~ We need to override the au3-help-call # Commands to for Help F1 #~ command.help.$(au3)=$(SciteDefaultHome)\..\Autoit3Help.exe "$(CurrentWord)" #~ command.help.subsystem.$(au3)=2 # New call: --- SET YOUR PATH HERE --- command.help.$(au3)=dofile C:\\CODE\\Lua\\alternate.help.lua command.help.subsystem.$(au3)=3 #~ If not already done, set this property to prevent a command window from opening create.hidden.console=1 #~ You can define a folder where all your help files will be stored. chm.mainfolder=C:\CODE\AutoIt\helpfiles #~ Define all paths as: "chm.path.prefix_value=Path". #~ The "prefix_value" defines the specific first characters of the UDF functions ("_AD_, _OL_"). #~ Active Directory #~ If "chm.mainfolder" is used, you can apply it like this: chm.path._AD_=$(chm.mainfolder)\AD.chm #~ otherwise use the full path: #~ chm.path._AD_=C:\CODE\AutoIt\helpfiles\AD.chm udf.path._AD_=C:\CODE\AutoIt\FREMD_CODE\AD 1.6.0.0\AD.au3 #~ OutlookEX chm.path._OL_=$(chm.mainfolder)\OutlookEX.CHM udf.path._OL_=C:\CODE\AutoIt\FREMD_CODE\OutlookEX 1.7.0.0\OutlookEX.au3Code: alternate.help.lua
Alles anzeigen-- TIME_STAMP 2021-11-24 17:18:17 v 0.1 local tAU3Help = {} do tAU3Help.pattFunc = '([Ff][Uu][Nn][Cc]%s+[%w_]+%s-%b())' tAU3Help.pattFuncName = '([Ff][Uu][Nn][Cc]%s+)([%w_]+)(%s-%b())' tAU3Help.t_names = {} tAU3Help.GetItemHelp = function(self, _item) local prefix = _item:match('^(_%w+_)') if prefix ~= nil then if self:Extract(prefix) then if self.t_names[_item:upper()] then self:CallHelp(prefix, _item) return end end end self:CallHelp('AU3', _item) end tAU3Help.Extract = function(self, _prefix) self.t_names = {} local e, func, fname, s, a = 1, '', '' local fh = io.open(props['udf.path.'.._prefix:upper()]) if fh == nil then return false end s = fh:read('*a') fh:close() while e do a, e, func = s:find(self.pattFunc , e) if a then _, _, _, fname = func:find(self.pattFuncName) if fname:sub(1, _prefix:len()):upper() == _prefix:upper() then self.t_names[fname:upper()] = true end end end return true end tAU3Help.CallHelp = function(self, _prefix, _item) local path, cmd = props['chm.path.'.._prefix:upper()] if _prefix == 'AU3' then cmd = '\""'..props['autoit3dir']..'\\Autoit3Help.exe" "'.._item..'"\"' else cmd = 'start /B hh.exe mk:@MSITStore:'..path..'::/funcs/'.._item..'.htm' end os.execute(cmd) end end tAU3Help:GetItemHelp(props['CurrentWord']) -
Die UDF umfasst nur Funktionen. Daher genügt es, wenn mit allen Worten, die mit "_AD_" beginnen, die AD.CHM aufgerufen wird.
Gut, ich werde mal ein Muster erstellen. Zusätzlich auch ein Skript zur automatisierten Keyword-Extrahierung aus der jeweiligen UDF.
-
Da es für SciTE gedacht ist, sollte man die Umsetzung auch zwingend in Lua machen. Das erleichtert die Interaktion mit dem Editor.
Demzufolge bieten sich hier auch Properties statt Ini-Datei an. Ist auch deutlich flexibler.
Das umzusetzen ist auch nicht allzu kompliziert.
Du kannst ja gerne mal eine Auswahl von Key-Words zusammenstellen mit einer Hilfedatei, die aufzurufen ist. (Aufruf, wie bekannt mit Suchbegriff als Parameter? - Am Besten, du lieferst mal eine Musterkommandozeile mit)
Edit:
Da am Ende der Hilfekette die Standard AutoIt-Hilfe steht, ist es natürlich sinnvoll, das Skript dann auch über F1 aufzurufen.
-
-
Du kannst doch bei Aufruf des jeweiligen Menüpunktes vor dem Ausführen abfragen, ob der angemeldete User Admin ist.
-
Diese Funktion habe ich 20 mal per copy paste zu stehen.... das einzige was sich ändert, ist die rot markierte Zahl
Dann verwende die Funktion mit dem sich ändernden Wert als Parameter:
AutoIt
Alles anzeigenFunc Click($_koord) MouseClick("left", 1372, $_koord, 1) sleep(Random(500,1000)) MouseClick("left", 522, 487, 1) sleep(Random(500,1000)) For $a = 1 To $H a() Next MouseClick("left", 522, 487, 1) sleep(Random(500,1000)) Send("{LEFT}") sleep(Random(300,600)) For $a = 1 To $R b() Next EndFunc ; Aufruf Click(123)Gibt es eine Möglichkeit aus dem STRG + C kopierten Wert, neue Variablen "rauszuziehen"?
Schau dir mal ClipGet an.
Und mit den String- Funktionen kannst du dann den Inhalt rausziehen.
-
Bei einer Fehlermeldung soll sie den Text in rot ausgeben, ansonsten in schwarz.
Und warum färbst du dann erst Rot und anschließend sofort wieder Schwarz??
AutoItGUICtrlSetColor( $idEditField, $COLOR_RED ) GUICtrlSetData( $idEditField, $sValue & @CRLF & $sString ) GUICtrlSetColor( $idEditField, $COLOR_BLACK )Der Befehl gilt für den gesamten Inhalt des Controls!
Falls du nur teilweise färben möchtest, musst du ein RichEdit verwenden - aber das ist nicht die leichteste Kost.