[ahk] Como carregar o arquivo de sessão do Scite

Código AutoHotkey para carregar o arquivo da sessão:

oSciTE := ComObjActive("SciTE4AHK.Application")
message=loadsession:d:\\ddd\\2023-2-15SciTE.session
oSciTE.SendDirectorMsg(message)

Código AutoHotkey para armazenar arquivos de sessão:

message=savesession:d:\\ddd\\123.session
oSciTE.SendDirectorMsg(message)

Para a interface SendDirectorMsg específica, consulte a tabela no seguinte artigo

Propósito.

O desenvolvimento de software não ocorre apenas no nível de arquivo único tratado pela SciTE. Um desenvolvedor geralmente trabalhará em um grupo de arquivos relacionados juntos no contexto de um projeto. A funcionalidade do gerenciador de projetos poderia ser adicionada ao SciTE, assim como a outros editores, mas isso imporia uma visão particular de como os projetos devem ser gerenciados, incluindo o formato dos arquivos do projeto. Em vez disso, o SciTE possui uma interface que pode ser usada por gerentes de projeto ou aplicativos semelhantes para controlar o SciTE. Qualquer aplicativo que controle o SciTE é chamado de "Diretor".

A interface atual do Director só funciona em Windows e GTK/Linux. No futuro, deve ser possível substituir a interface de baixo nível e assim disponibilizar essa interface em outras plataformas.

Existe atualmente um aplicativo diretor, Filerx , disponível.

Essa interface é implementada sobre a Interface de extensão SciTE , no arquivo scite\win32\DirectorExtension.cxx.

Conexão direta, transmissão e endereços de retorno explícitos.

Um aplicativo por vez é o diretor da SciTE, controlando a SciTE como bem entender. Para suportar outras técnicas de comunicação, os aplicativos podem transmitir para todas as interfaces do diretor ativo. Ao fazer isso, cada mensagem deve conter um endereço de retorno explícito para onde serão enviadas as respostas à mensagem de broadcast.

Interface de baixo nível no Windows.

A mensagem Windows WM_COPYDATA é usada para transferir dados entre SciTE e um Director. As mensagens são enviadas entre janelas criadas pelos dois aplicativos. O SciTE usa uma janela que não tem outra finalidade senão receber essas mensagens. Os campos lpData e cbData do COPYDATASTRUCT são usados ​​para transferir uma string entre os dois processos, com cbData mantendo o comprimento da string apontada por lpData. A string não precisa ser terminada com '\0'. O dwData deve ser 0.

Antes que as mensagens possam ser enviadas de um aplicativo para outro, o identificador da janela para receber a mensagem deve ser encontrado. Isso normalmente é transferido ao iniciar o outro aplicativo como um parâmetro de linha de comando. Qualquer aplicativo pode iniciar o outro. O SciTE disponibiliza seu identificador de janela na propriedade WindowID e aceita uma propriedade director.hwnd como o identificador de janela para o qual envia dados.

Como exemplo de comunicação do identificador de janela, para instalar o Filerx no menu Ferramentas do SciTE, essas propriedades podem ser usadas:

command.name.0.*=Editor de projeto

command.0.*="C:\os\scite\bin\filerx.exe" "$(FileDir)" "$(WindowID)"

command.subsystem.0.*=2

Na direção oposta, o Filerx pode iniciar o SciTE com uma linha de comando que especifica seu identificador de janela, bem como o arquivo que deseja editar:

SciTE -director.hwnd=937846 c:\os\scite\src\SciTEBase.cxx

Uma vez que um aplicativo tenha o identificador de janela do outro aplicativo, ele deve enviar seu identificador de janela para o outro aplicativo usando uma mensagem de identidade conforme descrito posteriormente. Então, ambos os lados podem enviar mensagens.

Para transmitir uma mensagem no Windows, o conjunto de interfaces do diretor ativo pode ser encontrado transmitindo a mensagem "SciTEDirectorInterface" e vendo quais janelas respondem com o mesmo valor daquela mensagem. Exemplo de código de transmissão:

unsigned int SDI = :: RegisterWindowMessage ( "SciTEDirectorInterface" );

HWND w = :: GetWindow (:: GetDesktopWindow (), GW_CHILD );

enquanto ( w ) {

DWORD res = 0 ;

// Precisa de tempo limite para evitar aplicativos travados

:: SendMessageTimeout ( w , SDI , 0 , 0 ,

SMTO_NORMAL , 1000 , & res );

if ( res == static_cast< DWORD >( SDI )) {

// Respondido com o mesmo código SDI, então deveria

// entenda a versão SDI de WM_COPYDATA

:: SendMessage ( w , WM_COPYDATA ,

( UINT ) m_hWnd ,(long)& cds );

}

w = :: GetWindow ( w , GW_HWNDNEXT );

}

Para anunciar que uma janela de nível superior suporta a interface do Director:

LRESULT PASCAL DirectorExtension_WndProc ( HWND hWnd ,

UINT iMessage , WPARAM wParam , LPARAM lParam ) {

unsigned int SDI = :: RegisterWindowMessage ( "SciTEDirectorInterface" );

if ( iMessage == SDI ) {

retorno SDI ;

}

return :: DefWindowProc ( hWnd , iMessage , wParam , lParam );

}

