TCC pLugins sind vom Benutzer geschriebene DLLs, mit denen Sie Ihre eigenen internen Variablen, Variablenfunktionen und internen Befehle schreiben können TCC Laden Sie sie beim Start. Plugin-Namen überschreiben vorhandene Namen, sodass Sie interne Variablen und Befehle erweitern und/oder ersetzen können. Wann TCC startet, lädt es automatisch alle Plugins im Standardverzeichnis (das Unterverzeichnis PLUGINS\ im TCC Installationsverzeichnis). Die Plugins werden vor der Startdatei geladen (TCSTART) werden ausgeführt.

 

Sie können ein bestimmtes Plugin zur Ausführung angeben, indem Sie dem Funktions-/Variablen-/Befehlsnamen den Plugin-Namen und ein $ voranstellen. Zum Beispiel:

 

echo %_myplugin$variable

echo %@myplugin$func[abc]

meinplugin$mycommand

 

Plugins können in jeder Sprache geschrieben werden, die eine Windows-DLL erstellen kann. Der TCC Das Plugin-SDK enthält Beispiele für Visual C++ und Delphi. Das SDK ist auf unserer Website unter verfügbar https://jpsoft.com/downloads/sdk/sdk.zip.

 

Tastenanschlag-Plugins:

 

Sie können auch Tastenanschlag-Plugins schreiben, die bei jedem über die Befehlszeile eingegebenen Tastendruck aufgerufen werden. Ein Tastenanschlag-Plugin kann Aktionen ausführen, wenn eine bestimmte Taste eingegeben wird, oder sogar die Taste ändern, bevor sie an den Befehlsprozessor zurückgegeben wird. Tastenanschlag-Plugins werden nach und vor Tastenaliasen aufgerufen TCC sucht nach der Standardaktion für diesen Schlüssel.

 

Nur V24+: Wenn der in „nKey“ übergebene Wert 0 ist, ist der Schlüssel kein gültiges Unicode-Zeichen und das Plugin muss ihn analysieren pszKey Zeichenfolge, um den Namen zu erhalten. Der Name wird im Format übergeben:

 

[Strg-][Alt-][Umschalt-]Taste

 

Beispielsweise:

 

F12

Strg-F1

Strg-Alt-Links

Strg-Umschalt-F5

 

Das Tastenanschlag-Plugin kann das ändern nKey or pszKey Wert und geben Sie ihn zurück an TCC um die Standardaktion für den (neuen) Wert auszuwerten. Wenn nKey ist != 0, TCC behandelt es als normales Unicode-Zeichen. Wenn nKey = 0, TCC werde auswerten pszKey für einen gültigen Schlüsselnamen.

 

Wenn das Plugin den Schlüssel verarbeitet hat und nicht möchte TCC um noch etwas zu tun, einstellen nKey zu 0 und pszKey in eine leere Zeichenfolge (schreiben Sie eine Null in das erste Byte).

 

Plugin-Syntax:

 

// PluginInfo-Struktur – wird vom Plugin als Antwort auf den GetPluginInfo()-Aufruf vom Befehlsprozessor zurückgegeben

// Beachten Sie, dass die Zeichenfolgen alle Unicode sein sollten; Wenn Ihr PlugIn für ASCII kompiliert ist, müssen Sie es verwenden

//  die MultiByteToWideChar-API, um die Zeichenfolgen zu konvertieren, bevor sie an sie zurückgegeben werden TCC

typedef struct {

 TCHAR *pszDll;        // Name der DLL

 TCHAR *pszAuthor;        // Name des Autors

 TCHAR *pszEmail;        // E-Mail des Autors

 TCHAR *pszWWW;        // Webseite des Autors

 TCHAR *pszDescription;        // (kurze) Beschreibung des Plugins

 TCHAR *pszFunctions;        // durch Kommas getrennte Liste der Funktionen in der

                 //   Plugin (führendes _ für interne Variablen, @ für

                 //   var funcs, * für Tastendruckfunktion,

                 //  sonst ist es ein Befehl)

 int        nDur;        // Hauptversion des Plugins #

 int        nMoll;        // Nebenversion des Plugins #

 int        nBuild;        // Build-Nr. des Plugins

 HMODULE hModule;        // Modulhandle

 TCHAR *pszModule;        // Modulname

} PLUGININFO, *LPPLUGININFO;

 

 

