作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经实现了以下过程,当我在运行 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;
最佳答案
我将大胆猜测一下,如果您是从 2 号计算机上的 IDE 中运行的话。我敢打赌,如果您在计算机 #2 上进行编译,但从资源管理器而不是 IDE 启动可执行文件,它就会起作用。最后一 block 拼图是,我敢打赌您正在以管理员身份在 2 号计算机上运行 IDE。
在 Vista 和 Windows 7 上,您无法将消息发送到完整性级别较高的进程。如果您的进程以管理员身份运行,那么它将具有比资源管理器更高的完整性级别,因此不会接受删除的文件。
如果我的猜测是正确的,我建议您停止以管理员身份运行 Delphi,它不需要这个。
至于WM_DROPFILES
是否是一种合理的方法,我认为使用它没有任何问题。
关于delphi - win7上的WMDropFiles问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7277782/
我是一名优秀的程序员,十分优秀!