TCC pLos lugins son archivos DLL escritos por el usuario que le permiten escribir sus propias variables internas, funciones variables y comandos internos, y tienen TCC cárguelos al inicio. Los nombres de los complementos anularán los nombres existentes, por lo que puede ampliar y/o reemplazar variables y comandos internos. Cuando TCC inicia, cargará automáticamente cualquier complemento en el directorio predeterminado (el subdirectorio PLUGINS\ en el TCC directorio de instalación). Los complementos se cargarán antes del archivo de inicio (TCINICIO) se ejecutan.

 

Puede especificar un complemento en particular para ejecutar anteponiendo el nombre de la función/variable/comando con el nombre del complemento y un $. Por ejemplo:

 

eco %_myplugin$variable

echo %@myplugin$func[abc]

miplugin$micomando

 

Los complementos se pueden escribir en cualquier idioma que pueda crear una DLL de Windows. El TCC El complemento SDK tiene ejemplos para Visual C++ y Delphi. El SDK está disponible en nuestro sitio web en https://jpsoft.com/downloads/sdk/sdk.zip.

 

Complementos de pulsación de teclas:

 

También puede escribir complementos de pulsación de teclas que se llamarán por cada pulsación de tecla ingresada en la línea de comando. Un complemento de pulsación de teclas puede realizar acciones cuando se ingresa una clave específica, o incluso cambiar la clave antes de devolverla al procesador de comandos. Los complementos de pulsaciones de teclas se llaman después de los alias de teclas y antes TCC busca la acción predeterminada para esa clave.

 

Solo V24+: Si el valor pasado en "nKey" es 0, la clave no es un carácter Unicode válido y el complemento necesita analizar el pszClave cadena para obtener el nombre. El nombre se pasará en el formato:

 

Tecla [Ctrl-][Alt-][Shift-]

 

Por ejemplo:

 

F12

Ctrl-f1

Ctrl-Alt-Izquierda

Ctrl-Mayús-F5

 

El complemento de pulsación de teclas puede modificar el nClave or pszClave valor y pasarlo de nuevo a TCC para evaluar la acción predeterminada para el (nuevo) valor. Si nClave es != 0, TCC lo tratará como un carácter Unicode normal. Si nClave = 0, TCC evaluará pszClave para obtener un nombre clave válido.

 

Si el complemento manejó la clave y no quiere TCC para hacer algo más, configure nClave a 0 y pszClave a una cadena vacía (escriba un valor nulo en el primer byte).

 

Sintaxis del complemento:

 

// Estructura PluginInfo: devuelta por el complemento en respuesta a la llamada GetPluginInfo() desde el procesador de comandos

// Tenga en cuenta que todas las cadenas deben ser Unicode; Si su complemento está compilado para ASCII, deberá utilizar

//   la API MultiByteToWideChar para convertir las cadenas antes de devolverlas a TCC

typedef struct {

 TCHAR *pszDll;        // nombre de la DLL

 TCHAR *pszAutor;        // nombre del autor

 TCHAR *pszCorreo electrónico;        // correo electrónico del autor

 TCHAR *pszWWW;        // página web del autor

 TCHAR        *pszDescripción;        // (breve) descripción del complemento

 TCHAR        *pszFunciones;        // lista de funciones delimitadas por comas en el

                 // complemento (inicial _ para vars internas, @ para

                 // var funcs, * para la función de pulsación de tecla,

                 //   de lo contrario es un comando)

 int        nMayor;        // versión principal del complemento #

 int        nMenor;        // versión menor del complemento #

 int        nConstruir;        // compilación del complemento #

 HMÓDULO        hMódulo;        // identificador del módulo

 TCHAR *pszModule;        // Nombre del módulo

} PLUGININFO, *LPPLUGININFO;

 

 

// estructura pasada a funciones de complemento para monitorear las pulsaciones de teclas. A

//   la función de pulsación de tecla puede tener cualquier nombre, pero debe anteponer un

//   * a su nombre en la lista de funciones (pszFunctions, arriba).

//   Si el complemento de pulsación de tecla manejó la pulsación de tecla y no quiere

