当前位置: 首页 > news >正文

[ahk]如何载入Scite的会话Session文件

加载session文件的AutoHotkey代码:

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

存储session文件的AutoHotkey代码:

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

具体SendDirectorMsg接口参考下面文章的表格

SciTE Director Interface

Purpose.

Software development does not occur only at the single file level handled by SciTE. A developer will generally work on a group of related files together in the context of one project. Project manager functionality could be added to SciTE as it has to other editors but this would impose a particular view of how projects are to be managed including the format of project files. Instead, SciTE has an interface that can be used by project managers or similar applications to control SciTE. Any application that controls SciTE is referred to as a "Director".

The current Director interface only works on Windows and GTK/Linux. In the future, it should be possible to replace the low level interface and so make this interface available on other platforms.

There is currently one director application, Filerx, available.

This interface is implemented on top of the SciTE Extension Interface, in the file scite\win32\DirectorExtension.cxx.

Direct connection, broadcasting and explicit return addresses.

One application at a time is the director of SciTE, controlling SciTE as it wishes. To support other communications techniques applications may broadcast to all active director interfaces. When doing so, each message should contain an explicit return address where replies to the broadcast message will be sent.

Low level interface on Windows.

The Windows WM_COPYDATA message is used to transfer data between SciTE and a Director. The messages are sent between windows created by the two applications. SciTE uses a window that has no other purpose than to receive these messages. The lpData and cbData fields of the COPYDATASTRUCT are used to transfer a string between the two processes, with cbData holding the length of the string pointed to by lpData. The string does not have to be terminated with '\0'. The dwData should be 0.

Before messages can be sent from one application to the other, the window handle of the window to receive the message must be found. This is normally transferred when starting the other application as a command line parameter. Either application may start the other. SciTE makes its window handle available in the WindowID property and accepts a director.hwnd property as the window handle to which it sends data.

As an example of communicating the window handle, to install Filerx in the Tools menu of SciTE these properties could be used:

command.name.0.*=Project Editor

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

command.subsystem.0.*=2

In the opposite direction, Filerx can start up SciTE with a command line that specifies its window handle as well as the file it wants edited:

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

Once one application has the window handle of the other application, it should send its window handle to the other application using an identity message as described later. Then both sides are able to send messages.

To broadcast a message on Windows, the set of active director interfaces can be found by broadcasting the "SciTEDirectorInterface" message and seeing which windows reply with the same value as that message. Example broadcast code:

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

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

while (w) {

DWORD res = 0;

// Need time out to avoid hung applications

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

SMTO_NORMAL, 1000, &res);

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

// Replied with same SDI code so should

// understand SDI's version of WM_COPYDATA

::SendMessage(w,WM_COPYDATA,

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

}

w = ::GetWindow(w, GW_HWNDNEXT);

}

To advertise that a top level window supports the Director interface:

LRESULT PASCAL DirectorExtension_WndProc(HWND hWnd,

UINT iMessage, WPARAM wParam, LPARAM lParam) {

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

if (iMessage == SDI) {

return SDI;

}

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

}

Low level interface on GTK.

An input fifo for each application supporting the director interface located in the temporary directory (obtained through GLib g_get_tmp_dir() call), with a name using a pattern such as "/tmp/SciTE.<PID>.in". This allows enumerating all active director interfaces and also opening a specific interface when the fifo name has been communicated through some other means such as a command line argument or an identity: command.

High level interface.

Messages use C style escapes to represent control characters and ensure that only visible characters are transmitted apart from the use of '\n' to separate messages.

The string transmitted by the low level interface contains an optional return address surrounded by ':' characters, an action, a ':' character and an optional argument. The argument is often a file path. The ':' must be present even if there is no argument. For example, SciTE understands the message

open:c:\\os\\scintilla\\include\\Scintilla.iface

as a command to open the file "c:\os\scintilla\include\Scintilla.iface" just as if the user had performed this operation.

If the first character of the message is a ':' then up to the next ':' is a return address, so SciTE will reply to the message

:73658:askfilename:

by sending the filename being edited to the return address 73658 rather than to its director.

