# global 库模块帮助文档

## ide 成员列表 <a id="ide" href="#ide">&#x23;</a>

aardio 开发环境扩展支持库,仅适用于编写开发环境插件,  
需要使用 import ide 语句导入才能使用,  

import ide作为程序第一个import语句时，插件在IDE进程内以线程模式运行,  
否则插件在IDE进程外以独立进程模式运行，请优先使用独立进程模式

### ide.compile() <a id="ide.compile" href="#ide.compile">&#x23;</a>
编译当前视图源码;

### ide.createProcess <a id="ide.createProcess" href="#ide.createProcess">&#x23;</a>
创建运行 aardio 代码的新进程。

### ide.createProcess(代码文件路径,代码,动词,命令行参数...) <a id="ide.createProcess" href="#ide.createProcess">&#x23;</a>
在IDE中创建进程启动参数 @1 或参数 @2 指定的代码。  
动词参数可省略，可选值例如 open,runas 等。  

可选指定一个或多个命令行参数（字符串或表）。  
命令行参数使用  string.args.join 合并。  
代码中用 _ARGV 接收解析后的参数。  
返回进程 ID

### ide.createProcess(代码文件路径,代码,动词,父窗口句柄,命令行参数...) <a id="ide.createProcess" href="#ide.createProcess">&#x23;</a>
在IDE中创建进程启动参数 @1 或参数 @2 指定的代码。  
动词参数可省略，可选值例如 open,runas 等。  
参数 @4 指定父窗口或父窗口句柄，在运行代码中用 ... 参数接收窗口句柄。  

可选指定一个或多个命令行参数（字符串或表）。  
命令行参数使用  string.args.join 合并。  
代码中用 _ARGV 接收解析后的参数。  
返回进程 ID

### ide.createProcess(代码文件路径,全局变量表,动词,命令行参数...) <a id="ide.createProcess" href="#ide.createProcess">&#x23;</a>
在IDE中创建进程启动参数 @1 指定的代码文件。  
参数@2用一个表（table）参数指定全局变量或常量。  
动词参数可省略，可选值例如 open,runas 等。  

可选指定一个或多个命令行参数（字符串或表）。  
命令行参数使用  string.args.join 合并。  
代码中用 _ARGV 接收解析后的参数。  
返回进程 ID

### ide.createProcessEx(应用根目录,应用图标路径,代码文件路径,代码,动词,父窗口句柄,命令行参数) <a id="ide.createProcessEx" href="#ide.createProcessEx">&#x23;</a>
创建进程。  
可自定义应用根目录，应用图标路径。命令行参数只能是单个字符串。  
其他参数用法与 ide.createProcess 相同。

### ide.createThread("字符串参数") <a id="ide.createThread" href="#ide.createThread">&#x23;</a>
运行指定 aardio 文件。  
参数指定 aardio 文件路径。  
为避免影响开发环境主进程，尽量不要使用这个函数。  
更好的选择是改用 ide.createProcess 函数。

### ide.external <a id="ide.external" href="#ide.external">&#x23;</a>
如果此属性为 true 则表示：  
当前进程是由外部 EXE 而不是 aardio 开发环境启动，  
但当前线程的应用程序基准目录设置为了 aardio 开发环境根目录。  
此时对 ide 库的调用将会被转发到 aardio 开发环境执行。

### ide.getActiveCode() <a id="ide.getActiveCode" href="#ide.getActiveCode">&#x23;</a>
如果当前打开的是源码或窗体设计器,返回正在编辑的源代码,  
失败返回null

### ide.getActiveCodeEditor() <a id="ide.getActiveCodeEditor" href="#ide.getActiveCodeEditor">&#x23;</a>
返回当前代码编辑器控件  

