为什么DragAcceptFiles不适用于Delphi中工具属性对话框的TEdit控件>=2005?

为什么DragAcceptFiles不适用于Delphi中工具属性对话框的TEdit控件>=2005?,delphi,delphi-ide,Delphi,Delphi Ide,我试图使Delphi IDE(*1)中“工具属性”对话框上的程序TEdit控件接受从资源管理器中删除文件。这在Delphi6和7中运行良好,但在Delphi2005Up的“新”IDE中不再有效 在Delphi 6/7中,将文件放到编辑控件上会触发WM_DROPFILES消息,TEdit的WindowProc挂钩可以捕捉到该消息。在更高版本中,未收到任何消息。WindowProc上的钩子仍然有效,因为它接收各种其他消息 据我所知,对话框布局、名称和控件保持不变 作为测试,我甚至在对话框中添加了我自

我试图使Delphi IDE(*1)中“工具属性”对话框上的程序TEdit控件接受从资源管理器中删除文件。这在Delphi6和7中运行良好,但在Delphi2005Up的“新”IDE中不再有效

在Delphi 6/7中,将文件放到编辑控件上会触发WM_DROPFILES消息,TEdit的WindowProc挂钩可以捕捉到该消息。在更高版本中,未收到任何消息。WindowProc上的钩子仍然有效,因为它接收各种其他消息

据我所知,对话框布局、名称和控件保持不变

作为测试,我甚至在对话框中添加了我自己的TEdit和TComboBox,以确保它不是这些特定现有控件的问题。它们显示得很好,但是删除文件也不适用于这些

还有什么问题

(*1:通过工具->配置工具->添加或编辑获得的工具 这将是GExperts中的一项新功能。自动完成功能已经适用于这些控件。)

代码如下:

实际挂钩代码如下:


IDE是否在UAC中提升运行?如果是这样,UIPI将阻止这些消息,除非您有IDE进程调用或允许低权限进程发送消息,例如浏览器在用户上下文中不相关地运行。我猜是因为IDE主窗体在您删除它们时在编辑器中打开时已经对该消息做出反应了?@RemyLebeau没有提升,浏览器窗口也没有。@StefanGlienke如果在其他对话框中不起作用,我会这么想。但它在路径字段和“运行参数”对话框的组合框中工作良好。但是,这些控件中的控件不是TEdit控件,而是TEdit和TCOMBOX的自定义后代。实际上,我认为标准TEdit控件的问题会少一些。@RemyLebeau好吧,如果你这么认为的话,那么打开IDE并在IDE中的任何地方放置一个文件-在我的布局中,只有结构面板拒绝放置操作(由红色图标指示)-任何其他控件/dockpanel(包括主菜单)都会接受文件并将其打开。IDE是否在UAC中提升运行?如果是这样,UIPI将阻止这些消息,除非您有IDE进程调用或允许低权限进程发送消息,例如浏览器在用户上下文中不相关地运行。我猜是因为IDE主窗体在您删除它们时在编辑器中打开时已经对该消息做出反应了?@RemyLebeau没有提升,浏览器窗口也没有。@StefanGlienke如果在其他对话框中不起作用,我会这么想。但它在路径字段和“运行参数”对话框的组合框中工作良好。但是,这些控件中的控件不是TEdit控件,而是TEdit和TCOMBOX的自定义后代。实际上,我认为标准TEdit控件的问题会少一些。@RemyLebeau如果你这么认为,那么打开IDE并在IDE中的任何位置放置文件-在我的布局中,只有结构面板拒绝放置操作(由红色图标指示)-包括主菜单在内的任何其他控件/dockpanel都接受该文件并将其打开。