windows – 在Delphi中获取DLL调用者信息
发布时间:2020-12-14 04:03:21 所属栏目:Windows 来源:网络整理
导读:在Delphi DLL中需要建立调用者 – 可能是一个简单的“.exe”或DBMS运行时模块 – 这意味着它必须获取在该进程中运行的命令. 我知道CmdLine不起作用,可能是ParamStr(0),并且不能使用“主窗口”技术,因为调用者有时候没有窗口.我怀疑 GetModuleHandle是起点,但
在Delphi DLL中需要建立调用者 – 可能是一个简单的“.exe”或DBMS运行时模块 – 这意味着它必须获取在该进程中运行的命令.
我知道CmdLine不起作用,可能是ParamStr(0),并且不能使用“主窗口”技术,因为调用者有时候没有窗口.我怀疑 解决方法
我创建了一个测试dll:
library Project2; uses System.SysUtils,System.Classes,Vcl.Forms,Vcl.Dialogs,Winapi.Windows; {$R *.res} procedure DoStuff; stdcall; begin ShowMessage( 'ParamStr(0): '+ParamStr(0)+#13#10+ 'GetCommandLine: : '+GetCommandLine); end; exports DoStuff; begin end. 然后从测试应用程序中调用它: procedure TForm1.Button1Click(Sender: TObject); var module: HMODULE; doStuff: procedure; stdcall; begin module := LoadLibrary('D:TempWin32DebugProject2.dll'); if module = 0 then RaiseLastOSError; try doStuff := GetProcAddress(module,'DoStuff'); if @doStuff = nil then raise Exception.Create('Could not find export "DoStuff"'); DoStuff; finally FreeLibrary(module); end; end; 它会看到命令行,使用两者: > ParamStr(0) GetCommandLine显然显示整个命令行,而ParamStr(0)(根据定义)只是进程可执行路径. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Caused by com microsoft sqlserver jdbc SQLServerExcepti
- windows-xp – 如何使用像Windows XP一样的阴影在桌面图标上
- windows – 为通过USB连接的某些硬件编写游戏控制器驱动程序
- Microsoft Excel错误:“将命令发送到程序时出现问题.”
- windows-server-2012 – 当logonHours受限时,无法联系“无法
- npm和cnpm (windows)安装步骤
- Windows与Mac之间密钥检测的Java差异
- windows-server-2012 – 如何更改指定的AD控制器?
- 将const uint *的值复制到c中的另一个变量
- windows-7 – Windows 7:访问权限/组策略,以防止用户删除卷