TCC pLes lugins sont des DLL écrites par l'utilisateur qui vous permettent d'écrire vos propres variables internes, fonctions de variables et commandes internes, et d'avoir TCC chargez-les au démarrage. Les noms de plugins remplaceront les noms existants, afin que vous puissiez étendre et/ou remplacer les variables et commandes internes. Quand TCC démarre, il chargera automatiquement tous les plugins dans le répertoire par défaut (le sous-répertoire PLUGINS\ dans le TCC répertoire d'installation). Les plugins seront chargés avant le fichier de démarrage (TCSTART) sont exécutés.

 

Vous pouvez spécifier un plugin particulier à exécuter en préfixant le nom de la fonction/variable/commande avec le nom du plugin et un $. Par exemple:

 

écho %_myplugin$variable

écho %@monplugin$func[abc]

monplugin$macommande

 

Les plugins peuvent être écrits dans n’importe quel langage capable de créer une DLL Windows. Le TCC Le SDK du plugin contient des exemples pour Visual C++ et Delphi. Le SDK est disponible sur notre site Web à l'adresse https://jpsoft.com/downloads/sdk/sdk.zip.

 

Plugins de frappe :

 

Vous pouvez également écrire des plugins de frappe qui seront appelés pour chaque frappe saisie sur la ligne de commande. Un plugin de frappe peut effectuer des actions lorsqu'une clé spécifique est saisie, ou même modifier la clé avant de la renvoyer au processeur de commandes. Les plugins KeyStroke sont appelés après les alias de clé et avant TCC recherche l'action par défaut pour cette clé.

 

V24+ uniquement : Si la valeur transmise dans "nKey" est 0, la clé n'est pas un caractère Unicode valide et le plugin doit analyser le clé psz chaîne pour obtenir le nom. Le nom sera passé au format :

 

Touche [Ctrl-][Alt-][Maj-]

 

Par exemple :

 

F12

Ctrl-F1

Ctrl-Alt-Gauche

Ctrl-Maj-F5

 

Le plugin de frappe peut modifier le nClé or clé psz valeur et la transmettre à TCC pour évaluer l'action par défaut pour la (nouvelle) valeur. Si nClé est != 0, TCC le traitera comme un caractère Unicode normal. Si nClé = 0, TCC évaluera clé psz pour un nom de clé valide.

 

Si le plugin a géré la clé et ne veut pas TCC pour faire autre chose, réglez nClé à 0 et clé psz à une chaîne vide (écrivez un nul dans le premier octet).

 

Syntaxe du plugin :

 

// Structure PluginInfo - renvoyée par le plugin en réponse à l'appel GetPluginInfo() du processeur de commandes

// Notez que les chaînes doivent toutes être Unicode ; si votre PlugIn est compilé pour ASCII, vous devrez utiliser

//   l'API MultiByteToWideChar pour convertir les chaînes avant de les renvoyer à TCC

typedef struct {

 TCHAR        *pszDll ;        // nom de la DLL

 TCHAR        *pszAuteur ;        // le nom de l'auteur

 TCHAR        *pszEmail ;        // email de l'auteur

 TCHAR        *pszWWW ;        // page web de l'auteur

 TCHAR        *pszDescription ;        // (brève) description du plugin

 TCHAR        *pszFunctions ;        // liste de fonctions délimitées par des virgules dans le

                 //   plugin (en tête _ pour les variables internes, @ pour

                 //   var funcs, * pour la fonction de frappe,

                 //   sinon c'est une commande)

 int        nMajeur ;        // version majeure du plugin #

 int        nMineur ;        // version mineure du plugin #

 int        nConstruire ;        // build du plugin #

 HMODULE        hModule ;        // descripteur du module

 TCHAR        *pszModule ;        // nom du module

} PLUGININFO, *LPPLUGININFO;

 

 

// structure transmise aux fonctions du plugin pour surveiller les frappes au clavier. UN

// La fonction de frappe peut porter n'importe quel nom, mais doit préfixer un

//   * à son nom dans la liste des fonctions (pszFunctions, ci-dessus).

//   Si le plug-in de frappe a géré la frappe et ne veut pas

//  pour le renvoyer à TCC, il doit définir nKey = 0 et pszKey sur une chaîne vide.

