问题标签 [cross-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.

0 投票
1 回答
1028 浏览

android - 如何实现与 CrossProcessCursor 兼容的通用自定义 CursorWrapper

我设法创建了一个工作CursorWrapper,但是当我想ContentProvider跨进程使用时卡住了。

这些帖子甚至展示了如何实现CrossProcessCursor接口,特别是硬且未记录fillWindow()的方法:

问题是我只能想到一个fillWindow()处理一个游标的实现,该游标的所有列都包含 Blob、字符串或 ...,但不能混合这些,因为现实世界的游标必然具有。这里真正的问题是缺少getType()函数(仅从 v11 开始存在),或者getRaw()/putRaw()只会复制二进制文件而不会抱怨。如何在返回的游标值不引起不必要的转换的情况下处理这个问题?

0 投票
1 回答
560 浏览

c# - 最兼容的进程间通信协议

我正在开发一个媒体应用程序,我想为其提供一个外部 API 库,允许另一个应用程序与我的查询状态信息进行通信。我的应用程序是用 C# 编写的,API DLL 将是相同的。最初我的想法是简单地使用 WCF 和命名管道,因为它将提供一种非常简单的方法来编写整个接口。

但是,我意识到如果我想为它制作一个 android 或 Web 遥控器,这样做几乎会阻止任何其他语言或平台与应用程序通信。

那么,我可以使用什么协议来允许在我的 C# 代码中实现快速简单的接口,同时还允许在其他平台上编写 API。

基本要求是:

  • 本地和远程通信
  • 低开销
  • 过程调用
  • 文件传输(发送媒体)
  • 预先存在的 C#,开源库会很好。

我看过很多选项,以前使用过 XML-RPC 和 JSON-RPC,但想知道社区认为什么是最佳选项。

0 投票
3 回答
11096 浏览

c# - 我应该处理互斥锁吗?

我正在开发 2 个 Windows 服务,它们有一个公共数据库,我想用系统互斥锁锁定(跨进程)。

现在我想知道在一个块中调用WaitOne()and是否可以,或者我是否应该也处理 Mutex(例如在一个块中)。如果是这样,我想我应该总是抓住方法,还是我错了?ReleaseMutex()try-finallyusingAbandonedMutexExceptionWaitOne()

0 投票
2 回答
2610 浏览

c# - 将快速文本输入发送到另一个进程(窗口)

我正在编写一个 C# WPF 程序,它将文本消息发送到另一个程序的窗口。我有一个宏程序作为我的键盘驱动程序(Logitech g15)的一部分,它已经这样做了,尽管它不会直接将击键发送到进程,而是发送到当前聚焦的窗口。它运作良好,但我也需要能够从我的程序发送输入。还有其他人在使用该过程,因此来自我的程序的输入文本消息需要足够快,以便我的文本不会干扰他们的输入。问题是,当我尝试使用 ac# 程序执行此操作时,我得到了太多延迟。宏程序 (Logitech G-Series Profiler) 立即发送命令。我尝试了以下三个命令来发送消息以进行处理。(按从慢到快的顺序列出)

它可能在名称中,但是它执行命令的速度如此之慢,以至于我实际上可以用眼睛跟随文本,因为它是逐个字母输入的。我曾尝试使用“SendKeys.Send”方法,但收到一条错误消息:“SendKeys 无法在此应用程序中运行,因为该应用程序未处理 Windows 消息。”</p>

PostMessage 有点快,但对于我的程序而言仍然不够快。此外,该方法在进程读取消息之前返回,这意味着两个连续的 PostMessage 调用可能不会发送连续的消息。

这比 PostMessage 快,但不如罗技的宏程序快。此外,接收程序对输入的处理方式也很奇怪,显然与从键盘输入“真正”输入的方式不同。

这是我尝试过的最后一件事。文本发送到进程的方式似乎是即时的。但是,我只能将其发送到我自己的程序,因为当我将另一个程序设置为前景窗口时,Keyboard.FocusedElement 返回 null。如果有人能告诉我如何获取另一个窗口的 IInputElement,我肯定想知道。或者,如果有人对发送输入的更好方法提出建议,我非常想听听。

规格:Windows 7、64 位 Visual Studio 2010、Framework 4

0 投票
1 回答
2044 浏览

c# - 从其他窗口获取 ListView 项目文本

我想制作一个小应用程序来更改 Windows 7 中的默认播放设备。唯一的解决方案是与 Sound Applet 交互。我成功地获得了具有设备名称的 SysListView32 窗口的句柄,但我无法从 ListView 中获取文本。

这是使用的代码:

结果 (strLvi) 是一些中文字母。脚本有什么问题?

更新: LVITEM 结构是这样的:

sLIstView 句柄是正确的......检查了 spy++。我需要执行什么测试来检查问题出在哪里?如果有帮助,我可以给你所有的脚本。

0 投票
3 回答
2678 浏览

c# - 2路跨进程通信

我正在开发一个项目,我想要一个像 System 这样的插件沙箱,但是我在解决 2-Way 实时跨进程通信时遇到问题。起初我想到了 WCF,因为它可以传递对象元数据,但很快意识到 WCF 的服务客户端模型会带来问题。但在我在这里提出所有想法和问题之前,我已经计划好了。

我想有一个宿主应用程序来完成大部分工作,让我们调用这个host.exe,host.exe将宿主程序的主要应用程序逻辑,以及插件的启动、执行和杀死。插件将通过插件代理托管,该代理将通过 MEF 托管它们,因此我们将其称为 proxy.exe。proxy.exe 将加载插件 dll 并将它们托管在一个隐蔽的环境中,该环境将隔离故障,如果插件失败,它将终止代理而不是应用程序。主机和代理需要在两个方向上进行实时通信,并且因为会有多个代理主机,所以最好能够传递对象数据。

所以这就是我想要的基本想法。我在想几种方法来做到这一点。第一个是 WCF,但是我认为 WCF 的工作方式即使不是不可能,服务的服务器也很难向客户端发送请求/命令。下一个想法是什么使用 TCP,并让主机成为 TCP 服务器并开发一个我可以用来通信的消息传递协议,但这会带来一个问题,因为我没有 WCF 元数据的奢侈和传递复杂的类信息会快疯了。

通过我所有的研究,我提出了一个又一个问题,如果有人能够提出解决这个问题的方法,我将不胜感激。谢谢你。

0 投票
1 回答
173 浏览

c# - 同步对象只创建一次对象

我需要某种跨进程同步对象,它允许我创建和初始化一个对象一次,然后仅在最后一个实例退出时关闭并处理它一次。

例如生命周期会是这样的:

新实例 1:创建和初始化对象

新实例 2:什么都不做

删除实例 1:什么都不做

删除实例 2:关闭并处置对象

我认为命名事件可能会起作用,但我看不出它如何处理实例上的无序创建和处置。

0 投票
3 回答
15782 浏览

c++ - 如何在 VC++ 2005 中使用 OpenProcessToken、AdjustTokenPrivileges 和 GetExitCodeProcess

我读了几篇关于如何检查一个进程是否从另一个进程退出的帖子(我意识到有些人在这里迷上了语义,但只是幽默我),我试图实现它,但遇到了错误代码 5 (“ERROR_ACCESS_DENIED”)到处都是。

这就是我所做的。

1) 进程 1 (P1) 启动进程 2 并将其自己的 PID 写入共享内存位置。

