当文件拖放到我的表单上时,为什么我的表单没有收到 WM_DropFiles?

2023-11-25

我正在使用 Embarcadero RAD Studio XE 来开发应用程序。我正在尝试使用以下代码将文件拖放到应用程序中

TMainForm = class(TForm)
public:
  procedure WMDropFiles(var Msg: TWMDropFiles); message WM_DROPFILES;
end;

procedure TMainForm.FormCreate(Sender: TObject);
begin
  DragAcceptFiles(Self.Handle, True);
end;

procedure TMainForm.FormDestroy(Sender: TObject);
begin
  DragAcceptFiles(Self.Handle, False);
end;

procedure TMainForm.WMDropFiles(var Msg: TWMDropFiles);
begin
  inherited;
  showmessage('catch here');
  // some code to handle the drop files here
  Msg.Result := 0;
end;

这段代码没有问题。另外,当我拖放文件时,光标显示状态更改为拖放,但在拖放文件后,什么也没有发生(也没有显示消息)。这有什么问题吗?


在普通的普通应用程序中,问题中的代码会导致WMDropFiles当对象被放到表单上时执行。所以,显然还有其他事情发生阻止了它的工作。最明显的潜在原因是:

  1. 主窗体的窗口句柄在初始调用后重新创建DragAcceptFiles.
  2. 您的进程正在以比在其上删除文件的进程更高的完整性级别运行。例如,您是否以管理员身份运行进程。请注意,以管理员身份运行 Delphi IDE 会导致您的进程在从 IDE 启动时以管理员身份运行。
  3. 您的流程中的其他因素正在干扰拖/放。如果不知道您的应用程序中有什么,就很难猜测这可能是什么。开始删除应用程序的某些部分,直到除了问题中的代码之外什么都没有剩下。

选项 2 似乎很合理。要了解更多信息,请参阅:问:为什么当我的应用程序运行在高架状态时,拖放功能不起作用? – A:强制完整性控制和 UIPI

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当文件拖放到我的表单上时,为什么我的表单没有收到 WM_DropFiles? 的相关文章

