将外部文件拖放到VB6 ListView控件上

将外部文件拖放到VB6 ListView控件上,listview,windows-7,vb6,drag-and-drop,oledragdrop,Listview,Windows 7,Vb6,Drag And Drop,Oledragdrop,我正在尝试将一个外部文件(从windows文件资源管理器)放到列表视图控件上。我以前做过这件事,但似乎无法让事件发生 我的步骤如下: 创建ListView控件 将视图属性设置为3-lvwReport 将OLEDropMode属性设置为1-ccOLEDropManual 我以为这就是我所要做的,但是我的ListView1\u OLEDragDrop事件没有触发 为了以防万一,我在ListView中填充了几个项目 我尝试在列表视图1\u OLEDragOver和列表视图1\u OLEGiveFe

我正在尝试将一个外部文件(从windows文件资源管理器)放到
列表视图
控件上。我以前做过这件事,但似乎无法让事件发生

我的步骤如下:

  • 创建ListView控件
  • 将视图属性设置为
    3-lvwReport
  • 将OLEDropMode属性设置为
    1-ccOLEDropManual
我以为这就是我所要做的,但是我的
ListView1\u OLEDragDrop
事件没有触发

为了以防万一,我在ListView中填充了几个项目

我尝试在
列表视图1\u OLEDragOver
列表视图1\u OLEGiveFeedback
中设置
Effect=vbDropEffectCopy
,但这似乎也没有效果(这甚至不会更改光标)

注意:我可以让StartDrag事件在脱离控制时触发


有人能确认这在Windows7上仍然有效吗

以管理员身份运行时,拖放到ListView上似乎不起作用

  • 当我在IDE中尝试这个(设置为以管理员身份运行)时,它不起作用
  • 如果我使用已编译的exe,它可以工作,但如果我以管理员身份运行已编译的exe(右键单击
    以管理员身份运行
    ),它就不能工作

我不知道为什么is不起作用,但是当以管理员身份运行时,拖放到ListView上似乎不起作用

  • 当我在IDE中尝试这个(设置为以管理员身份运行)时,它不起作用
  • 如果我使用已编译的exe,它可以工作,但如果我以管理员身份运行已编译的exe(右键单击
    以管理员身份运行
    ),它就不能工作
我不知道为什么is不起作用,但它似乎是一种新的安全功能,不允许低权限应用程序与高权限应用程序交互。可以绕过它,主要是为了支持UI自动化应用程序。要绕开这条路,必须做三件事:

1。创建pfx文件并将其作为受信任的根证书颁发机构导入

要创建pfx文件,请下载Openssl并从命令提示符运行:

openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout mycert.pem -out mycert.pem
那么

然后导入证书:

2.通过在命令提示符中输入以下内容,使用Visual Studio附带的signtool为您的程序签名:

signtool sign /t http://timestamp.digicert.com /f "c:\path\to\mycert.pfx" /p pfxpassword "c:\path\to\file.exe"
3.在exe的清单文件中包含一个UIaccess定义设置为true的trustInfo节。我这样做是因为:

现在,该应用程序应该能够绕过UIPI,但只有在从安全位置运行时,如“C:\Program Files\”、“C:\Windows\”或其子目录

或者,您可以禁用UAC。

这似乎是一种新的安全功能,不允许低权限应用程序与高权限应用程序交互。可以绕过它,主要是为了支持UI自动化应用程序。要绕开这条路,必须做三件事:

1。创建pfx文件并将其作为受信任的根证书颁发机构导入

要创建pfx文件,请下载Openssl并从命令提示符运行:

openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout mycert.pem -out mycert.pem
那么

然后导入证书:

2.通过在命令提示符中输入以下内容,使用Visual Studio附带的signtool为您的程序签名:

signtool sign /t http://timestamp.digicert.com /f "c:\path\to\mycert.pfx" /p pfxpassword "c:\path\to\file.exe"
3.在exe的清单文件中包含一个UIaccess定义设置为true的trustInfo节。我这样做是因为:

现在,该应用程序应该能够绕过UIPI,但只有在从安全位置运行时,如“C:\Program Files\”、“C:\Windows\”或其子目录


或者,您可以禁用UAC。

我可以确认它是否正常工作。我所做的只是将listview1.oledropmode设置为ccOLEdropmanual,并且OLEDRAPD ROP事件不会触发。我在尝试添加“MS Windows Common Controls 6.0”时确实遇到了一个wierd错误,无法添加组件,但我刚刚重新注册了ocx文件(C:\Windows\SysWOW64\MSCOMCTL.ocx),错误消失了。@motes-谢谢,关于我的回答,你能试着以管理员的身份运行并查看它是否仍然启动吗?我可以确认它是否正常工作。我所做的只是将listview1.oledropmode设置为ccOLEdropmanual,并且OLEDRAPD ROP事件不会触发。我在尝试添加“MS Windows Common Controls 6.0”时确实遇到了一个wierd错误,无法添加组件,但我只是重新注册了ocx文件(C:\Windows\SysWOW64\MSCOMCTL.ocx),错误消失了。@motes-谢谢,关于我的回答,你能试着以管理员的身份运行并查看它是否仍然启动吗?我相信这是一个“安全功能”@MarkHurd-如果这是一项安全功能,你肯定会希望它反过来工作?资源管理器以中等完整性级别运行,管理级别很高,因此Windows操作系统不信任Windows资源管理器对你的程序所做的操作。我假设Explorer以中等完整性运行,以阻止普通管理员用户删除重要内容,或使恶意软件更难使用Explorer控制系统,等等。当您只想将要删除的内容的文件名粘贴到以管理员身份运行的CMD提示符中时,您会看到它。它似乎没有获得太多的安全性,当一个拷贝粘贴将做完全相同的事情…我相信这是一个“安全功能”。@MarkHurd-当然,如果它是一个安全功能,你会期望它反过来工作吗?Explorer运行中的完整性水平,管理是高的,所以Windows操作系统不信任Windows资源管理器对您的程序所做的操作。我假设Explorer以中等完整性运行,以阻止普通管理员用户删除重要内容,或使恶意软件更难使用Explorer控制系统,等等。当您只想将要删除的内容的文件名粘贴到以管理员身份运行的CMD提示符中时,您会看到它。当一个拷贝粘贴完全可以做到的时候,它似乎没有获得太多的安全性