如何编写 Photoshop Extension (8BX) 插件?

发布于 2024-08-19 04:39:10 字数 541 浏览 6 评论 0原文

Adobe Photoshop CS3/4 SDK 有很多过滤器、导入、导出等插件的示例,但我还没有找到任何说明如何编写 8BX 插件的内容。

原因是,我需要写一个是向 Photoshop 根工具栏添加一个新的下拉菜单(其中显示文件、编辑、图像...窗口、帮助下拉菜单)。我见过像 OneSoftware 这样的产品将 8BX 插件安装到 Adob​​e Photoshop CS3\Plug-Ins\Extensions 目录中,导致 PS 为 OneSoft 添加下拉菜单。这表明这是一个可以解决的问题:-)

我尝试更改 SDK 示例中的现有插件,但没有成功。具体来说,我修改了资源文件:

resource 'PiPL' (ResourceID, plugInName " PiPL", purgeable)
{
 {
  Kind { **Extension** },
  Name { plugInName "..." },
...

尽管使用了扩展类型,PS 从未加载插件。它也不会生成任何编译时或加载错误。

有人对如何做到这一点有任何想法吗?

The Adobe Photoshop CS3/4 SDK has a lot of examples for Filter, Import, Export, etc plugins but I haven't found anything that illustrates how to write a 8BX plugin.

The reason is, I need to write one is to add a new drop-down menu to the Photoshop root toolbar (where it displays File, Edit, Image ... Window. Help drop-down menus). I have seen a product like OneSoftware install an 8BX plugin into Adobe Photoshop CS3\Plug-Ins\Extensions directory that causes PS to add adrop down menu for OneSoft. That suggests this is a solvable problem :-)

I tried by changing an existing plugin in the SDK samples but no go. Specifically I modified the resource file:

resource 'PiPL' (ResourceID, plugInName " PiPL", purgeable)
{
 {
  Kind { **Extension** },
  Name { plugInName "..." },
...

Despite using the Extension Kind, PS never loads the plugin. It doesn't generate any compile-time or load error either.

Does anyone have any ideas on how to go about doing this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

各空 2024-08-26 04:39:10

我没有找到引用它的来源,但我知道 8BX API 不是公开的。 (我认为另一种插件类型也是不公开的)。有趣的是,非 Adob​​e 供应商发布了 8BX,这意味着 Adob​​e 确实拥有他们为某些合作伙伴共享的机密 API。

该 API 似乎非常特殊,可能需要了解 Adob​​e 代码内部工作原理的大量知识。

快速浏览一下 Photoshop 7.0 8BX 文件的反汇编,可以发现插件代码大致如下:

int EntryPoint1(int selector, ExtensionParamterBlock pb) {
    if (selector == ?) {
        // Show about dialog
    }
    else if (selector == ?) {
        pb.method1 = &method1_implementation;
        pb.method2 = &method2_implementation;
        pb.method3 = &method3_implementation;
        pb.method4 = &method4_implementation;
        ....
    }
}

我认为这些可重写方法中的大多数都非常技术性,因为 8BX 文件的主要功能似乎支持 CPU。但如果你说有一个 8BX 可以修改 GUI,那么我想这些可重写方法之一将允许你添加菜单条目。


在现代 Photoshop 中,有一个新的东西叫做“插件”(不要与插件类型过滤器/导入/等混淆)。我不知道它们是什么,但也许它们允许添加菜单点。

I don't find the source where it is quoted, but I know that the 8BX API is not public. (I think also another kind of plugin type is also not public). It is interesting to hear that a non-Adobe-Vendor publishes 8BX, which means that Adobe does have a confidential API which they do share for some partners.

The API seems to be very special and probably requires a lot of knowledge of the inner working of the Adobe code.

A quick look at disassembly of a Photoshop 7.0 8BX file shows that the plugin code is approximately:

int EntryPoint1(int selector, ExtensionParamterBlock pb) {
    if (selector == ?) {
        // Show about dialog
    }
    else if (selector == ?) {
        pb.method1 = &method1_implementation;
        pb.method2 = &method2_implementation;
        pb.method3 = &method3_implementation;
        pb.method4 = &method4_implementation;
        ....
    }
}

I thought that most of these overrideable methods are very technical, since the 8BX file's main functionality seems to support CPUs. But if you say there is an 8BX which modifies the GUI, then I guess one of these overrideable methods will let you add menu entries.


In modern photoshop there is a new thing called "Plug-ins" (not to be confused with the plugin-types Filter/Import/etc.). I don't know what they are about, but maybe they allow to add menu points.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文