随机推荐

  • 如何向 Django-Registration 表单添加占位符

    我正在为我的项目使用 django registration 在我的registration form html file form username form email other fields 我想为每个字段设置占位符 但这是一种内置
  • 使用 JavaScript 更改 HTML 中的链接文本

    我有一个 html 页面 其中有一个名为 open 的链接 单击链接后 文本 打开 应更改为 关闭 我该怎么做呢 Script
  • Webdriver:java.net.BindException:地址已在使用中:连接

    运行 webdriver 时 运行 3 分钟后 出现以下异常并且 Webdriver 崩溃 我仅使用一个 Webdriver 实例和一个 FirefoxDriver 配置文件 Exception in thread main org ope
  • 如何使用C#提交http表单

    我有一个简单的 html 文件 例如
  • PostgreSQL 视图:在另一个计算字段中引用一个计算字段

    我有同样的问题 1895500 但使用的是 PostgreSQL 而不是 MySQL 如何定义具有计算字段的视图 例如 mytable col1 2 AS times two 并创建另一个基于第一个计算字段的计算字段 times two 2
  • _imp 和 __imp 有什么区别?

    当我在 Qt Creator 中工作时尝试使用 MinGW 链接到 MSVC 编译的库时 遇到了一个有趣的错误 链接器抱怨缺少一个符号 就像 imp FunctionName 当我意识到这是由于缺少 extern C 并修复它时 我还使用
  • 为 MySQL 选择数据类型?

    我已经研究和阅读有关 SQL 数据类型几天了 我知道 我知道 这不是很长 对我来说很难掌握的事情之一是如何为 SQL 数据类型选择最佳的数据类型可扩展性 效率和易于访问 我认为如何选择基本数据类型 即 int 与 varchar 非常简单
  • 设置表格行高

    我缺乏 CSS 技能 这让我很头疼 如下图所示 从 firebug 捕获 使用名为 Vaadin 的类似 GWT 的框架 我为 Table 组件指定了类名m2m 模态表我想为该表中的四行设置一个最小高度 但是 我似乎无法让它工作 正如您从图
  • JavaScript:深度比较

    我正在检查这个问题JavaScript 深度比较提问者的解决方案并没有说服我 所以我尝试分析问题并提出了这个 var obj here 2 console log deepEqual obj obj true console log dee
  • React Native 不从 android 中的 SD 卡加载图像

    在 React 本机图像组件中从相机拍照后 我尝试从外部 SD 卡加载图像 如下所示 但它没有在 Android 中渲染 我什至检查了该位置是否缺少图像 但这不是问题 但在 iOS 上 它可以很好地在从相机拍照后从位置加载图像
  • 点对点如何通过路由器工作?

    一台电脑如何通过互联网连接到另一台电脑 例如 程序侦听 PC 1 上的连接 PC 1 位于路由器 1 后面 PC 2 有一个客户端程序尝试连接到 PC 1 在这种情况下 用作听力程序的正确技术 技巧是什么 This 布莱恩 福特的文章解释跨
  • 使用.htaccess,阻止用户访问资源目录,但允许源代码访问资源

    如果我的问题不清楚 我很抱歉 但我不太懂这些行话 我所说的 资源目录 是指我的 css php 脚本 图像 javascript 等 我在图像目录中使用了一个 htaccess 文件 其中包含 deny from all 去做这个 尽管这阻
  • 不安全的代码无法在 Visual Studio 2015 上编译

    我正在尝试在新的 DNX4 6 核心上编译程序 但由于以下原因无法编译 error CS0227 Unsafe code may only appear if compiling with unsafe 这是我的代码 CompilerGen
  • 无法在 Jersey 2.0 中为 Jackson 启用基于 POJO 的 JSON 绑定支持

    我使用 Jersey 生成 JSON 通过 Jackson 进行 POJO 映射 和 Jetty 从 main 方法开始 它非常适合 Jersey 1 x ServletHolder sh new ServletHolder Servlet
  • 仅按可见系列过滤 Highcharts 的图例

    我们正在使用 Highcharts 并有一些复杂的图表 图表上大约有 75 个系列 该系列并未在整个图表中使用 而仅在三个月范围内使用 因此 我们每年大约有 15 个系列 整个图表涵盖五年 大约 15 5 75 个系列 但是 Highcha
  • 在 dart 中将 HTML 字符串解析为 DOM

    In dart 我想解析一个字符串 到 DOM 以便我可以操作生成的 DOM 中的元素 我知道在 JQuery 中 有 parseHTML 来处理它 但我在 dart 中找不到类似的东西 谢谢 我尝试过html2lib 但输出Documen
  • 如何在 PHP 中使用正则表达式获取每个单词的首字母

    我有一个字符串变量 我想获取它的每个单词的第一个字母 我希望最终结果是第一个字母的数组 language Sample Language preg match b a z i language match print r match 我得到
  • 在php中获取上传的文件大小(以字节为单位)

    我正在上传一个图像文件 我想仅使用 PHP 每次获取该图像的大小 以字节为单位 到目前为止我已经做到了 name FILES image name if name null tmpDest FILES image tmp name size
  • 如何在 Java 中比较字符串和字符数组?

    在我的程序中 我试图比较我的字符数组asterixA 到一个字符串word在 if 条件下 例如 if word equals asterixA 但这给了我一个错误 还有其他方法可以比较它们吗 您必须将字符数组转换为字符串或字符串转换为字符
  • 当文件拖放到我的表单上时,为什么我的表单没有收到 WM_DropFiles?

    我正在使用 Embarcadero RAD Studio XE 来开发应用程序 我正在尝试使用以下代码将文件拖放到应用程序中 TMainForm class TForm public procedure WMDropFiles var Ms