2)进程2(P2)从共享内存中读取PID

3) P2 使用 P1 的 PID 调用 OpenProcess(...) 以保存它可以稍后检查的句柄。

4) P2 用 P1 的 PID 反复调用 GetExitCodeProcess(...) 并检查 STILL_ACTIVE 代码。

在上述方法中,我在 GetExitCodeProcess 上不断收到 ACCESS_DENIED 错误。我尝试使用 MSDN 文档中的以下代码修改 P2 的权限:

但是我在调​​用 OpenProcessToken(...) 方法时不断收到 ACCESS_DENIED 错误。那么这是否表明某种系统级别的障碍?我在我的机器上拥有管理员权限,并且我正在运行 XP。

提前感谢您的帮助。

0 投票
1 回答
4819 浏览

c++ - How to disable dialog "switch to"-"retry"-"cancel"

Comunicate between two processes, often pop up boring dialog "This action cannot be completed because the other application is busy.  Choose 'Switch To' to activate the busy application and correct the problem"

Then it offers 3 buttons:  Switch To..., Retry and Cancel.

Could I disable the dialog anyway?

0 投票
1 回答
120 浏览

php - PHP - 访问和发送数据以处理

我一直在编写一个小型客户端服务器应用程序,现在我想在一个小型服务器网页中显示服务器进程的输出。每次,您在服务器控制台中按下一个键,都会输出当前状态。假设服务器正在运行,我想显示服务器的当前状态,你将如何在 PHP 中实现它?

我的想法是得到这个过程,然后发送一个关键输入。你怎么能在 PHP 中实现它呢?该服务器在 Apache 和 PHP 5.4 的 debian 6 上运行。

提前致谢