十六进制编辑器 中文十六进制编辑器

时间:2023-04-28 15:42/span> 作者:tiger 分类: 新知 浏览:6612 评论:0

大家好,我是明说网络的小明同学。

上文讲到,我们对最近的爆款十六进制编辑器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

打完收工!

关注小明不迷路!

文章评论