好吧所以我想要做的就是创建一个程序,当它已经执行时,可以再次“执行”,检测已经存在的进程而不是创建另一个进程,在现有进程中执行一个函数
有什么想法吗?
我可能会犯这个错误。我正在尝试将这个开源虚拟打印机(http://sourceforge.net/projects/imageprinter/)改编为我的应用程序。打印机将PDF打印到文件中,它似乎还具有启动应用程序的功能。我需要将PDF抓取到我自己的应用程序中进行处理,并且用户需要能够通过将它们打印到此打印机来附加更多pdf。
我计划处理它的方法是让应用程序每次打开时都检查新文件的文件夹,并在打印新文件时调用命令。还有另一种方法可以将pdf数据更直接地导入正在运行的进程吗?
答案 0 :(得分:4)
1:典型的解决方案是使用命名的互斥锁。 See this question asked on MSDN了解更多详情。
2:使用one of these functions(可能FindWindowEx
?)和(如果需要)某种方式获取用于在两个进程之间找到HWND
的信息。抱歉,我不能更清楚,方式有太多方法可以做到这一点,因应用程序而异。
3:在您知道其他应用程序正在运行之后,您可以将SendMessage与您自己的UINT message
一起使用(确保它不会与现有消息冲突)并确保处理特殊情况消息循环中的消息。
答案 1 :(得分:1)
听起来你可能想开始搜索有关运行对象表的信息......以下是示例,并且MFC客户端调用.net应用程序,该应用程序使用Running对象表注册自身,以便它们可以执行进程间通信。
Running Object Table: Provider in .NET, consumer in MFC
你到底想要做什么,我确信你有充分的理由做你正在做的事情但是可能有其他方法可以更简单的方式得到相同的结果。
答案 2 :(得分:0)
答案有两个阶段:
我正在编写Win32 API程序,而不是MFC / .net
基本上,在win32 api中查找进程间通信。