如何在Delphi中检测来自资源管理器的文件打开请求?

问题描述 投票:0回答:1

我的 Delphi Alexandria 程序将注册表中的某些文件扩展名与应用程序的 Exename 相关联,以便 Windows 显示正确的图标。但是,当我在资源管理器中双击正确类型的文件时,我很难让我的程序注意到请求。我想要的是根据通过 Paramcount 和 ParaStr(1) 等传递的文件扩展名来拦截调用。如何在 .dpr 文件中进行设置

  • a) 注意有一个文件名请求
  • b) 判断程序是否已经在运行
  • c) 如果是则传递参数,或者
  • d) 使用参数启动程序?

d) 已经可以了,但我不知道如何设置 a)
谢谢

delphi file-extension paramstr
1个回答
0
投票

A) 当您在注册表中注册文件扩展名时,您就告诉Windows您希望在执行扩展名时如何调用。典型的场景是 Windows 只是运行应用程序的新实例,并将文件路径作为命令行参数。正如您所说,您可以在应用程序开始运行时使用

ParamCount
/
ParamStr
来检测并接收该文件路径。

B) 最简单的方法是使用命名对象,例如 Win32 Mutex,它分配有唯一的名称。当您创建该对象时,Windows 会告诉您该对象是否已经存在。如果是这样,那么只需立即退出即可。否则,继续正常运行。

C) 有许多 IPC 机制可用于在进程之间发送数据。在这种情况下,使用

WM_COPYDATA
窗口消息是一种常见的选择。其他选择包括命名管道、邮槽、套接字、COM 等。使用任何你想要的。

D)您无需为此做任何额外的事情。

© www.soinside.com 2019 - 2024. All rights reserved.