// Struktur, die an Plugin-Funktionen übergeben wird, um Tastenanschläge zu überwachen. A

//   Tastendruckfunktion kann einen beliebigen Namen haben, muss aber ein voranstellen

//   * zu seinem Namen in der Funktionsliste (pszFunctions, oben).

//  Wenn das Tastenanschlag-Plugin den Tastenanschlag verarbeitet hat und nicht möchte

//  um es zurückzugeben TCC, sollte es nKey = 0 und pszKey auf eine leere Zeichenfolge setzen.

//  Der Befehlsprozessor ruft die Tastendruckfunktion mit allen auf

//     Parameter werden auf 0 gesetzt, kurz bevor die Eingabe für jeden neuen akzeptiert wird

// Befehlszeile.

//   Die String-Zeiger sind Unicode

typedef struct {

 int        nKey;        // Schlüssel eingegeben

 int        nHomeRow;        // Startreihe

 int        nHomeColumn;        // Startspalte

 int        nRow;        // aktuelle Zeile im Fenster

 int        nSpalte;        // aktuelle Spalte im Fenster

 LPTSTR pszLine;        // Befehlszeile

 LPTSTR pszCurrent;        // Zeiger auf Position in der Zeile

 int        fRedraw;        // wenn != 0, zeichne die Linie neu

 LPTSTR pszKey;        // (nur v24+) ASCII-Name der Taste (zum Beispiel „Strg-Alt-PosXNUMX“)

} KEYINFO, *LPKEYINFO;

 

__declspez(dllexport) BOOL WINAPI InitializePlugin( ungültig );        // Wird vom Befehlsprozessor aufgerufen, nachdem alle Plugins geladen wurden

__declspez(dllexport) LPPLUGININFO WINAPI GetPluginInfo( HMODULE hModule );        // Wird vom Befehlsprozessor aufgerufen, um Informationen vom Plugin abzurufen, hauptsächlich für die Namen von Funktionen und Befehlen

__declspez(dllexport) BOOL WINAPI ShutdownPlugin( BOOL bEndProcess );        // Wird beim Herunterfahren vom Befehlsprozessor aufgerufen

 //   wenn bEndProcess = 0, wird nur das Plugin geschlossen

 //   wenn bEndProcess = 1, wird der Befehlsprozessor heruntergefahren

 

Die in „pszFunctions“ aufgeführten und aufgerufenen Funktionen TCC muss im folgenden Format vorliegen:

 

DLLExports INT WINAPI MyFunctionName( LPTSTR pszArguments );

 

Interne Variablennamen in pszFunctions (und ihren entsprechenden Funktionen) müssen mit einem Unterstrich („_“) beginnen.

 

Variablenfunktionsnamen in pszFunctions müssen mit einem @ beginnen; der entsprechenden Funktion muss ein „f_“ vorangestellt werden. (Dadurch können Variablenfunktionen denselben Namen wie interne Befehle haben.)

 

Beispielsweise:

 

 pszFunctions = "reverse,@reverse"

 

 Wenn Sie in der Befehlszeile den Namen „reverse“ eingeben, wird der Befehl „reverse()“ aufgerufen.

 Durch Eingabe des Namens „@reverse[]“ in der Befehlszeile wird die Variablenfunktion f_reverse() aufgerufen.

 

Variablenfunktionsnamen sind auf maximal 31 Zeichen beschränkt.

 

Interne Befehlsnamen sind eine beliebige Kombination aus alphanumerischen Zeichen (maximal 12 Zeichen).

 

Aufruf des PlugIns:

 

Für interne Variablen ist pszArguments leer (nur für die Ausgabe).

 

