【问题标题】:Pass message from javascript to application - Windows and Mac OSx - Lazarus将消息从 javascript 传递到应用程序 - Windows 和 Mac OSx - Lazarus
【发布时间】:2013-04-23 22:42:51
【问题描述】:

我需要一个 javascript 函数来触发在 Lazarus 中为 OSx 和 windows 开发的应用程序中的函数。我正在学习 Lazarus,我将自己描述为一个中等水平的初学者。我对javascript知之甚少。

据我了解,javascript 在沙盒中运行,因此无法直接访问应用程序。因此,我正在考虑使用某种从 javascript 到应用程序的 tcp 调用,传递一个参数,当接收到该参数时,将触发事件。这需要在 Windows 和 Mac 上都有效。理想情况下使用相同的组件/代码,但如果那是不可能的,那么我需要做什么。

我的问题是:

1) 这听起来像是正确的方法吗? 2) 如果确实如此 - 实现这一目标的最佳方式和组件是什么?

我一直在研究突触 - 但老实说,我有点迷失了我需要使用和阅读哪些组件来设置它。

所以本质上 - javascript 需要向我的应用程序发送一个参数,然后在收到它时采取行动。

如果您能提供帮助,请提前致谢。

【问题讨论】:

  • 您使用什么类型的服务器来生成您的页面?您是在使用 PHP、.NET 等还是只是在创建静态 HTML 页面?
  • 抱歉 - 我不清楚。我没有生成任何页面。我实际上在做的是试图触发我的应用程序从 adobe photoshop 中执行任务。 Photoshop 允许您使用 javascript 将菜单项添加到他们的某些产品中。我的应用程序是一个相当标准的 Lazarus 桌面应用程序。因此,我需要使用 Javascript 从 Photoshop 菜单项将消息发送到我的应用程序(以触发操作)。我的应用程序本身不会返回任何东西作为回报(除非它为了完整性而必须返回一些东西)。

标签: javascript windows macos lazarus extendscript


【解决方案1】:

我刚刚进行了快速搜索,在我看来,Adobe Photoshop 脚本并不完全是 javascript,而是它的一个变体,称为 ExtendScript。您可以找到该语言的指南 (like this one),但也可以执行快速 google 搜索,出现 this pagethis page,其中描述了可用于执行外部应用程序的 File.execute 命令,这可能是最佳路线。

我关于服务器的问题提出了另一种选择,如果您有一个服务器正在运行,您可以使用 URL 从 javascript 调用它。然后服务器可能有更多的权限来处理事件。

很抱歉只是将您发送到其他站点和路线以尝试解决此问题,但这是一个相当具体的领域。

【讨论】:

  • 外部程序可以通过任何形式的 Windows IPC 向 Lazarus 应用程序发送信号。
【解决方案2】:

您可能需要阅读有关 JavaScript 的更多信息,因为它有许多限制,例如无法访问本地文件,无法与来自同一域的服务器进行通信,下面的链接可能会给您一个更好的主意:

http://en.wikipedia.org/wiki/Same_origin_policy

http://javascript.about.com/od/reference/a/cannot.htm

HTML5 websockets 可能是一个路径,但尚未在所有浏览器中得到广泛支持:

http://www.html5rocks.com/en/tutorials/websockets/basics/

编辑:

既然您提供了更多详细信息,您可以在应用程序中创建一个线程,该线程将检查一个文件或理想情况下的一个表,当他获取您的 javascript 或 (Ajax) 查询要求他触发时,您的服务器端将写入其中应用程序中的一个信号。

有很多方法可以做到这一点,我在其中一种最简单、更先进的方法中提到的方法是向您的应用程序发送信号。 (从您的服务器向应用程序发送信号。)数据库解决方案具有更多优势,您可以为参数指定列,并且您将拥有更大的灵活性,一旦您处理来自该共享表的请求,您就可以标记该行。

以下是实现表格的一种方法(已处理是表示您的信号是否已被处理的标志 - 您也可以在处理后删除该行):

|信号标识 |论据 | application_id |日期时间 |处理(标志 0 或 1) |

【讨论】:

  • 请参阅上面关于我正在尝试做的事情的评论。由于应用程序始终与 javascript 位于同一台物理机器上,因此我认为通信问题不会影响我。不过感谢您提供的链接 - 我明天会阅读它们。
猜你喜欢
  • 2012-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-18
  • 2014-03-13
  • 1970-01-01
  • 2012-07-30
相关资源
最近更新 更多