The actions understood by SciTE are:

askfilename:

Return the name of the file being edited.

askproperty:<key>

Return the value of a property.

close:

Close the current file.

closing:

Director is closing - SciTE closes if it was started by the director.

currentmacro:<string>

Set the current macro to name.

cwd:

Change the working directory.

enumproperties:dyn|local|user|base|embed

Enumerate all the properties in the argument set.

exportashtml:<path>

Save the document in HTML format as the indicated file.

exportasrtf:<path>

Save the document in RTF format as the indicated file.

exportaspdf:<path>

Save the document in PDF format as the indicated file.

exportaslatex:<path>

Save the document in LaTeX format as the indicated file.

exportasxml:<path>

Save the document in XML format as the indicated file.

extender:<command>

Call the extension interface with the given command.

find:<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.

相关文章:

[ahk]如何载入Scite的会话Session文件

加载session文件的AutoHotkey代码&#xff1a;oSciTE : ComObjActive("SciTE4AHK.Application") messageloadsession:d:\\ddd\\2023-2-15SciTE.session oSciTE.SendDirectorMsg(message)存储session文件的AutoHotkey代码&#xff1a;messagesavesession:d:\\ddd\\123…...

MyISAM和InnoDb的区别

MySQL 5.0以后的版本默认的存储引擎为InnoDb&#xff0c;之前是MyISAM。 现在说说两者的区别&#xff1a; 1.数据存储结构的不同 MyISAM存储文件&#xff1a;.MYD(存储表数据)&#xff0c;.MYI(存储表结构)&#xff0c;.FRM(存储表结构) InnoDb存储文件: .FRM(存储表结构)&am…...

K8s管理应用生命周期-Deployment篇

在k8s中部署应用程序流程 1、使用Deployment部署Java应用 kubectl create deployment web --imageXXX/java-demokubectl get deployment,pods 2、使用Service发布Pod kubectl expose deployment web --port80 --typeNodePort --target-port8080 --namewebkubectl get servic…...

类和对象(下)(二)

类和对象&#xff08;下&#xff09;&#xff08;二&#xff09;1.友元1.1友元函数1.2友元类2.内部类3.拷贝对象时的一些编译器优化&#xff08;vs2022&#xff09;&#x1f31f;&#x1f31f;hello&#xff0c;各位读者大大们你们好呀&#x1f31f;&#x1f31f; &#x1f680…...

MapBox-draw绘制插件的使用教程(含修改样式和方法封装)

mapbox-draw插件是官方推荐的用于支持在mapbox地图中绘制图形的插件库。好像并不是由官方编写的,但是官方觉得其好用就直接推荐大家也使用了,我用了2天感觉下来还是觉得很鸡肋。对于开发者来讲自由修改的程度不是很高。这篇文章简单说一下对于mapbox-draw的使用和修改。 第一…...

使用 ONLYOFFICE 转换 API 构建在线文档转换器

文档转换是非常常用、非常有价值的功能&#xff0c;可以帮助我们处理多种文档类型。ONLYOFFICE 编辑器可以轻松地将文档转换为多种格式。在这篇博文中&#xff0c;我们会向您展示&#xff0c;如何构建在 ONLYOFFICE 转换 API 上运行的在线转换器。 关于 ONLYOFFICE 转换 API 使…...

Kubernetes的负载均衡方案:MetalLB

