如何使自做的控件得到使用它的程序的绝对路径。(50分)

  • 主题发起人 主题发起人 xuegaoyili
  • 开始时间 开始时间
X

xuegaoyili

Unregistered / Unconfirmed
GUEST, unregistred user!
我知道在程序中,使用 Application.ExeName 能得到运行路径。
现在
我在开发一个控件,想使控件在create时就得到它所在的程序的运行路径。
有人说过一个api,GetModuleName()函数,可具体应用时,参数 不知道如何得到。
有人知道不。
 
就用这个不就行了
Application.ExeName
 
GetModuleName传入0就得到主程序绝对路径了
但是要注意
如果你的控件是进程外服务器的话,这个可能不正确,没试过
 
我一直用这个函数:
function ExeOrDllPath: string;
var
Path: array[0..1024 - 1] of Char;
begin
if IsLibrary then
SetString(result, Path, GetModuleFileName(HInstance, Path, SizeOf(Path)))
else
result := ParamStr(0);
end;
 
直接使用ParamStr(0)就可以得到了.
 
上面说得都是在程序中,用语言动态创建控件时,好用。

但在用设计时拖动到窗体上的方式,得到的路径会是delphi32.exe的路径。也就是ide的
路径。。。有办法解决吗
 
看来得用到运行时函数啊
 
顶一下,Application.ExeName 不行????
 
我估计这是因为ide里面看到的控件,是来自它们的bpl,这bpl实际是dll,挂靠在
delphi32.exe上面,控件拖放到窗体,它就会执行,跟未来的exe无关,在ide里面,
exe是否已经编译存在还是一个问题,所以取得的自然是delphi32.exe的路径。不过,
exe的路径倒是定了的,我觉得应该是取程序Options里面的output directory,但
没研究过怎么取,好像没有什么必要。
 
多人接受答案了。
 
后退
顶部