我需要一个javascript函数来触发在Lazarus中为OSx和windows开发的应用程序中的函数。我正在学习拉撒路,我将自己描述为一名中等水平的初学者。我对javascript知之甚少。
据我了解,javascript运行沙箱,因此无法直接访问应用程序。因此,我正在考虑使用从javascript到应用程序的某种tcp调用,传递一个参数,当收到该参数时,将触发该事件。这需要适用于Windows和Mac。理想情况下使用相同的组件/代码,但如果不可能那么我需要做的事情。
我的问题是:
1)这听起来像是正确的做法吗? 2)如果确实如此 - 用于实现这一目标的最佳方法和组件是什么?
我一直在寻找突触 - 但说实话,我有点迷失在需要使用的组件中并阅读以进行设置。
所以基本上--javascript需要向我的应用程序发送一个参数,然后在接收到它时采取行动。
如果您能提供帮助,请提前致谢。
答案 0 :(得分:1)
我刚做了一个快速搜索,在我看来,Adobe Photoshop脚本不是javascript,而是一个名为ExtendScript的变种。您可以找到该语言的指南(like this one),同时还会执行快速谷歌搜索this page和this page,其中描述了可以使用的File.execute
命令执行可能是最佳路线的外部应用程序。
关于服务器的问题提出了另一种选择,即如果你有服务器运行,你可以使用URL从javascript调用它。然后,服务器可能有更多权力对事件采取行动。
很抱歉只是将您送到其他网站并指示您尝试解决此问题,但这是一个相当具体的领域。
答案 1 :(得分:0)
您可能需要阅读有关JavaScript的更多信息,因为它有许多限制,例如无法访问本地文件,无法与不是来自同一域的服务器通信,以下链接可能会让您更好地了解:< / p>
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)查询要求他触发时,服务器端会在其中写入该线程申请中的信号。
有很多方法可以做到这一点我在一个最简单的方法中提到的,一个更先进的方法,就是向你的应用程序发送一个信号。 (从服务器向应用程序发送信号。)数据库解决方案具有更多优势,您可以为参数指定列,并且您将具有更大的灵活性,一旦您处理了来自该共享表的请求,就会标记该行。
下面是一种实现表格的方法(处理过的是一个标志,表明你的信号是否已被处理 - 你也可以在处理后删除该行):
| signal_id |参数| application_id | datetime |处理(旗帜 0或1)|