问题标签 [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.
windows - 如何将按钮添加到其他应用程序窗口标题栏(XP/Vista)
我有一个打开窗口的处理程序,它不一定由我的进程打开。如何在该窗口中添加一个按钮并在单击时使该按钮调用某个应用程序 (.exe)?该按钮可以在系统菜单或最小化按钮旁边。这应该适用于 XP 和 Vista(每个版本都可以使用不同的方法)。
python - Python中的命名信号量?
我在 python 中有一个脚本,它使用的资源不能被超过一定数量的并发脚本运行使用。
经典地,这将通过命名信号量来解决,但我在multiprocessing模块或threading的文档中找不到这些。
我是否遗漏了某些东西或被命名为 Python 未实现/公开的信号量?更重要的是,如果答案是否定的,那么效仿的最佳方法是什么?
谢谢,波阿斯
PS。由于与这个问题不太相关的原因,我无法将任务聚合到持续运行的进程/守护进程或使用衍生的进程——这两者似乎都可以与 python API 一起使用。
.net - .NET 中的跨进程读写同步原语?
是否有跨进程工作的读/写锁定机制(类似于互斥锁,但读/写而不是排他锁定)?我想允许并发读取访问,但独占写入访问。
c# - 如何在不同的计算机上启动/停止应用程序?
一个 C#(桌面)应用程序是否可以在另一台机器上启动和停止应用程序?
我的意思不是恶意的,甚至不是互联网上的。我在一个房间里有两台电脑,我需要一个应用程序来启动(然后停止)另一个应用程序。
我脑海中的一个半成型路线是在目标计算机上使用一个辅助程序,所以我想我应该指出我完全能够对任何一台机器进行任何必要的更改。
vb.net - 通过 VB.net 进行 Word 自动化时避免跨进程调用
简短版本 我在 VB.net 和 VSTO 中有一个 Word 插件,它通过 Word.COMAddins.Object 公开一个 COM 兼容对象,因此插件功能可以在 Word 外部调用,而无需跨进程访问 Word 本身.
该技术在 VB6 中有效,但在 VB.net 中,它仍然有效,但它比通过任务窗格直接从插件运行的相同代码慢得多,就好像调用都是跨进程时它们不应该的一样。X
长版 这个插件本质上是对 Word 文档进行大量处理。该插件可以通过两种方式运行。
- 在 Word 中,使用任务窗格
- 在外部,通过一组暴露给 COM 的类(因为我必须提供对 VB6 客户端应用程序的功能的访问。
但是,这是问题所在。任何做过 Word 自动化的人都知道,使用 Word 以完全可接受的方式运行 INPROC 的代码(在这种情况下是 Word 本身加载的 ADDIN 的实例),通常会在进程外(或跨进程)慢得令人无法接受。
这个应用程序没有什么不同。
很久以前,我使用了一个方便的技巧来规避这个问题。
- 像往常一样创建一个 Word 插件
- 通过 Word.COMAddin.Object 属性公开一个对象,让外部代码访问您的插件。
- 在您的外部项目中,不要直接操作 Word,而是使用 Application.COMAddins 集合,找到您的插件,从中检索公开的 COMAddin.Object 属性,然后调用该对象上的方法来完成工作。
当然,对您的 COMAddin.Object 对象的调用仍然是跨进程的,但是,一旦在 Word 处理中的插件中执行,您的插件现在可以执行它想要的所有 Word 对象操作,而且速度很快,因为它们那时所有的进程内调用。
这在 VB6 COM 时代有效。
但是,我将这个 VB.net vsto 插件放在一起,并通过 VSTO 的 Connect 对象的 RequestComAddInAutomationService 函数公开我的插件对象
我可以从外部调用我的插件,它们都完全按照我的预期工作,除了它们都是 +slow+,非常像对 Word 的调用仍在跨进程执行,即使代码对 Word 进行这些调用是 Word 在进程内加载的插件 dll 的一部分!
并且慢到大约 10 到 1 倍;当通过任务窗格直接从 ADDIN 运行时需要 3 秒运行,当通过 COMADDIN.object 对象从外部代码调用时需要约 30 秒运行。
我猜我在.net APPDOMAINS 或其他什么方面遇到了某种问题,而+really+ 构成了.net 中的跨进程调用,但到目前为止我还没有发现任何关于这种事情的暗示。
除非有一些神秘的洞察力,否则我的下一步将是编写一个重现代码,由于正在播放的元素数量众多,这可能会变得很棘手。
有什么想法吗?
winapi - “跨进程子类化”的问题
两个问题。
1)我知道这一定是预期的结果,但也许有人可以告诉我我做错了什么;我正在尝试在全局挂钩中对所有窗口类进行子类化,它可以正常工作,只是我无法按我应该的方式关闭商店,并且当最初注册挂钩的程序取消注册挂钩并退出时,子类化的应用程序开始崩溃。
这就是我正在尝试的方法..
在 DllMain 我不对 DLL_PROCESS_DETACH 做任何事情。相反,ClearHooks() 是从最初注册钩子的程序中调用的,并且只有在钩子发送一条消息表明它已执行 EnumWindows 操作(恢复原始 wndprocs,见上文)之后才调用。
我在 WndProc 钩子中子类化窗口;所有接收消息且当前 wndproc 不是 dll 中的窗口的可见窗口都被子类化。
基本上所有(据我所知)应用程序在退出时都会崩溃,尽管 Windows 似乎确实将 wndproc 设置回它被替换时的状态。任何人都知道我可能做错了什么?
2)我需要这个来拦截 WM_MINMAXINFO 并在窗口最大化时修改窗口 maxsize。不幸的是,我不能在 dll 中执行此操作,但我必须与程序交谈以获取大小信息。那么,与那个窗口对话的最佳方式是什么?我需要它传回一些信息,以便我可以修改原始 WM_MINMAXINFO 消息附带的结构。WM_COPYDATA 中的结构是否会保留其数据,直到对 SendMessageTimeout 的调用返回?
谢谢
c++ - 如何在另一个进程中获取有关 Qt 列表框内容的信息
我有一个使用 Qt 编写的应用程序,我想读取 Qt 列表框中的数据。它不响应 LB_GETTEXT 或其他 Windows 消息,有没有从另一个进程中获取数据的好方法?
我无法访问 Qt 进程,它的外部程序。我正在寻找一种从 C# 访问 LB 内容的方法。
事实证明,Qt 的 Accessibility 插件应该为所需的操作提供支持。但是,我对 QT 不熟悉,我不清楚应用程序是否必须在允许可访问性的情况下构建,或者它是可以为任何应用程序打开和关闭的功能(或至少是默认构建应用程序,并且未明确禁用可访问性)。
我已阅读,它说您需要运行 export QT_ACCESSIBILITY=1,放置 qt.conf 文件并将可访问文件夹放入主根目录中的 Qt 应用程序。我想我不完全理解如何打开 QT_ACCESSIBILITY=1 以及它是否足以让应用程序变得可访问。我在我的计算机属性中将 QT_ACCESSIBILITY=1 添加到环境变量中,这样可以解决问题吗?或者 export QT_ACCESSIBILITY=1 是不同的。
谢谢
c++ - Boost IPC 好用吗?
我对跨平台 IPC 的默认选择是 boost,但是当我询问它时,我看到它在两个不同的论坛中受到批评,这让我很担心。也许这只是一个巧合,那么对于 boost IPC 和选择跨平台的 C++ IPC 库,一般有什么想法呢?
对于 Windows 开发,我们使用 VC++ 2008 作为参考。
编辑:这是我看到的评论示例(现在找不到它们):
为了提升,这是废话。至少在窗户上。互斥锁不使用 WinAPI,而是创建自己的基于文件的实现(WinAPI = Kernel-Objects)。如果您的程序崩溃,文件将不会被删除。下次启动程序时,由于现有文件,无法创建互斥锁。
c# - 对于 SSIS 跨进程通信,我有哪些选择?
我想存储一个递增和递减的整数变量(用于限制对外部 API 的并发请求的计数信号量)。这很容易,除非我需要一种方法从在并行 SQL 代理作业中运行的 SSIS 包中读取/写入此变量。现在可以有 0 到 5 个 SQL 代理作业实例,因此 SSIS 包同时运行。
我有哪些读取和写入此变量的选项?将使用此变量的代码在 .NET 中编写为自定义 SSIS 任务。
该值是否完全正确并不特别重要,只要它通常接近我在公差范围内。确切会很棒,但不是必需的。
我可以访问整个文件系统、注册表、数据库、服务器和 SSIS 代理,但我想经常通过 15-30 个线程检查这个变量,这在历史上使用文件系统方法会导致问题(我可能做错了),并且 IMO 过于密集而无法存储在数据库中。如我错了请纠正我。存储在注册表中可防止跨服务器场访问该变量。
如果有任何人可以提供帮助,我很乐意成为您的契约仆人。
c++ - C++下的跨进程交互
请帮忙,我如何组织流程-流程数据交换(在 Windows 中,如果重要的话)?
我有process1.exe
哪些process2.exe
带有一些命令行参数的调用。我想跟踪process2
from的“进度” process1
(例如,某个int
值)。它(该int
值)可以从process1
永久或每 X 毫秒访问 - 没关系。
任何解决方案都会有用:WinApi 或 Qt。
谢谢大家!所有答案都非常有用!:) 非常感谢!!