Mar*_*cus 3 delphi drag-and-drop windows-vista windows-7 delphi-2010
我已经实现了以下过程,当我在运行Windows Vista,计算机#1的计算机上编译它时,它可以正常工作.如果我将创建的.exe文件共享到另一台运行win7的计算机,计算机#2,它运行良好.问题是,当我让计算机#2编译它时,它不会简单地认识到应用程序上丢弃了任何东西.这段代码完全没有响应.它的构建和编译没有错误或警告.我一直在网上搜索一段时间没有找到任何解释为什么会发生这种情况或其他人有这个问题.
两台计算机都使用安装了相同组件的Delphi 2010.
任何帮助或评论都非常感谢.
procedure TfMainForm.WMDROPFILES(var msg: TWMDropFiles);
const
MaxLength = 255;
var
nFiles : integer;
i : integer;
fileName : array [0..MaxLength] of char;
fileNames : TStringArray;
begin
// Get number of files dropped
nFiles := DragQueryFile(msg.Drop, $FFFFFFFF, fileName, MaxLength);
// Get filenames
SetLength(fileNames, nFiles);
for i := 0 to nFiles - 1 do begin
DragQueryFile(msg.Drop, i, fileName, MaxLength);
fileNames[i] := fileName;
end;
// Add files
projectHandler.addFiles(fileNames);
//release memory
DragFinish(msg.Drop);
end;
Run Code Online (Sandbox Code Playgroud)
如果你是在计算机#2上的IDE中运行,我会猜测一下.我敢打赌,如果你在计算机#2上编译,但是从资源管理器而不是从IDE启动可执行文件,它就可以工作.拼图的最后一块是我打赌你是在管理员的计算机#2上运行你的IDE.
在Vista和Windows 7上,您无法将消息发送到具有更高完整性级别的进程.如果您的进程以管理员身份运行,那么它将具有比资源管理器更高的完整性级别,因此不会接受已删除的文件.
如果我的猜测是正确的,我建议您停止以管理员身份运行Delphi,它不需要这个.
至于是否WM_DROPFILES合理,我认为使用它没有问题.
| 归档时间: |
|
| 查看次数: |
2489 次 |
| 最近记录: |