//   para devolvérselo a TCC, debería establecer nKey = 0 y pszKey en una cadena vacía.

//   El procesador de comandos llamará a la función de pulsación de tecla con todos

//     parámetros establecidos en 0 justo antes de aceptar entradas para cada nuevo

// línea de comando.

//   Los punteros de cadena son Unicode

typedef struct {

 int        nClave;        // clave introducida

 int        nHomeRow;        // iniciar fila

 int        nColumnaInicio;        // columna de inicio

 int        nFila;        // fila actual en la ventana

 int        nColumna;        // columna actual en la ventana

 LPTSTR pszLine;        // línea de comando

 LPTSTR pszActual;        // puntero a la posición en la línea

 int        fRedibujar;        // si != 0, vuelve a dibujar la línea

 LPTSTR pszKey;        // (solo v24+) nombre ASCII de la clave (por ejemplo, "Ctrl-Alt-Inicio")

} INFORMACIÓN CLAVE, *LPCLAVEINFO;

 

__declspec(exportar dll) BOOL WINAPI InicializarPlugin( vacío );        // llamado por el procesador de comandos después de cargar todos los complementos

__declspec(exportar dll) LPPLUGININFO WINAPI GetPluginInfo( HMODULE hModule );        // llamado por el procesador de comandos para obtener información del complemento, principalmente para los nombres de funciones y comandos

__declspec(exportar dll) BOOL WINAPI ShutdownPlugin( BOOL bEndProcess );        // llamado por el procesador de comandos al apagar

 //   si bEndProcess = 0, solo se cierra el complemento

 //   si bEndProcess = 1, el procesador de comandos se está apagando

 

Las funciones enumeradas en "pszFunctions" y llamadas por TCC debe estar en el formato:

 

DLLExports INT WINAPI MyFunctionName( LPTSTR pszArguments );

 

Los nombres de las variables internas en pszFunctions (y sus funciones correspondientes) deben comenzar con un guión bajo ('_').

 

Los nombres de funciones variables en pszFunctions deben comenzar con @; la función correspondiente debe tener el prefijo "f_". (Esto permite que las funciones variables tengan el mismo nombre que los comandos internos).

 

Por ejemplo:

 

 pszFunctions = "inverso, @inverso"

 

 Al ingresar el nombre "reverse" en la línea de comando se invocará el comando reverse()

 Al ingresar el nombre "@reverse[]" en la línea de comando se invocará la función variable f_reverse()

 

Los nombres de funciones variables están limitados a un máximo de 31 caracteres.

 

Los nombres de los comandos internos son cualquier combinación de caracteres alfanuméricos (máximo 12 caracteres).

 

Llamando al complemento:

 

Para variables internas, pszArguments está vacío (solo para salida)

 

Para funciones variables, pszArguments pasa los argumentos a la función del complemento.

 

Para comandos internos, pszArguments es la línea de comando menos el nombre del comando interno

 

Volviendo del complemento:

 

Para variables internas y funciones variables, copie la cadena de resultado sobre pszArguments. La longitud máxima de cadena para variables internas y funciones de variables es 32 K (32767 caracteres + carácter nulo final).

 

Las variables internas no tienen un valor de retorno entero significativo. Para funciones variables, el retorno de números enteros puede ser:

 

 0 = éxito

 < 0 = fracaso; mensaje de error ya mostrado por la función PlugIn

 > 0 = fracaso; El valor de error debe interpretarse como un error del sistema y

                 mostrado por 4NT / TC

 

Hay un valor de retorno especial (0xFEDCBA98) que le dice al analizador que asuma que el complemento decidió no manejar la variable/función/comando. Luego, el analizador continúa buscando una coincidencia interna y luego externa. Tenga en cuenta que puede usar este valor de retorno para que su complemento modifique la línea de comando y luego la pase a una variable/función/comando interno existente.

 

Para comandos internos, devuelve el resultado entero (se ignorará todo lo que quede en pszArgument)

 

Manejo de excepciones:

 

