我的 Delphi Alexandria 程序将注册表中的某些文件扩展名与应用程序的 Exename 相关联,以便 Windows 显示正确的图标。但是,当我在资源管理器中双击正确类型的文件时,我很难让我的程序注意到请求。我想要的是根据通过 Paramcount 和 ParaStr(1) 等传递的文件扩展名来拦截调用。如何在 .dpr 文件中进行设置
d) 已经可以了,但我不知道如何设置 a)
谢谢
A) 当您在注册表中注册文件扩展名时,您就告诉Windows您希望在执行扩展名时如何调用。典型的场景是 Windows 只是运行应用程序的新实例,并将文件路径作为命令行参数。正如您所说,您可以在应用程序开始运行时使用
ParamCount
/ParamStr
来检测并接收该文件路径。
B) 最简单的方法是使用命名对象,例如 Win32 Mutex,它分配有唯一的名称。当您创建该对象时,Windows 会告诉您该对象是否已经存在。如果是这样,那么只需立即退出即可。否则,继续正常运行。
C) 有许多 IPC 机制可用于在进程之间发送数据。在这种情况下,使用
WM_COPYDATA
窗口消息是一种常见的选择。其他选择包括命名管道、邮槽、套接字、COM 等。使用任何你想要的。
D)您无需为此做任何额外的事情。