//   Le processeur de commandes appellera la fonction de frappe avec tous

//     paramètres définis sur 0 juste avant d'accepter la saisie pour chaque nouveau

// ligne de commande.

//  Les pointeurs de chaîne sont Unicode

typedef struct {

 int        nClé ;        // clé entrée

 int        nHomeRow ;        // début de la ligne

 int        nColonneAccueil ;        // début de la colonne

 int        nRangée ;        // ligne actuelle dans la fenêtre

 int        nColonne ;        // colonne actuelle dans la fenêtre

 LPTSTR        pszLine ;        // ligne de commande

 LPTSTR        pszCurrent ;        // pointeur vers la position dans la ligne

 int        fRedessiner ;        // si != 0, redessine la ligne

 LPTSTR        pszKey ;        // (v24+ uniquement) Nom ASCII de la clé (par exemple, "Ctrl-Alt-Home")

} KEYINFO, *LPKEYINFO;

 

__declspec(dllexport) BOOL WINAPI InitializePlugin( annuler );        // appelé par le processeur de commandes après avoir chargé tous les plugins

__declspec(dllexport) LPPLUGININFO WINAPI GetPluginInfo( HMODULE hModule );        // appelé par le processeur de commandes pour obtenir des informations du plugin, principalement pour les noms de fonctions et de commandes

__declspec(dllexport) BOOL WINAPI ShutdownPlugin( BOOL bEndProcess );        // appelé par le processeur de commandes lors de l'arrêt

 //   si bEndProcess = 0, seul le plugin est fermé

 //   si bEndProcess = 1, le processeur de commandes s'arrête

 

Les fonctions répertoriées dans "pszFunctions" et appelées par TCC doit être au format :

 

DLLExports INT WINAPI MyFunctionName( LPTSTR pszArguments );

 

Les noms de variables internes dans pszFunctions (et leurs fonctions correspondantes) doivent commencer par un trait de soulignement (« _ »).

 

