十六进制编辑器 中文十六进制编辑器
大家好,我是明说网络的小明同学。
上文讲到,我们对最近的爆款十六进制编辑器ImHex进行了编译,
ubuntu上面难道就没有一个好用的16进制编辑器吗? - 知乎
工具 | 老mac携Ubuntu20 编译爆款十六进制编辑器ImHex 指南
文中讲到ImHex的一个优点之一就是能够非常方便的增加窗口插件。
今天我们就来对ImHex添加一个窗口插件,熟悉ImHex 的窗口插件机制,以便于我们贡献自己的代码!
ImHex 通过插件管理器来管理窗口,甚至是其各种主窗口都是以插件(buildin)的形式加载到ImHex中的,像这样
那么我们怎么添加我们自己的插件呢?
话不多说,主要修改两个地方就可以新增加一个View插件了!
- 在相应的插件目录,编写新的插件功能
- CMakeLists.txt,让cmake生成相应的编译脚本
修改plugins目录下的example_cpp
我们直接修改,工程中给出的插件示例example_cpp。
如下,会有一些小修改
include <hex/plugin.hpp>
include <hex/ui/view.hpp>
include <hex/api/imhex_api.hpp>
include <hex/api/content_registry.hpp>
namespace hex::example
{
class ViewExample : public hex::View {
public:
ViewExample() : hex::View(&34;Example&34;) { }
~ViewExample() override { }
void drawContent() override {
ImGui::ShowDemoWindow();
// if (ImGui::Begin(&34;Example&34;)) {
// ImGui::TextUnformatted(&34;Custom plugin window&34;);
// }
// ImGui::End();
}
};
}
IMHEX_PLUGIN_SETUP(&34;Example C++&34;, &34;WerWolv&34;, &34;Example C++ plugin used as template for plugin devs&34;) {
using namespace hex::example;
hex::ContentRegistry::Views::add<ViewExample>();
}
我们增加了ImGui的示例窗口ImGui::ShowDemoWindow();
该插件`example_cpp`默认没有增加到我们的编译当中,下一步就是修改相应的CMakeLists.txt让其在编译时生成相应的插件
修改根目录文件CMakeLists.txt
在根目录中修改相应的内容
List plugin names here. Project name must match folder name
set(PLUGINS
builtin
windows
example_cpp <----只有这一条
)
增加一条example_cpp
这样,就能够生成新的插件了
原理:
cmake/build_helpers.cmake 文件中的createPackage会里边上述cmake变量`PLUGINS`,然后编译
重新编译
在`build`目录下,执行cmake --build .
等待编译完成
完成之后,如图,在build相应目录下,生成了相应的插件(`example_cpp.hexplug` )
效果
现在让我们看看我们的新插件吧!
启动ImHex,
发现多了一条新的插件`Example C++`
主窗口,发现view菜单中多了一条exmaple条目
以下就是我们新的插件窗口了,使用的是IMGUI的Demo窗口
http://github.com/origin/ocornut/imguigithub.com/origin/ocornut/imgui
打完收工!
关注小明不迷路!