2013-03-04 214 views
1

我試圖從外部文件(從Windows文件管理器)拖到ListView控件上。我之前做過這件事,但似乎無法讓事件發生。將外部文件拖放到VB6上ListView控件

我的步驟如下:

  • 創建ListView控件
  • 設置視圖屬性3 - lvwReport
  • 將OLEDropMode屬性來1 -ccOLEDropManual

我認爲這是所有我不得不這樣做,但我的ListView1_OLEDragDrop事件不會觸發。

我填充了一些項目的ListView以防萬一。

我嘗試設置在ListView1_OLEDragOverEffect = vbDropEffectCopyListView1_OLEGiveFeedback但這似乎沒有影響或者(這也不會改變光標)

注:我能得到的startDrag事件拖出何時啓的控制

有人可以確認這仍然適用於Windows 7?

+0

我可以確認它的工作原理。我所做的只是將listview1.oledropmode設置爲ccOLEdropmanual,並且oledrapdrop事件確實觸發。我在嘗試添加'MS Windows Common Controls 6.0'時遇到了一個奇怪的錯誤,並且無法添加組件,但我只是重新註冊了ocx文件(C:\ Windows \ SysWOW64 \ MSCOMCTL.ocx)錯誤離開了。 – Motes 2013-03-04 22:19:05

+0

@motes - 感謝,參照我的回答,你可以嘗試以管理員身份運行並查看它是否仍然激活? – 2013-03-05 12:22:51

回答

0

看起來,以管理員身份運行時,拖放到ListView不起作用。

  • 當我嘗試這個在IDE(它被設置爲以管理員身份運行),這是行不通的。
  • 如果我使用我編譯的exe文件,它可以正常工作,但是如果我將我編譯的exe文件作爲管理員運行(右鍵單擊Run As Admin),則不起作用。

我不知道爲什麼不工作但

+0

我相信這是一個「安全功能」。 – 2013-03-05 14:34:31

+0

@MarkHurd - 當然,如果它是一個安全功能,你會期望它能夠反過來工作? – 2013-03-05 15:44:15

+1

Explorer以中等完整性級別運行,管理很高,因此Windows操作系統不相信Window的Explorer對您的程序執行的操作。我認爲資源管理器以中等完整性運行,以阻止正常的管理員用戶刪除重要的東西,或使惡意軟件更難以使用資源管理器來控制系統,等等。 – Motes 2013-03-05 15:52:32

1

這似乎是UIPI (User Interface Privilege Isolation),一個新的安全功能,它不會允許低特權的應用程序具有更高的privliege應用程序接口。它可以被繞過,主要是爲了允許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。註冊程序與認證文件與signtool,附帶了Visual Studio中,通過輸入一個命令提示符下輸入:

signtool sign /t http://timestamp.digicert.com /f "c:\path\to\mycert.pfx" /p pfxpassword "c:\path\to\file.exe" 

包括在清單設置爲true UIaccess定義一個trustInfo節文件爲您的exe文件。我這樣做是使用Make My Manifest

MMM

現在,應用程序應該能夠繞過UIPI,但只能從一個安全的位置運行時,如 「C:\ Program Files文件\」,「C:\ Windows \「或任一個子目錄。

或者,您可以禁用UAC。