TCC atrapará cualquier excepción que ocurra en el complemento, para evitar que el complemento bloquee el procesador de comandos. Se mostrará un mensaje de error y el complemento devolverá un código de salida = 2.

 

Take Command Interfaz:

 

Se agregaron algunas funciones API nuevas para manipular el historial del directorio y el historial de comandos:

 

 DirHistoryStart(void): devuelve un puntero al comienzo del historial del directorio

 

 HistoryStart(void): devuelve un puntero al comienzo del historial de comandos

 

 DeleteFromHistory( LPTSTR lpszLine ): elimina la línea del historial de comandos (¡este es un puntero a la línea que se eliminará, no una línea que debe coincidir!)

 

Si el usuario intenta mostrar ayuda en línea con AYUDA, F1 o Ctrl-F1, TCC comprobará si hay una variable del complemento, una función variable o un comando, y si el nombre coincide, buscará, cargará y ejecutará una función de "Ayuda" en el complemento. El complemento es responsable de mostrar su propia ayuda. La función "Ayuda" NO debería aparecer en la lista de funciones delimitadas por comas del complemento en pszFunctions. La ayuda debería devolver 1 si muestra ayuda (o si no quiere TCC para intentar mostrar ayuda para este tema). La sintaxis de la función de Ayuda en el complemento debe ser:

 

 Ayuda( LPTSTR pszName );

 

If Take Command quiere mostrar texto de uso, TCC buscará un comando de complemento y, si el nombre coincide, buscará, cargará y ejecutará una función de "Uso" en el complemento. El complemento es responsable de mostrar su propia ayuda. La función "Uso" NO debería aparecer en la lista de funciones delimitadas por comas del complemento en pszFunctions. El complemento debería devolver una cadena de varias líneas que contenga la sintaxis del comando. La primera línea (terminada por \r) se muestra en el Take Command barra de estado. La cadena completa se muestra como una ventana emergente de información sobre herramientas cuando el mouse pasa sobre el mensaje de la barra de estado. El uso debería devolver 1 si escribió algo en pszUsage (o si no quiere TCC para intentar mostrar una cadena de uso). La sintaxis de la función Uso en el complemento debe ser:

 

 Uso (LPTSTR pszName, LPTSTR pszUsage);

 

La función TakeCommandIPC permite que los complementos se comuniquen con el controlador Take Command instancia. La sintaxis es:

 

 __declspec(exportar dll) int TakeCommandIPC( LPTSTR pszCommand, LPTSTR pszArguments );

 

Los comandos admitidos son:

 

ACTIVAR

 Active la ventana cuyo identificador (como una cadena decimal) está en pszArgumentos.

 

CDS

 Cambie la carpeta actual en el Explorador de archivos al nombre del directorio en pszArgumentos.

 

COLOR

 Cambia la paleta de colores de esta consola. Take Command lee la paleta de colores de la consola y establece su propia paleta para que coincida.

 

DESPEGAR

 Separe esta ventana de consola (cuyo PID es una cadena decimal en pszArgumentos) de Take Command.

 

FLASH

 Muestra la ventana de pestañas. El recuento y el tipo se pasan pszArgumentos en el mismo formato que en el VENTANA mando.

 

FUENTE

 Cambie la fuente de esta ventana de pestaña. pszArgumentos es una cadena (delimitada por espacios); ver TCFONT para la sintaxis.

 

AYUDA

 Muestra el Take Command ayuda para el tema en pszArgumentos.

 

Hwnd

       Devuelve el Take Command manija de ventana en pszArgumentos.

 

HVIEW

 Devuelve el identificador de la ventana de la pestaña activa en pszArgumentos.

 

REGISTRADOR

 Controla la grabadora de macros. pszArgumentos debe apuntar a la línea de comando a pasar REGISTRADOR.

 

ATAJO

 Devuelve el nombre del acceso directo que comenzó Take Command in pszArgumentos.

 

SELECCIONADO

 Devuelve el texto actualmente seleccionado en pszArgumentos.

 

EMPEZAR

 Adjunte una ventana de consola oculta cuyo PID hexadecimal (como una cadena) esté en pszArgumentos.

 