Les noms de fonctions variables dans pszFunctions doivent commencer par un @ ; la fonction correspondante doit être préfixée par "f_". (Cela permet aux fonctions variables d'avoir le même nom que les commandes internes.)

 

Par exemple :

 

 pszFunctions = "inverse,@reverse"

 

 Entrer le nom "reverse" sur la ligne de commande invoquera la commande reverse()

 Entrer le nom "@reverse[]" sur la ligne de commande invoquera la fonction variable f_reverse()

 

Les noms de fonctions variables sont limités à un maximum de 31 caractères.

 

Les noms de commandes internes sont toute combinaison de caractères alphanumériques (12 caractères maximum).

 

Appel du plugin :

 

Pour les variables internes, pszArguments est vide (pour la sortie uniquement)

 

Pour les fonctions variables, pszArguments transmet le(s) argument(s) à la fonction plugin

 

Pour les commandes internes, pszArguments est la ligne de commande moins le nom de la commande interne

 

De retour du PlugIn :

 

Pour les variables internes et les fonctions variables, copiez la chaîne de résultat sur pszArguments. La longueur maximale de chaîne pour les variables internes et les fonctions de variables est de 32 Ko (32767 XNUMX caractères + caractère nul de fin).

 

Les variables internes n'ont pas de valeur de retour entière significative. Pour les fonctions variables, le retour entier peut être :

 

 0 = succès

 < 0 = échec ; message d'erreur déjà affiché par la fonction PlugIn

 > 0 = échec ; la valeur d'erreur doit être interprétée comme une erreur système et

                 affiché par 4NT / TC

 

Il existe une valeur de retour spéciale (0xFEDCBA98) qui indique à l'analyseur de supposer que le plugin a décidé de ne pas gérer la variable/fonction/commande. L'analyseur continue ensuite à rechercher une correspondance interne, puis externe. Notez que vous pouvez utiliser cette valeur de retour pour que votre plugin modifie la ligne de commande, puis la transmette à une variable/fonction/commande interne existante !

 

Pour les commandes internes, renvoie le résultat entier (tout ce qui reste dans pszArgument sera ignoré)

 

Gestion des exceptions:

 

TCC interceptera toutes les exceptions se produisant dans le plugin, pour empêcher le plugin de planter le processeur de commandes. Un message d'erreur s'affichera et le plugin renverra un code de sortie = 2.

 

Take Command Interface:

 

Ajout de nouvelles fonctions API pour manipuler l'historique des répertoires et l'historique des commandes :

 

 DirHistoryStart(void) - renvoie un pointeur vers le début de l'historique du répertoire

 

 HistoryStart(void) - renvoie un pointeur vers le début de l'historique des commandes

 

 DeleteFromHistory( LPTSTR lpszLine ) - supprime la ligne de l'historique des commandes (il s'agit d'un pointeur vers la ligne à supprimer, pas une ligne à faire correspondre !)

 

Si l'utilisateur tente d'afficher l'aide en ligne avec AIDE, F1 ou Ctrl-F1, TCC vérifiera une variable de plugin, une fonction variable ou une commande, et si le nom correspond, recherchera, chargera et exécutera une fonction "Aide" dans le plugin. Le plugin se charge d’afficher sa propre aide. La fonction "Aide" ne doit PAS apparaître dans la liste des fonctions délimitées par des virgules du plugin dans pszFunctions. L'aide doit renvoyer 1 si elle affiche de l'aide (ou si elle ne veut pas TCC pour essayer d'afficher l'aide sur ce sujet). La syntaxe de la fonction Aide du plugin doit être :

 

 Aide ( LPTSTR pszName );

 

If Take Command veut afficher le texte d'utilisation, TCC vérifiera une commande de plugin et, si le nom correspond, recherchera, chargera et exécutera une fonction "Utilisation" dans le plugin. Le plugin se charge d’afficher sa propre aide. La fonction "Utilisation" ne doit PAS apparaître dans la liste des fonctions délimitées par des virgules du plugin dans pszFunctions. Le plugin doit renvoyer une chaîne multiligne contenant la syntaxe de la commande. La première ligne (terminée par un \r) est affichée dans le Take Command barre d'état. La chaîne entière s'affiche sous forme d'info-bulle lorsque la souris survole le message de la barre d'état. L'utilisation doit renvoyer 1 si elle a écrit quelque chose dans pszUsage (ou si elle ne veut pas TCC pour essayer d'afficher une chaîne d'utilisation). La syntaxe de la fonction Usage dans le plugin doit être :

 

 Utilisation (LPTSTR pszName, LPTSTR pszUsage );

 

La fonction TakeCommandIPC permet aux plugins de communiquer avec le contrôleur Take Command exemple. La syntaxe est :

 

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

 

Les commandes prises en charge sont :

 

ACTIVER

 Activez la fenêtre dont le handle (sous forme de chaîne décimale) est dans pszArguments.

 

CDD

 Remplacez le dossier actuel dans l'Explorateur de fichiers par le nom du répertoire dans pszArguments.

 

COULEUR

 Changez la palette de couleurs de cette console. Take Command lit la palette de couleurs de la console et définit sa propre palette en conséquence.

 

DÉTACHER

 Détachez cette fenêtre de console (dont le PID est une chaîne décimale dans pszArguments) de Take Command.

 

FLASH

 Flashez la fenêtre de l'onglet. Le nombre et le type sont transmis pszArguments dans le même format que dans le FENÊTRE commander.

 

POLICE

 Modifiez la police de cette fenêtre d'onglet. pszArguments est une chaîne (délimitée par des espaces) ; voir TCFONT pour la syntaxe.

 

AIDE

 Affiche le Take Command aide pour le sujet dans pszArguments.

 

Hwnd

       Renvoie le Take Command poignée de fenêtre dans pszArguments.

 

VUE

 Renvoie le handle de la fenêtre de l'onglet actif dans pszArguments.

 

ENREGISTREUR

 Contrôlez l'enregistreur de macros. pszArguments doit pointer vers la ligne de commande à transmettre ENREGISTREUR.

 

RACCOURCI

 Renvoie le nom du raccourci qui a démarré Take Command in pszArguments.

 

CHOISI

 Renvoie le texte actuellement sélectionné dans pszArguments.

 

La START

 Attachez une fenêtre de console cachée dont le PID hexadécimal (sous forme de chaîne) est dans pszArguments.

 

STARTNA

 Attachez une fenêtre de console cachée dont le PID hexadécimal (sous forme de chaîne) est dans pszArguments mais ne le rendez pas actif.

 

BARRE D'ÉTAT

 Afficher le message dans pszArguments dans la barre d'état.

 

BARRE D'OUTILS TC

 Mettre à jour le Take Command barre d'outils à onglets avec l'icône BARRE D'OUTILS TC ligne de commande dans pszArguments.

 

TCFILTRE

 Renvoie le filtre sélectionné dans la fenêtre de l'Explorateur de fichiers dans pszArguments.

 

TCFILTER_CMD

 Définissez le filtre sélectionné dans la fenêtre Explorateur de fichiers sur la valeur dans pszArguments.

 

DOSSIER TCF

 Renvoie le dossier sélectionné dans le contrôle arborescence Dossiers dans pszArguments.

 

TCLISTVIEW

 Renvoie une liste délimitée par des espaces dans pszArguments des fichiers sélectionnés dans le contrôle d'affichage de liste de l'Explorateur.

 

TCTABACTIVE

 Renvoie 1 si l'onglet actuel est actif.

 

TCTAB

 Renvoie 1 si l'ID du processus dans pszArguments s'exécute dans une fenêtre TC

 

TCTABS

 Renvoie le nombre de Take Command fenêtres à onglets.

 

TCTABVISIBLE

 Renvoie 1 si l'onglet actuel est visible.

 

TRANS

 Ensemble Take Command transparence de la fenêtre à la valeur de chaîne (0-100) dans pszArguments.

 

UTILISATION

 Afficher le message d'utilisation dans pszArguments dans la barre d'état. La première ligne (jusqu'au premier CR) est affichée dans le

       barre d'état ; le reste est affiché dans l'info-bulle si vous passez la souris sur la barre d'état.

 

FENÊTRE

 Possède un certain nombre d'arguments (spécifiés sous forme de chaîne dans pszArguments) pour contrôler le Take Command fenêtre:

MAX

MIN

CACHER

RES

Plateau

TRANS=n

FLASH=n

DETACH n (où n est le PID du processus à détacher)

LE PLUS HAUT

PAS LE PLUS HAUT

TOP

BAS

 

COQUILLE

 Changez le Take Command répertoire de travail au nom du répertoire shell spécifié dans pszArguments.

 

RACCOURCI

 Remplacez le nom du raccourci de l'Explorateur spécifié dans pszArguments.

 

Achèvement du nom de fichier

 

Quand TCC effectue la complétion du nom de fichier ("tab"), il recherchera une fonction de plugin nommée TABCOMPLETION. Comme les scripts TABCOMPLETE, TABCOMPLETION vous permet de créer des fonctions de plugin à personnaliser TCCla complétion du nom de fichier. La syntaxe est :

 

INT COMPLÉTION DES ONGLETS WINAPI (Commande LPCTSTRArgument LPCTSTRIndice entierLigne de commande LPCTSTR);

 

Commande - le nom de la commande au début de la ligne de commande

 

Argument - l'argument actuel en cours d'évaluation

 

Index - le décalage dans la ligne de commande du début de l'argument

 

CommandLine - toute la ligne de commande (entre guillemets)

 

Lorsque la fonction du plugin se termine, elle doit renvoyer 0 si elle a traité l'achèvement et enregistrer le(s) résultat(s) dans la variable d'environnement TABCOMPLETIONRESULT. Si la fonction a plusieurs résultats d'achèvement, ils doivent être ajoutés à TABCOMPLETIONRESULT, séparés par un espace (et entre guillemets s'ils contiennent des espaces).

 

TCC examinera le contenu de TABCOMPLETIONRESULT ; s'il contient une seule valeur TCC l'insérera au point d'achèvement sur la ligne de commande. S'il y a plusieurs valeurs de retour, TCC affichera une fenêtre contextuelle pour la sélection (comme la fenêtre d'achèvement F7).

 

TCC essaiera d'abord de trouver un script de complétion de nom de fichier ; si aucun d’entre eux n’effectue la complétion demandée, TCC recherchera la fonction plugin.

 

Vous pouvez spécifier un plugin particulier à exécuter en préfixant le nom de la fonction/variable/commande avec le nom du plugin et un $. Par exemple:

 

écho %_myplugin$variable

écho %@monplugin$func[abc]

monplugin$macommande