我想将文件从自我位置复制到另一个位置,例如:
var
NewFile : WideString;
MyOwnLocation : WideString;
begin
NewFile := 'C:\mycopy.exe';
// CopyFileW (PWideChar(paramstr(0)), PWideChar(NewFile), false); // ===> doesn't work
MyOwnLocation := paramstr(0);
CopyFileW (PWideChar(MyOwnLocation), PWideChar(NewFile), false); // ===> works but not sure if Unicode supported...
end;
当我将paramstr(0)复制到WideString时,它可以工作,但是我仍然不确定paramstr(0)是否已经是UNICODE。是否有WindowsAPI可以在wideString中返回文件的当前位置?
感谢帮助 :)
最佳答案
当然。您可以使用GetModuleFileNameW
,这是ParamStr(0)
内部使用的api的unicode版本:
var
NewFile: WideString;
MyOwnLocation: WideString;
Len: DWORD;
begin
NewFile := 'C:\mycopy.exe';
SetLength(MyOwnLocation, 260);
Len := GetModuleFileNameW(0, PWideChar(MyOwnLocation), Length(MyOwnLocation));
Win32Check(Bool(Len));
if GetLastError <> ERROR_INSUFFICIENT_BUFFER then begin
SetLength(MyOwnLocation, Len);
CopyFileW (PWideChar(MyOwnLocation), PWideChar(NewFile), false);
end else
// handle fail due to insufficient buffer
关于delphi - 获取程序可执行文件的名称(如paramstr(0)一样),但是在Delphi 7中将其作为Unicode字符串获取?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10763243/