STARTNA

 Adjunte una ventana de consola oculta cuyo PID hexadecimal (como una cadena) esté en pszArgumentos pero no lo actives.

 

BARRA DE ESTADO

 Mostrar el mensaje en pszArgumentos en la barra de estado.

 

BARRA DE HERRAMIENTAS

 Actualizar el Take Command barra de herramientas de pestañas con el BARRA DE HERRAMIENTAS línea de comando en pszArgumentos.

 

TCFILTRO

 Devuelve el filtro seleccionado en la ventana del Explorador de archivos en pszArgumentos.

 

TCFILTER_CMD

 Establezca el filtro seleccionado en la ventana del Explorador de archivos al valor en pszArgumentos.

 

carpeta tc

 Devuelve la carpeta seleccionada en el control del árbol de Carpetas en pszArgumentos.

 

TCLISTVIEW

 Devuelve una lista delimitada por espacios en pszArgumentos de los archivos seleccionados en el control de vista de lista del Explorador.

 

TCTABACTIVO

 Devuelve 1 si la pestaña actual está activa.

 

TCTAB

 Devuelve 1 si el ID del proceso en pszArgumentos se está ejecutando en una ventana TC

 

TCTABS

 Devuelve el número de Take Command ventanas de pestañas.

 

TCTABVISIBLE

 Devuelve 1 si la pestaña actual está visible.

 

TRANS

 Set Take Command transparencia de la ventana al valor de cadena (0-100) en pszArgumentos.

 

USO

 Mostrar el mensaje de uso en pszArgumentos en la barra de estado. La primera línea (hasta el primer CR) se muestra en la

       barra de estado; el resto se muestra en la información sobre herramientas si pasa el mouse sobre la barra de estado.

 

VENTANA

 Tiene varios argumentos (especificados como una cadena en pszArgumentos) para controlar el Take Command ventana:

MAX

MIN

ESCONDER

RES

BANDEJA

TRANS=n

DESTELLO=n

DETACH n (donde n es el PID del proceso a desconectar)

MÁS ALTO

NO MEJOR

ARRIBA

PARTE INFERIOR

 

WSHELL

 Cambie el Take Command directorio de trabajo al nombre del directorio de shell especificado en pszArgumentos.

 

ACCESO DIRECTO

 Cambie al nombre del acceso directo del Explorador especificado en pszArgumentos.

 

Completar nombre de archivo

 

Cuándo TCC está completando el nombre de archivo ("tab"), buscará una función de complemento llamada TABCOMPLETION. Al igual que los scripts TABCOMPLETE, TABCOMPLETION le permite crear funciones de complemento para personalizar TCCFinalización del nombre de archivo. La sintaxis es:

 

INT COMPLETACIÓN DE TABLAS DE WINAPI(Comando LPCTSTRArgumento LPCTSTRíndice enteroLínea de comando LPCTSTR);

 

Comando: el nombre del comando al principio de la línea de comando

 

Argumento: el argumento actual que se está evaluando.

 

Índice: el desplazamiento en la línea de comando del comienzo del argumento

 

CommandLine: toda la línea de comando (comillas dobles)

 

Cuando finaliza la función del complemento, debería devolver 0 si procesó la finalización y guardar los resultados en la variable de entorno TABCOMPLETIONRESULT. Si la función tiene varios resultados de finalización, deben agregarse a TABCOMPLETIONRESULT, separados por un espacio (y entre comillas dobles si contienen espacios en blanco).

 

TCC examinará el contenido de TABCOMPLETIONRESULT; si contiene un solo valor TCC lo insertará en el punto de finalización en la línea de comando. Si hay varios valores de retorno, TCC mostrará una ventana emergente para su selección (como la ventana de finalización F7).

 

TCC primero intentará encontrar un script para completar el nombre del archivo; si ninguno de ellos realiza la finalización solicitada, TCC Buscará la función del complemento.

 

Puede especificar un complemento en particular para ejecutar anteponiendo el nombre de la función/variable/comando con el nombre del complemento y un $. Por ejemplo:

 

eco %_myplugin$variable

echo %@myplugin$func[abc]

miplugin$micomando