gpt4 book ai didi

delphi - win7上的WMDropFiles问题

转载 作者:行者123 更新时间:2023-12-03 15:48:52 25 4
gpt4 key购买 nike

我已经实现了以下过程,当我在运行 Windows Vista 的计算机(计算机#1)上编译它时,它可以正常工作。如果我将创建的 .exe 文件共享到另一台运行 win7 的计算机(计算机 #2),它也可以正常运行。问题是,当我让计算机 #2 编译它时,它不会简单地识别应用程序上掉落的任何内容。这段代码中根本没有任何响应。它的构建和编译没有错误或警告。我已经在网上搜索了一段时间,但没有找到任何可以解释为什么会发生这种情况的信息,也没有找到其他遇到此问题的人。

两台计算机都使用 Delphi 2010,并安装了相同的组件。

  1. 这是允许用户将文件拖放到应用程序上的方法吗?如果没有,现在该怎么办?
  2. 知道为什么它在计算机 #1 上编译但在计算机 #2 上不起作用吗? (当在#1 计算机上编译时,该程序在两台计算机上都能正常运行)

非常感谢任何帮助或评论。

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com