Bei Variablenfunktionen übergibt pszArguments die Argumente an die Plugin-Funktion

 

Bei internen Befehlen ist pszArguments die Befehlszeile abzüglich des Namens des internen Befehls

 

Zurück vom PlugIn:

 

Kopieren Sie für interne Variablen und Variablenfunktionen die Ergebniszeichenfolge über pszArguments. Die maximale Zeichenfolgenlänge für interne Variablen und Variablenfunktionen beträgt 32 KB (32767 Zeichen + abschließendes Nullzeichen).

 

Interne Variablen haben keinen sinnvollen ganzzahligen Rückgabewert. Bei Variablenfunktionen kann die Ganzzahlrückgabe sein:

 

 0 = Erfolg

 < 0 = Fehler; Fehlermeldung, die bereits von der PlugIn-Funktion angezeigt wird

 > 0 = Fehler; Der Fehlerwert sollte als Systemfehler interpretiert werden und

                 angezeigt von 4NT / TC

 

Es gibt einen speziellen Rückgabewert (0xFEDCBA98), der den Parser anweist, davon auszugehen, dass das Plugin entschieden hat, die Variable/Funktion/den Befehl nicht zu verarbeiten. Der Parser sucht dann weiter nach einem passenden internen und dann externen. Beachten Sie, dass Sie diesen Rückgabewert verwenden können, damit Ihr Plugin die Befehlszeile ändert und ihn dann an eine vorhandene interne Variable/Funktion/Befehl weitergibt!

 

Geben Sie bei internen Befehlen das ganzzahlige Ergebnis zurück (alles, was in pszArgument übrig bleibt, wird ignoriert).

 

Ausnahmebehandlung:

 

TCC fängt alle im Plugin auftretenden Ausnahmen ab, um zu verhindern, dass das Plugin den Befehlsprozessor zum Absturz bringt. Es wird eine Fehlermeldung angezeigt und das Plugin gibt einen Exit-Code = 2 zurück.

 

Take Command Schnittstelle:

 

Einige neue API-Funktionen zum Bearbeiten des Verzeichnisverlaufs und des Befehlsverlaufs hinzugefügt:

 

 DirHistoryStart(void) – gibt einen Zeiger auf den Anfang des Verzeichnisverlaufs zurück

 

 HistoryStart(void) – gibt einen Zeiger auf den Anfang des Befehlsverlaufs zurück

 

 DeleteFromHistory( LPTSTR lpszLine ) – löscht die Zeile aus dem Befehlsverlauf (dies ist ein Zeiger auf die zu löschende Zeile, keine abzugleichende Zeile!)

 

Wenn der Benutzer versucht, die Online-Hilfe mit HILFE, F1 oder Strg-F1 anzuzeigen, TCC sucht nach einer Plugin-Variable, einer Variablenfunktion oder einem Befehl und sucht, wenn der Name übereinstimmt, nach einer „Hilfe“-Funktion im Plugin, lädt sie und führt sie aus. Das Plugin ist für die Anzeige seiner eigenen Hilfe verantwortlich. Die Funktion „Hilfe“ sollte NICHT in der durch Kommas getrennten Funktionsliste des Plugins in pszFunctions erscheinen. Help sollte 1 zurückgeben, wenn Hilfe angezeigt wird (oder wenn dies nicht der Fall ist). TCC um zu versuchen, Hilfe zu diesem Thema anzuzeigen). Die Syntax der Hilfefunktion im Plugin sollte sein:

 

 Help( LPTSTR pszName );

 

