Joh*_*mas 2 windows delphi explorer winapi
我想检查是否存在,如果它不存在,请在资源管理器的右键单击(上下文)菜单中添加一些操作.
除了上述要求(人们可以在网上轻松找到解决方案)之外,我想再添加一个:
假设我注册了以下命令:
......(aso.)
如何检查是否存在已运行实例MYPROG.EXE并将其传递适当的命令/命令行参数一起与该用户点击文件名?
(IOW,我想使用已经运行的程序实例来完成我的任务,而不是打开一个新任务)
Delphi代码片段将不胜感激.
TIA
执行此操作的最佳方法实际上是在exe的启动代码中.换句话说,让Explorer启动exe的第二个副本,然后继续检测它是否已经在运行并让它向正在运行的实例发送消息.
就个人而言,我几乎没有使用Delphi的经验,但我在.NET应用程序中这样做的方式是使用互斥和进程间通信通道.
一般的想法是应用程序的第一个实例将启动,并开始监听IPC通道.它还会创建一个命名的进程间互斥.当第二个实例启动时,它将无法创建相同名称的互斥锁,这意味着先前的实例正在运行并在IPC通道上侦听调用.第二个实例然后通过IPC将命令行参数发送到第一个实例,第一个实例对它们采取了操作.然后第二个实例退出而不显示任何UI.
我已经上传了这个组件的代码(C#),链接如下.我不相信它有任何外部依赖,我不知道Delphi中的等效通信机制是什么 - 但希望这会给你一些想法.
| 归档时间: |
|
| 查看次数: |
1166 次 |
| 最近记录: |