Interface de baixo nível em GTK.

Um fifo de entrada para cada aplicativo que suporta a interface do diretor localizado no diretório temporário (obtido por meio da chamada GLib g_get_tmp_dir()), com um nome usando um padrão como "/tmp/SciTE.<PID>.in". Isso permite enumerar todas as interfaces ativas do diretor e também abrir uma interface específica quando o nome fifo tiver sido comunicado por algum outro meio, como um argumento de linha de comando ou um comando identity:.

Interface de alto nível.

As mensagens usam escapes de estilo C para representar caracteres de controle e garantir que apenas caracteres visíveis sejam transmitidos, além do uso de '\n' para mensagens separadas.

A string transmitida pela interface de baixo nível contém um endereço de retorno opcional cercado por caracteres ':', uma ação, um caractere ':' e um argumento opcional. O argumento geralmente é um caminho de arquivo. O ':' deve estar presente mesmo que não haja argumento. Por exemplo, SciTE entende a mensagem

open:c:\\os\\spark\\include\\spark.iface

como um comando para abrir o arquivo "c:\os\scintilla\include\Scintilla.iface" como se o usuário tivesse realizado esta operação.

Se o primeiro caractere da mensagem for um ':' então até o próximo ':' é um endereço de retorno, então o SciTE responderá à mensagem

:73658:pergunte nome do arquivo:

enviando o nome do arquivo que está sendo editado para o endereço de retorno 73658, em vez de para seu diretor.

As ações compreendidas pela SciTE são:

askfilename:

Retorna o nome do arquivo que está sendo editado.

askproperty:<chave>

Retorna o valor de uma propriedade.

fechar:

Feche o arquivo atual.

encerramento:

Diretor está fechando - SciTE fecha se foi iniciado pelo diretor.

macroatual:<string>

Defina a macro atual como nome.

cwd:

Altere o diretório de trabalho.

enumproperties:dyn|local|usuário|base|incorporar

Enumere todas as propriedades no conjunto de argumentos.

exportashtml:<caminho>

Salve o documento no formato HTML como o arquivo indicado.

exportasrtf:<caminho>

Salve o documento no formato RTF como o arquivo indicado.

exportaspdf:<caminho>

Salve o documento em formato PDF como o arquivo indicado.

exportaslatex:<caminho>

Salve o documento no formato LaTeX como o arquivo indicado.

exportasxml:<caminho>

Salve o documento no formato XML como o arquivo indicado.

extensor:<comando>

Chame a interface de extensão com o comando fornecido.

localizar:<string>

Search for a string, select and show it.

focus:<timeStamp>

On GTK bring this SciTE window to the front. The timeStamp is from the window manager and ensures that windows are only activated because of a user command. Has no effect on Windows as applications on Windows can only donate focus, not take focus.

goto:<lineNumber>[,<columnNumber>]

Move caret to a particular line and make it visible.

If there is a column number then select the word at that column number or move the caret there if no word is present.

identity:<hwndDirector>

Sets the director window handle to which SciTE sends messages. The argument is in decimal.

insert:<value>

Display the value in the editor pane replacing the selection.

loadsession:<path>

Load a session as given by the indicated file.

macrocommand:<command>

Execute a macro command. See the SciTE source code for the syntax of the command argument.

macroenable:<enable>

If enable, display menu commands in SciTE for recording and playing macros.

macrolist:<list>

Display a list for the user to choose from.

menucommand:<cmd>

Execute a menu command based on numeric ID.

open:<path>

Open the indicated file.

output:<value>

Display the value in the output pane replacing the selection.

property:<key>=<value>

Set a property to a value.

quit:

Shut down SciTE.

reloadproperties:

Reload properties from files.

replaceall:<search>\000<replace>

Replace all instances of the search string in the document with the replace string.

saveas:<path>

Save the document as the indicated file.

savesession:<path>

Save a session as given by the indicated file.

setdefaultcwd:

Change the working directory to somewhere reasonable and safe.

The actions sent by SciTE are:

closed:<path>

SciTE has closed the indicated file.

closing:

SciTE is closing.

dyn|local|user|base|embed:<key>=<value>

Set a property in a set to a value.

filename:<path>

The file being edited is path. This is the reply to the askfilename: command.

identity:<hwndSciTEReceiving>

SciTE indicates to the director the window handle to which it should send messages. The argument is in decimal.

macro:getlist

Retrieve the list of available macros which will be returned by the macrolist command.

macro:record:<details>

Start recording a macro. See the SciTE source code for the syntax of the details argument.

macro:run:<macroName>

Run the named macro.

macro:stoprecord

Stop recording a macro.

opened:<path>

SciTE has opened the indicated file.

switched:<path>

SciTE has switched buffers to the indicated file.

saved:<path>

SciTE has saved the indicated file.

In the future, more actions will be defined. Applications should ignore any actions that they do not understand.

Acho que você gosta

Origin blog.csdn.net/liuyukuan/article/details/129050524
Recomendado
Clasificación