If Take Command möchte Verwendungstext anzeigen, TCC sucht nach einem Plugin-Befehl und sucht, wenn der Name übereinstimmt, nach einer „Usage“-Funktion im Plugin, lädt sie und führt sie aus. Das Plugin ist für die Anzeige seiner eigenen Hilfe verantwortlich. Die Funktion „Verwendung“ sollte NICHT in der durch Kommas getrennten Funktionsliste des Plugins in pszFunctions erscheinen. Das Plugin sollte eine mehrzeilige Zeichenfolge zurückgeben, die die Befehlssyntax enthält. Die erste Zeile (beendet durch ein \r) wird im angezeigt Take Command Statusleiste. Die gesamte Zeichenfolge wird als Tooltip-Popup angezeigt, wenn sich die Maus über der Statusleistenmeldung befindet. Usage sollte 1 zurückgeben, wenn es etwas an pszUsage geschrieben hat (oder wenn es nicht möchte). TCC um zu versuchen, eine Verwendungszeichenfolge anzuzeigen). Die Syntax der Usage-Funktion im Plugin sollte wie folgt lauten:

 

 Usage( LPTSTR pszName, LPTSTR pszUsage );

 

Die TakeCommandIPC-Funktion ermöglicht Plugins die Kommunikation mit der Steuerung Take Command Beispiel. Die Syntax lautet:

 

 __declspez(dllexport) int TakeCommandIPC( LPTSTR pszCommand, LPTSTR pszArguments );

 

Die unterstützten Befehle sind:

 

AKTIVIEREN

 Aktivieren Sie das Fenster, dessen Handle (als Dezimalzeichenfolge) enthalten ist pszArguments.

 

CSD

 Ändern Sie den aktuellen Ordner im Datei-Explorer in den Verzeichnisnamen in pszArguments.

 

FARBE

 Ändern Sie die Farbpalette für diese Konsole. Take Command liest die Farbpalette der Konsole und stellt ihre eigene Palette entsprechend ein.

 

ABLÖSEN

 Trennen Sie dieses Konsolenfenster (dessen PID eine Dezimalzeichenfolge ist). pszArguments) von Take Command.

 

BLINKEN

 Flashen Sie das Tab-Fenster. Anzahl und Typ werden übergeben pszArguments im gleichen Format wie im FENSTER Befehl.

 

FONT

 Ändern Sie die Schriftart für dieses Registerkartenfenster. pszArguments ist eine (durch Leerzeichen getrennte) Zeichenfolge; sehen TCFONT für die Syntax.

 

HILFE

 Zeigt die Take Command Hilfe zum Thema in pszArguments.

 

Hwnd

       Liefert die Take Command Fenstergriff einbauen pszArguments.

 

HVIEW

 Gibt das Handle des aktiven Registerkartenfensters zurück pszArguments.

 

RECORDER

 Steuern Sie den Makrorecorder. pszArguments sollte auf die Befehlszeile verweisen, an die übergeben werden soll RECORDER.

 

SHORTCUT

 Gibt den Namen der gestarteten Verknüpfung zurück Take Command in pszArguments.

 

AUSGEWÄHLT

 Gibt den aktuell ausgewählten Text zurück pszArguments.

 

Starte das Spiel

 Hängen Sie ein verstecktes Konsolenfenster an, dessen Hex-PID (als Zeichenfolge) enthalten ist pszArguments.

 

STARTNA

 Hängen Sie ein verstecktes Konsolenfenster an, dessen Hex-PID (als Zeichenfolge) enthalten ist pszArguments aber machen Sie es nicht aktiv.

 

STATUSLEISTE

 Zeigen Sie die Nachricht an pszArguments in der Statusleiste.

 

TCTOOLBAR

 Aktualisieren Sie die Take Command Tab-Symbolleiste mit dem TCTOOLBAR Befehlszeile in pszArguments.

 

TCFILTER

 Geben Sie den ausgewählten Filter im Datei-Explorer-Fenster zurück pszArguments.

 

TCFILTER_CMD

 Setzen Sie den ausgewählten Filter im Datei-Explorer-Fenster auf den Wert in pszArguments.

 

TCFOLDER

 Gibt den ausgewählten Ordner im Ordnerbaum-Steuerelement zurück pszArguments.

 

TCLISTVIEW

 Gibt eine durch Leerzeichen getrennte Liste zurück pszArguments der im Explorer-Listenansicht-Steuerelement ausgewählten Dateien.

 

