【发布时间】:2015-10-09 02:28:03
【问题描述】:
我有一个可以从不同的 exe 应用程序调用的 dll(dll 和 exe 是用 Delphi 5 编写的)。 是否可以在 dll 中知道它是从哪个 exe 应用程序调用的? 换句话说,假设我有 App1.exe、App2.exe 和 MyDll.dll。 App1.exe 称为 MyDll.exe。我想知道它是从 App1 调用的,而不是从 App2 调用的 dll。
【问题讨论】:
-
你能提供一些代码吗?
-
DLL 不应该关心调用者是谁,但如果它需要知道它应该提供应用程序可以用来提供该信息的方法。需要明确的是,如果我编写一个提供许可信息的 DLL,我不应该关心调用该 DLL 的应用程序是命名为 Project1.exe 还是 SomeApp.exe -我应该关心的是调用我的应用程序提供的信息表明它有权使用我的 DLL。
-
当然,在可能的情况下,例如当您同时控制 DLL 和 EXE 开发时。例如,在编写 Shell 扩展 DLL 时,有时需要/需要检测 DLL 是否由 explorer.exe 本身加载,如果不是,则拒绝加载,以免加载到使用 OS 对话框托管资源管理器实例的进程中,例如打开/保存文件对话框。您不能要求资源管理器调用可以导出的额外功能。只是说,从 DLL 中检测加载过程有其用途,即使不常用。
标签: delphi