私有云裸金属架构(这是相对云上环境来说,不是说无操作系统)上部署的 Kubernetes 集群,通常是无法使用 LoadBalancer 类型的 Service 的。因为 Kubernetes 本身没有为裸机群集提供网络负载均衡器的实现。 如果你的 Kubernetes 集群没有在公有云的 IaaS 平台(GCP,AWS,Azu…...

【项目】Vue3+TS CMS 基本搭建相关配置

&#x1f4ad;&#x1f4ad; ✨&#xff1a;Vue3 TS   &#x1f49f;&#xff1a;东非不开森的主页   &#x1f49c;: today beginning&#x1f49c;&#x1f49c;   &#x1f338;: 如有错误或不足之处&#xff0c;希望可以指正&#xff0c;非常感谢&#x1f609;   基本…...

ros2 dds

问题1: fastdds发布的类型&#xff0c;ros2接收不到 原因: 在QoS相互兼容情况下&#xff0c;无法通信是由于idl类型没有使用兼容ros2的格式。如用 ros2 topic list -t 查看时&#xff0c;会发现同一个topic有两个不同的类型&#xff0c;如DDS会显示&#xff1a;myclass::peo…...

chain33架构介绍

chain33架构介绍 Chain33构架主要分为五个层级&#xff1a;数据层、网络层、共识层、激励层及应用层。 应用层&#xff1a;兼容以太坊智能合约&#xff0c;支持发行代币、资产交易、钱包找回&#xff0c;hash锁定等原生能力&#xff0c;同时支持用户可扩展执行器&#xff08;…...

Lucene学习笔记

lucene结构 索引&#xff1a;概念上的一个表&#xff0c;现实体现就是一个文件目录&#xff0c;一个目录代表一个索引&#xff0c;也视作documents文档集合 文档&#xff1a;document&#xff0c;为索引中的一条数据&#xff0c;一个document可以拥有多个filed&#xff08;域&a…...

动态规划【Day01】| 669 · 换硬币、114 · 不同的路径、116 · 跳跃游戏

秘诀&#xff1a;确定状态转移方程初始条件和边界情况计算顺序 669 换硬币 669 换硬币 题目描述&#xff1a; 给出不同面额的硬币以及一个总金额. 写一个方法来计算给出的总金额可以换取的最少的硬币数量. 如果已有硬币的任意组合均无法与总金额面额相等, 那么返回 -1。 样…...

1.Hello Python

Python ​ Python 在网络爬虫、数据分析、AI、机器学习、Web开发、金融、运维、测试等多个领域都有不俗的表现&#xff0c;从来没有哪一种语言可以同时在这么多领域扎根。 Python基本语法 python关键字 ​ 关键字即保留字&#xff0c;和其他语言一样&#xff0c;这些关键字…...

C语言实例|编写C程序在控制台打印余弦曲线

C语言文章更新目录 C语言学习资源汇总&#xff0c;史上最全面总结&#xff0c;没有之一 C/C学习资源&#xff08;百度云盘链接&#xff09; 计算机二级资料&#xff08;过级专用&#xff09; C语言学习路线&#xff08;从入门到实战&#xff09; 编写C语言程序的7个步骤和编程…...

《Hadoop篇》------大数据及Hadoop入门

目录 一、大数据及Hadoop入门 1.1 单节点、分布式、集群 1.1.1 大数据的概念 1.1.2 大数据的本质 二、HDFS Shell命令 2.1、常用相关命令 2.2、上传文件 2.2.1、上传文件介绍 2.2.2上传文件操作 2.3、下载文件 2.4、删除文件 2.5、创建目录 2.6、查看文件系统 2.…...

TCP核心机制详解(三)

目录 前言&#xff1a; 滑动窗口 滑动窗口处理丢包问题 流量控制 拥塞控制 延时应答 捎带应答 面向字节流 异常情况 小结&#xff1a; 前言&#xff1a; 前两篇文章讲述了&#xff0c;TCP十种核心机制的前三种。这篇文章详细介绍其他的一些核心机制&#xff0c;让我们…...

最易上手的爬虫请求库:Requests核心功能速览(下)

上一个章节我们讲了如何快速使用Requests发送网络请求、处理URL参数和提取响应内容,这些是最基本的操作。 然而还有很多场景下,我们的网络请求更加复杂。比如我们必须要定制请求头来假装成浏览器,不然可能会被网站识别为机器并且被屏蔽;又比如我们需要在发送请求时以表单形…...

生产故障|Kafka ISR频繁伸缩引发性能急剧下降

生产故障&#xff5c;Kafka ISR频繁伸缩引发性能急剧下降-阿里云开发者社区 本文是笔者双十一系列第二弹&#xff0c;源于一个双十一期间一个让笔者猝不及防的生产故障&#xff0c;本文将详细剖析Kafka的副本机制&#xff0c;以及ISR频繁变更(扩张与伸缩)为什么会导致集群不可…...

c++终极螺旋丸:₍˄·͈༝·͈˄*₎◞ ̑̑“类与对象的结束“是结束也是开始

文章目录 前言一.构造函数中的初始化列表 拷贝对象时的一些编译器优化二.static成员三.友元四.内部类总结前言 前两期我们将类和对象的重点讲的差不多了&#xff0c;这一篇文章主要进行收尾工作将类和对象其他的知识点拉出来梳理一遍&#xff0c;并且补充前两篇没有讲过的…...

【Python--torch.nn.functional】F.normalize用法 + 代码说明

【Python–torch.nn.functional】F.normalize介绍 代码说明 文章目录【Python--torch.nn.functional】F.normalize介绍 代码说明1. 介绍2. 代码说明2.1 一维Tensor2.2 二维Tensor2.3 三维Tensor3. 总结1. 介绍 import torch.nn.functional as F F.normalize(input: Tensor, …...

shell脚本--常见案例

1、自动备份文件或目录 2、批量重命名文件 3、查找并删除指定名称的文件&#xff1a; 4、批量删除文件 5、查找并替换文件内容 6、批量创建文件 7、创建文件夹并移动文件 8、在文件夹中查找文件...

JavaScript 中的 ES|QL:利用 Apache Arrow 工具

作者&#xff1a;来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗&#xff1f;了解下一期 Elasticsearch Engineer 培训的时间吧&#xff01; Elasticsearch 拥有众多新功能&#xff0c;助你为自己…...

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)

CSI-2 协议详细解析 (一&#xff09; 1. CSI-2层定义&#xff08;CSI-2 Layer Definitions&#xff09; 分层结构 &#xff1a;CSI-2协议分为6层&#xff1a; 物理层&#xff08;PHY Layer&#xff09; &#xff1a; 定义电气特性、时钟机制和传输介质&#xff08;导线&#…...

Python爬虫实战:研究feedparser库相关技术

1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...

(二)原型模式

原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...

高防服务器能够抵御哪些网络攻击呢?

高防服务器作为一种有着高度防御能力的服务器&#xff0c;可以帮助网站应对分布式拒绝服务攻击&#xff0c;有效识别和清理一些恶意的网络流量&#xff0c;为用户提供安全且稳定的网络环境&#xff0c;那么&#xff0c;高防服务器一般都可以抵御哪些网络攻击呢&#xff1f;下面…...

Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换

目录 关键点 技术实现1 技术实现2 摘要&#xff1a; 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式&#xff08;自动驾驶、人工驾驶、远程驾驶、主动安全&#xff09;&#xff0c;并通过实时消息推送更新车…...

打手机检测算法AI智能分析网关V4守护公共/工业/医疗等多场景安全应用

一、方案背景​ 在现代生产与生活场景中&#xff0c;如工厂高危作业区、医院手术室、公共场景等&#xff0c;人员违规打手机的行为潜藏着巨大风险。传统依靠人工巡查的监管方式&#xff0c;存在效率低、覆盖面不足、判断主观性强等问题&#xff0c;难以满足对人员打手机行为精…...

「全栈技术解析」推客小程序系统开发:从架构设计到裂变增长的完整解决方案

在移动互联网营销竞争白热化的当下&#xff0c;推客小程序系统凭借其裂变传播、精准营销等特性&#xff0c;成为企业抢占市场的利器。本文将深度解析推客小程序系统开发的核心技术与实现路径&#xff0c;助力开发者打造具有市场竞争力的营销工具。​ 一、系统核心功能架构&…...

第八部分:阶段项目 6:构建 React 前端应用

现在&#xff0c;是时候将你学到的 React 基础知识付诸实践&#xff0c;构建一个简单的前端应用来模拟与后端 API 的交互了。在这个阶段&#xff0c;你可以先使用模拟数据&#xff0c;或者如果你的后端 API&#xff08;阶段项目 5&#xff09;已经搭建好&#xff0c;可以直接连…...