问题标签 [external-process]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
wpf - 移植/编写 WPF 应用程序,可从浏览器向 Silverlight 4 启动外部应用程序
WPF 启动某个调用外部 exe 并等待的方法,然后访问作为外部 exe 输出的文件。假设我将构建此应用程序并考虑稍后移植到 Silverlight 4,我应该怎么做?
winforms - 需要从外部取回表单控件的信息
是否有任何人知道的教程或指南将向我展示如何从外部程序读取表单并获取有关表单上控件的信息?目前,我可以获取表单的句柄,并且可以获取类名,但我需要获取更多信息,例如持久名称和包含的数据。谢谢。
编辑:
我现在有一种方法可以读取包含的数据(使用 WM_GETTEXT 消息),但是,我仍然需要一个持久的名称/ID,我可以确定它不会在实例之间更改。我能想到的一种方法是获取句柄,在窗口上找到控件的位置,然后从那时起从该位置获取句柄。另一种方法是确定控件的静态 ID,然后从那时起使用它来获取句柄。我的问题的新范围是如何实现其中任何一个。有任何想法吗?
symbian - 如何使用 J2ME API 在诺基亚手机的 J2ME 应用程序中触发 Symbian C++ 应用程序?
任何人都知道如何使用任何 J2ME API 调用来触发 Symbian C++ 应用程序?我有一个 J2ME 应用程序,它需要在 Symbian C++ 中定制的照片拍摄应用程序。分离成两个应用程序的原因是因为J2ME对堆大小有限制,J2ME需要知道拍照后的路径。
非常感谢你的帮助。
问候,肯尼
ssis - SSIS 处理外部问题
我有一个运行良好的 SSIS 包。该软件包每晚运行一次,大约需要 4 小时才能完成。我是 SSIS 的新手,所以我想看看我的选择是什么。我在网上找不到关于这两个问题的任何信息,因此非常感谢任何建议。
当我遇到电源故障/意外重启等外部问题时该怎么办。有没有办法提醒某人或让包裹在重新启动时重新开始。
几周前,有一个进程挂起并锁定了表,导致该进程无法执行。在开始之前确保我有适当的访问权限的最佳方法是如何处理,如果没有,请获得访问权限。我可以杀死进程等。
寻找最佳实践信息。谢谢
oracle - Oracle 触发器查询
让我们考虑一个 Table STUD 和一个 ROW-Level TRIGGER 是通过 INSERT 查询实现的。我的场景是这样的,每当插入一行时,就会触发一个触发器,它应该访问一些放置在硬盘中的脚本文件,并且最终应该打印结果。那么,这件事可能吗?如果是,那么这个东西应该以动态形式存在,即如果我们改变脚本文件的内容,那么oracle也应该反映这些变化。
我曾尝试使用外部过程为 java 执行此操作,但对我想要的结果不太满意。
请就这种情况以及可以实施的方式提出您的观点。
python - 处理外部进程
我一直在开发一个需要管理外部进程的 gui 应用程序。使用外部流程会导致许多问题,这些问题会使程序员的生活变得困难。我觉得这个应用程序的维护需要很长的时间。我一直在尝试列出使使用外部流程变得困难的事情,以便我可以想出减轻痛苦的方法。这变成了一种咆哮,我想我会在这里发布,以获得一些反馈,并为任何考虑驶入这些非常混浊的水域的人提供一些指导。这是我到目前为止所得到的:
孩子的输出可能会与父母的输出混淆。这会使两个输出都具有误导性并且难以阅读。很难说什么是从哪里来的。当事情是异步的时,很难弄清楚发生了什么。这是一个人为的例子:
输出:
我想我可以让子进程将其输出写入文件。但是每次我想查看打印语句的结果时都必须打开一个文件可能会很烦人。
如果我有子进程的代码,我可以添加一个标签,比如
print 'child: Hello %i'
,但是每次打印都这样做会很烦人。它给输出增加了一些噪音。当然,如果我无法访问代码,我就无法做到这一点。我可以手动管理流程输出。但随后你打开了一大罐带有线程和轮询之类的蠕虫。
一个简单的解决方案是将进程视为同步函数,即在进程完成之前不执行进一步的代码。换句话说,使进程阻塞。但是,如果您正在构建一个 gui 应用程序,那将不起作用。这让我想到了下一个问题......
阻塞进程会导致 gui 变得无响应。
Qt 提供了一个自己的进程包装器
QProcess
,可以帮助解决这个问题。您可以将函数连接到信号以相对轻松地捕获输出。这是我目前正在使用的。但是我发现所有这些信号的行为都像goto
语句一样可疑,并且可能导致意大利面条式代码。我想我想通过让来自 QProcess 的“完成”信号调用一个包含进程调用之后的所有代码的函数来获得某种阻塞行为。我认为这应该可行,但我对细节仍然有点模糊......当您从子进程返回父进程时,堆栈跟踪会中断。如果一个正常的函数搞砸了,你会得到一个带有文件名和行号的完整堆栈跟踪。如果一个子进程搞砸了,如果你得到任何输出,你会很幸运。每次出现问题时,您最终都必须做更多的侦探工作。
说到这一点,在处理外部流程时,输出有一种消失的方式。就像你通过 windows 'cmd' 命令运行某些东西一样,控制台会弹出,执行代码,然后在你有机会看到输出之前消失。您必须传递 /k 标志才能使其保持不变。类似的问题似乎一直在出现。
我想问题 3 和 4 都有相同的根本原因:没有异常处理。异常处理旨在与函数一起使用,它不适用于进程。也许有一些方法可以获得诸如进程异常处理之类的东西?我想这就是 stderr 的用途吗?但是处理两个不同的流本身就很烦人。也许我应该更多地研究这个......
进程可能会在您不知不觉中徘徊在后台。所以你最终会对你的电脑大喊大叫,因为它运行得太慢了,直到你最终打开你的任务管理器并看到 30 个相同进程的实例在后台挂起。
此外,挂起的后台进程可以以各种有趣的方式与进程的其他实例进行交互,例如通过持有文件的句柄或类似的方式导致权限错误。
如果子进程没有自行关闭,似乎一个简单的解决方案是让父进程在退出时杀死子进程。但是如果父进程崩溃,清理代码可能不会被调用,并且子进程可能会挂起。
另外,如果父级等待子级完成,而子级处于无限循环之类的状态,则最终可能会出现两个挂起的进程。
这个问题可以与问题 2 相关联以获得额外的乐趣,导致您的 gui 完全停止响应并迫使您使用任务管理器杀死所有内容。
他妈的报价
参数通常需要传递给进程。这本身就是一个令人头疼的问题。特别是如果您正在处理文件路径。说...'C:/我的文档/无论如何/'。如果您没有引号,则字符串通常会在空格处拆分并解释为两个参数。如果需要嵌套引号,可以使用'和"。但如果需要使用多于两层的引号,则必须进行一些讨厌的转义,例如:"cmd /k 'python \'path 1\' \'路径 2\''"。
这个问题的一个很好的解决方案是将参数作为列表而不是单个字符串传递。Subprocess 允许您执行此操作。
无法轻松地从子流程返回数据。
你当然可以使用标准输出。但是,如果您想在其中打印以进行调试怎么办?如果它期望输出以某种方式格式化,那将会搞砸父级。在函数中,您可以打印一个字符串并返回另一个字符串,一切正常。
晦涩的命令行标志和糟糕的基于终端的帮助系统。
这些是我在使用操作系统级别的应用程序时经常遇到的问题。就像我提到的 /k 标志一样,打开一个 cmd 窗口,这是谁的主意?Unix 应用程序在这方面往往不太友好。希望您可以使用 google 或 StackOverflow 找到您需要的答案。但如果不是这样,你就有很多无聊的阅读和令人沮丧的反复试验要做。
外在因素。
这个有点模糊 但是当您离开自己脚本的相对隐蔽的港湾来处理外部进程时,您会发现自己不得不在更大程度上处理“外部世界”。那是一个可怕的地方。各种各样的事情都可能出错。举一个随机的例子:运行进程的 cwd 可以修改它的行为。
可能还有其他问题,但这些是我迄今为止写下来的。您还想添加任何其他障碍吗?对于处理这些问题有什么建议吗?
vb.net - 将信息从 Shell 进程中获取到 VBA 程序中
因此,假设我在任何 Office 应用程序中都有一个 VBA 应用程序。我创建了一个命令行 VB.net 程序来完成所有有趣的 Web 服务。
好的,VBA 应用程序调用Shell()
来运行命令行程序。现在,从 VB.net 程序将信息(包裹的跟踪号)返回到 VBA 程序的最佳方法是什么?
到目前为止,我对这个问题的看法包括:
- 用 VBA写入数字,
Console.Write
然后以某种方式将其提取出来 - 或者,使用某种外部接口(如数据库或文件系统)对数据进行编号,然后在 VBA 中将其取出。
对此有什么想法吗?
asp.net - 在 Windows Azure 中启动外部可执行文件
我当前的 ASP.NET 站点需要启动 FFMPEG.EXE 来转换上传的视频。使用共享网络托管服务器,只能通过虚拟专用服务器 (VPS) 或专用服务器来完成。
我一直在阅读有关 Windows Azure 的一些信息,但没有找到有关以下内容的任何信息: 1. 能够启动外部可执行文件 2. 能够远程桌面进入分配的虚拟机
请指教,谢谢!埃迪
c - C - 从 ncurses ui 到外部程序并返回
我正在制作一个程序,在 ncurses 中显示一些信息,然后打开 vim(使用system
)以允许用户编辑文件。但是,退出 vim 后,ncurses 屏幕不会重绘。 不要做任何事情,导致我漂亮的菜单完全被破坏refresh
。wrefresh
所以,我被送回命令行。当我移动到菜单项时,它们会重新绘制。稍微移动一下会得到如下所示的结果:
如您所见,我不再处于我漂亮的 ncurses 环境中。
我可以完全拆除 ncurses 并重新设置,但是某些东西(如菜单位置)不会被保留。
我该如何正确地做到这一点?有没有更好的方法来调用一些外部程序并优雅地返回这里?
java - 在 Java 应用程序中嵌入外部应用程序(或伪造它)
我有一个将在 Windows 7 上运行的 Java 应用程序(使用 Swing,App #1),它以全屏方式运行(但不是独占模式)。我有另一个应用程序(应用程序 #2),它显示一个 GUI,以通过我没有源且根本无法更改的串行端口配置外部设备。
我想将 App #2 嵌入到 App #1 中,使其看起来像是父 java 应用程序的一部分(隐藏文件 --> 退出按钮并隐藏最小化、最大化和关闭按钮)。
如果在 Java 应用程序中无法实现这种集成,我可以使用 Java 打开进程并监视它以使其保持打开状态。它需要将窗口设置为“始终位于顶部”,因为 App #1 是全屏的,并尽可能多地隐藏外部 MS Windows UI,以诱使用户认为它不是外部应用程序。是否有某种方法是否使用 JNI 或其他方法来管理我的 Java 应用程序内部的另一个进程窗口(屏幕位置、标题栏、最小化、最大化、关闭按钮可见性)和进程状态?
如果需要,我很乐意提供更多信息。