[返回对象:editObject](https://www.aardio.com/zh-cn/docs/library-reference/win/ui/ctrl/edit.html#editObject)

### ide.getActiveCodeEditorHwnd() <a id="ide.getActiveCodeEditorHwnd" href="#ide.getActiveCodeEditorHwnd">&#x23;</a>
返回当前代码编辑器控件句柄

### ide.getActiveDocPath() <a id="ide.getActiveDocPath" href="#ide.getActiveDocPath">&#x23;</a>
获取活动文档路径,  
如果文档未保存为文件,则返回值为空

### ide.getActiveForm() <a id="ide.getActiveForm" href="#ide.getActiveForm">&#x23;</a>
返回当前的文档窗口是否窗体设计器

### ide.getActiveViewHwnd() <a id="ide.getActiveViewHwnd" href="#ide.getActiveViewHwnd">&#x23;</a>
获取活动视图句柄  
其父窗口为MDI子窗口,子窗口为编辑器窗口  
在IDE进程内运行时第二个返回值为当前文档路径

### ide.getConfig("字符串参数") <a id="ide.getConfig" href="#ide.getConfig">&#x23;</a>
返回IDE配置文件 ("/Config/USE.CFG") 指定字段值,  
返回值为字符串,失败返回空字符串

### ide.getControlParam(控件名) <a id="ide.getControlParam" href="#ide.getControlParam">&#x23;</a>
获取控件参数,  
参数中的font属性作为::LOGFONT的参数才能转换为字体对象

### ide.getExtLibs() <a id="ide.getExtLibs" href="#ide.getExtLibs">&#x23;</a>
返回已安装的扩展库列表

### ide.getMainHwnd() <a id="ide.getMainHwnd" href="#ide.getMainHwnd">&#x23;</a>
获取IDE顶层主窗口句柄

### ide.getProjectDir() <a id="ide.getProjectDir" href="#ide.getProjectDir">&#x23;</a>
获取当前工程所在目录,  
如果未打开工程,返回空字符串

### ide.getProjectIcon() <a id="ide.getProjectIcon" href="#ide.getProjectIcon">&#x23;</a>
返回工程图标路径。

### ide.getProjectMainFile() <a id="ide.getProjectMainFile" href="#ide.getProjectMainFile">&#x23;</a>
工程启动代码文件路径

### ide.getProjectPath() <a id="ide.getProjectPath" href="#ide.getProjectPath">&#x23;</a>
获取当前工程路径,  
如果未打开工程,返回空字符串

### ide.getProjectProperty("publishDir") <a id="ide.getProjectProperty" href="#ide.getProjectProperty">&#x23;</a>
返回工程属性,  
失败返回空字符串

### ide.getPublisDir() <a id="ide.getPublisDir" href="#ide.getPublisDir">&#x23;</a>
返回发布目录

### ide.getPublishName() <a id="ide.getPublishName" href="#ide.getPublishName">&#x23;</a>
返回生成文件名

### ide.getPublishPath() <a id="ide.getPublishPath" href="#ide.getPublishPath">&#x23;</a>
返回生成文件路径

### ide.getSelectedControl() <a id="ide.getSelectedControl" href="#ide.getSelectedControl">&#x23;</a>
返回当前窗体设计器选中的控件名称,失败返回null

### ide.getVersion() <a id="ide.getVersion" href="#ide.getVersion">&#x23;</a>

```aardio
major,minor,build = ide.getVersion();
```

### ide.gotoLine() <a id="ide.gotoLine" href="#ide.gotoLine">&#x23;</a>
跳转到参数指定的代码行

### ide.insertCode() <a id="ide.insertCode" href="#ide.insertCode">&#x23;</a>
在当前代码编辑器光标位置插入代码,  
支持智能提示模板语法,自动插入新行,自动缩进,  
并将双下划线转换为光标位置,其后的块注释显示为汽泡提示。  
成功返回true

### ide.installLib <a id="ide.installLib" href="#ide.installLib">&#x23;</a>
安装远程扩展库

### ide.installLib(libName,libUrl,askTitle) <a id="ide.installLib" href="#ide.installLib">&#x23;</a>
参数@libName指定扩展库名称,  
参数@libUrl可选,可指定 *.tar.lzma 格式安装包 或 *.aardio 格式库文件地址,  
*.tar.lzma 格式安装包请使用「工具 / 开发环境 / 扩展库发布工具」生成,  
参数@askTitle可选,用于指定安装询问对话框标题,省略则直接安装  

如果不使用@libUrl参数指定网址，自官方扩展库查找高于已安装版本的安装包。  
而指定@libUrl参数时总是重新安装扩展库

### ide.isInProject() <a id="ide.isInProject" href="#ide.isInProject">&#x23;</a>
检查参数 @1 指定的路径是否当前打开工程内的路径。  
如果参数不是字符串则直接返回 null ，否则返回布尔值。

### ide.killOnExit() <a id="ide.killOnExit" href="#ide.killOnExit">&#x23;</a>
IDE 进程退出时自动关闭参数 @1 指定进程 ID 的进程

### ide.libMan() <a id="ide.libMan" href="#ide.libMan">&#x23;</a>
打开库参考手册，并搜索参数 @1 指定的关键字

### ide.libPublish(libName,outDir) <a id="ide.libPublish" href="#ide.libPublish">&#x23;</a>
打开扩展库发布工具，自动打包与生成扩展库安装文件。  

- 发布参数 @libName 指定名称的库（例如 `process.aria2`）。  
@libName 也可以指定 `libName,autos.skills.skillsName`以打包相关的技能包，  
例如 `com.sldWorks,autos.skills.solidWorks`。  
- @可选用 @outDir 指定输出目录。  

成功返回生成的安装包路径，失败返回 null。

### ide.loadPrivateFont("字体路径") <a id="ide.loadPrivateFont" href="#ide.loadPrivateFont">&#x23;</a>
在开发环境中加载字体文件,  
使窗体设计器中的控件可以显示该字体

### ide.mdiActivate <a id="ide.mdiActivate" href="#ide.mdiActivate">&#x23;</a>
激活文档窗口

### ide.mdiActivate("标题","类名") <a id="ide.mdiActivate" href="#ide.mdiActivate">&#x23;</a>
激活窗口

### ide.mdiActivate(句柄) <a id="ide.mdiActivate" href="#ide.mdiActivate">&#x23;</a>
激活窗口

### ide.newDocument() <a id="ide.newDocument" href="#ide.newDocument">&#x23;</a>
在编辑器中新建 aardio 源码,可选在参数中指定源代码

### ide.newForm() <a id="ide.newForm" href="#ide.newForm">&#x23;</a>
在编辑器中新建新建窗体设计器,可选在参数中指定窗口源代码

### ide.newProject() <a id="ide.newProject" href="#ide.newProject">&#x23;</a>
打开新建工程向导

### ide.openCode(aardio代码) <a id="ide.openCode" href="#ide.openCode">&#x23;</a>
新建文档窗口并写入 aardio 代码，成功返回 true 。  
参数 @1 指定 aardio 代码

### ide.openDocument("/输入文件路径") <a id="ide.openDocument" href="#ide.openDocument">&#x23;</a>
打开 *.aardio 源文件、*.aproj 工程文件、*.md 文档。  

如果打开单个源码文件,此函数会等待操作完成（成功返回 true）。  
如果打开工程文件,此函数会立即返回并发送异步命令。  
发送后立即关闭发送线程可能导致异步命令发送失败。  
工程打开后会调用 ide.command 的 onProjectOpened 事件。  
如果用于打开 *.md 文件，则在文档浏览器中显示 Markdown 格式文档，  
支持 https://www.aardio.com/zh-cn/docs/ 协议的 URL ，例如： https://www.aardio.com/zh-cn/docs/language-reference/datatype/table/_.html

### ide.openProject("字符串参数") <a id="ide.openProject" href="#ide.openProject">&#x23;</a>
打开*.aproj 工程文件。  
此函数会立即返回并发送异步命令。  
发送后立即关闭发送线程可能导致异步命令发送失败。

### ide.processGroup() <a id="ide.processGroup" href="#ide.processGroup">&#x23;</a>
返回当前开发进程群组名,可在参数中指定后缀名  
该名字包含IDE主进程的进程ID，可用于process.command,thread.event等

### ide.processList() <a id="ide.processList" href="#ide.processList">&#x23;</a>
IDE启动的调试进程列表

### ide.projectIsOpened() <a id="ide.projectIsOpened" href="#ide.projectIsOpened">&#x23;</a>
返回当前是否已经打开工程

### ide.publish() <a id="ide.publish" href="#ide.publish">&#x23;</a>
编译当前工程生成exe文件

### ide.redrawCodeEditor() <a id="ide.redrawCodeEditor" href="#ide.redrawCodeEditor">&#x23;</a>
重新读入配色与字体设置,  
重绘代码编辑器窗口,  
成功返回 true

### ide.refreshStdLib() <a id="ide.refreshStdLib" href="#ide.refreshStdLib">&#x23;</a>
刷新标准库视图,  
并更新标准库智能提示数据

### ide.refreshUserLib() <a id="ide.refreshUserLib" href="#ide.refreshUserLib">&#x23;</a>
刷新当前工程用户库节点,  
并更新用户库智能提示数据

### ide.requestLibInfo("all") <a id="ide.requestLibInfo" href="#ide.requestLibInfo">&#x23;</a>
查询服务端扩展库信息

### ide.run() <a id="ide.run" href="#ide.run">&#x23;</a>
运行当前视图源码;

### ide.save() <a id="ide.save" href="#ide.save">&#x23;</a>
保存当前文档

### ide.saveAll() <a id="ide.saveAll" href="#ide.saveAll">&#x23;</a>
保存所有文档,并保存工程文件

### ide.setActiveCode() <a id="ide.setActiveCode" href="#ide.setActiveCode">&#x23;</a>
如果当前打开的是源码或窗体设计器,重新设置正在编辑的源代码,  
此函数会覆盖正在编辑的源码，且无法撤消，请谨慎使用,  
成功返回true,失败或当前编辑的不是源码文档或窗体设计器返回false

### ide.setConfig("字符串参数","字符串参数") <a id="ide.setConfig" href="#ide.setConfig">&#x23;</a>
修改IDE配置文件 ("/Config/USE.CFG") 指定字段值,  
参数必须都是字符串

### ide.setControlParam(控件名,参数表) <a id="ide.setControlParam" href="#ide.setControlParam">&#x23;</a>
更新控件参数,成功返回true，失败返回false

### ide.setProjectProperty("publishDir","字符串参数") <a id="ide.setProjectProperty" href="#ide.setProjectProperty">&#x23;</a>
设置工程属性,  
返回布尔值表示是否成功

### ide.setPublishName("输出文件名") <a id="ide.setPublishName" href="#ide.setPublishName">&#x23;</a>
插件可以使用此函数修改输出文件名  
因此所有插件请尽可能使用getPublishPath函数获取当前输出路径

### ide.setSelectedControl() <a id="ide.setSelectedControl" href="#ide.setSelectedControl">&#x23;</a>
在窗体设计器中选中指定名称的控件,  
并取消选中其他控件,  
成功返回true

### ide.show <a id="ide.show" href="#ide.show">&#x23;</a>
在 IDE 窗口的前面显示参数 @1 指定的窗口。  
此函数在显示前临时设置窗口的所有者窗口（owner window）为 IDE 主窗口，  
在显示窗口后再将所有者窗口设为空。

### ide.show(hwnd,flags) <a id="ide.show" href="#ide.show">&#x23;</a>
在 IDE 窗口的前面显示参数 @1 指定的窗口。  
参数 @1 指定窗口对象或窗口句柄。  
参数 @2 可选指定调用 win.show 的第 2 个选项参数，可使用 _SW 前缀常量。

### ide.showStatus(消息,进度) <a id="ide.showStatus" href="#ide.showStatus">&#x23;</a>
在IDE状态栏显示削息和进度  
参数@1使用字符串指定消息,  
参数@2使用数值指定进度  
所有参数可选  
不指定进度时重置进度为初始状态

### ide.startpage() <a id="ide.startpage" href="#ide.startpage">&#x23;</a>
切换到开始页

### ide.switchActiveForm（true) <a id="ide.switchActiveForm（true)" href="#ide.switchActiveForm（true)">&#x23;</a>
用于切换窗体设计器的视图,  
参数为true时切换到设计器视图,参数为false切换到源码视图,  
成功返回true

### ide.switchDesignView() <a id="ide.switchDesignView" href="#ide.switchDesignView">&#x23;</a>
切换当前窗体设计视图;

### ide.updateVersion() <a id="ide.updateVersion" href="#ide.updateVersion">&#x23;</a>
更新版本

### 自动完成常量
_IDE_ID_BUILD_COMPILE=0x8315  
_IDE_ID_BUILD_PUBLISH=0x8317  
_IDE_ID_BUILD_RUN=0x831D  
_IDE_ID_DESIGN_SWITCHTO=0x831A  