TCTABACTIVE

 Gibt 1 zurück, wenn die aktuelle Registerkarte aktiv ist.

 

TCTAB

 Gibt 1 zurück, wenn die Prozess-ID in pszArguments läuft in einem TC-Fenster

 

TCTABS

 Gibt die Anzahl zurück Take Command Tab-Fenster.

 

TCTABVISIBLE

 Gibt 1 zurück, wenn die aktuelle Registerkarte sichtbar ist.

 

TRANS

 Festlegung von Take Command Fenstertransparenz auf den String-Wert (0-100) in pszArguments.

 

ANWENDUNG

 Zeigen Sie die Nutzungsmeldung an pszArguments in der Statusleiste. Die erste Zeile (bis zum ersten CR) wird im angezeigt

       Statusleiste; Der Rest wird im Tooltip angezeigt, wenn Sie mit der Maus über die Statusleiste fahren.

 

FENSTER

 Verfügt über eine Reihe von Argumenten (angegeben als Zeichenfolge in pszArguments), um die zu kontrollieren Take Command Fenster:

MAX

MIN

VERSTECKEN

RES

TABLETT

TRANS=n

FLASH=n

DETACH n (wobei n die PID des zu trennenden Prozesses ist)

OBERSTE

NOTOPMOST

TOP

UNTEN

 

WSHELL

 Ändern Sie die Take Command Arbeitsverzeichnis in den in angegebenen Shell-Verzeichnisnamen pszArguments.

 

WSHORTCUT

 Wechseln Sie zu dem in angegebenen Explorer-Verknüpfungsnamen pszArguments.

 

Vervollständigung des Dateinamens

 

Wann TCC die Vervollständigung des Dateinamens ("Tab") durchführt, wird nach einer Plugin-Funktion namens TABCOMPLETION gesucht. Wie TABCOMPLETE-Skripte ermöglicht Ihnen TABCOMPLETION die Erstellung von Plugin-Funktionen zur Anpassung TCCVervollständigung des Dateinamens. Die Syntax lautet:

 

INT WINAPI TABCOMPLETION(LPCTSTR-BefehlLPCTSTR-Argumentint-IndexLPCTSTR-Befehlszeile);

 

Befehl – ​​der Name des Befehls am Anfang der Befehlszeile

 

Argument – ​​das aktuelle Argument, das ausgewertet wird

 

Index – der Offset in der Befehlszeile vom Anfang von Argument

 

CommandLine – die gesamte Befehlszeile (doppelte Anführungszeichen)

 

Wenn die Plugin-Funktion beendet ist, sollte sie 0 zurückgeben, wenn sie den Abschluss verarbeitet hat, und die Ergebnisse in der Umgebungsvariablen TABCOMPLETIONRESULT speichern. Wenn die Funktion mehrere Vervollständigungsergebnisse hat, sollten diese zu TABCOMPLETIONRESULT hinzugefügt werden, getrennt durch ein Leerzeichen (und in doppelte Anführungszeichen gesetzt, wenn sie Leerzeichen enthalten).

 

TCC prüft den Inhalt von TABCOMPLETIONRESULT; wenn es einen einzelnen Wert enthält TCC fügt es am Abschlusspunkt in der Befehlszeile ein. Wenn es mehrere Rückgabewerte gibt, TCC zeigt ein Popup-Fenster zur Auswahl an (wie das F7-Abschlussfenster).

 

TCC wird zunächst versuchen, ein Skript zur Dateinamenvervollständigung zu finden; wenn keiner von ihnen den geforderten Abschluss erbringt, TCC wird nach der Plugin-Funktion suchen.

 

Sie können ein bestimmtes Plugin zur Ausführung angeben, indem Sie dem Funktions-/Variablen-/Befehlsnamen den Plugin-Namen und ein $ voranstellen. Zum Beispiel:

 

echo %_myplugin$variable

echo %@myplugin$func[abc]

meinplugin$mycommand