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

时间:2013-03-04 09:56:19

标签: listview windows-7 vb6 drag-and-drop oledragdrop

我正在尝试将外部文件(从Windows文件资源管理器)删除到ListView控件上。我以前做过这件事,但似乎无法解决这些事件。

我的步骤如下:

  • 创建ListView控件
  • 将View属性设置为3 - lvwReport
  • 将OLEDropMode属性设置为1 -ccOLEDropManual

我认为这就是我必须要做的事情,但我的ListView1_OLEDragDrop事件并没有发生。

为了以防万一,我用一些项目填充了ListView。

我尝试在Effect = vbDropEffectCopyListView1_OLEDragOver中设置ListView1_OLEGiveFeedback,但这似乎也没有效果(这甚至不会更改光标)

注意:我可以在拖出控件时触发StartDrag事件

有人可以确认这仍然适用于Windows 7吗?

2 个答案:

答案 0 :(得分:1)

它似乎是UIPI (User Interface Privilege Isolation),这是一种新的安全功能,它不允许较低权限的应用程序与较高的特权应用程序进行交互。它可以被绕过,主要是为了允许UI自动化应用程序。要绕过三件事:

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

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

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

然后,

openssl pkcs12 -export -out mycert.pfx -in mycert.pem -name "My Certificate"

然后导入证书: Select Certificate Store

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的清单文件中包含一个trustInfo部分,其中UIaccess定义设置为true。我是使用Make My Manifest

完成的

MMM

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

或者,您可以禁用UAC。

答案 1 :(得分:0)

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

  • 当我在IDE(设置为以管理员身份运行)中尝试此操作时,它不起作用。
  • 如果我使用我编译的exe它可以工作,但是如果我以管理员的身份运行我编译的exe(右键单击Run As Admin)它就不起作用。

我不知道为什么不起作用