Перетащите внешний файл в элемент управления VB6 ListView
Я пытаюсь сбросить внешний файл (из проводника Windows) на ListView
контроль. Я делал это раньше, но, похоже, не могу добиться событий.
Мои шаги следующие:
- Создать элемент управления ListView
- Установите для свойства View значение
3 - lvwReport
- Установите для свойства OLEDropMode значение
1 -ccOLEDropManual
Я думал, что это было все, что я должен был сделать, но мой ListView1_OLEDragDrop
событие не срабатывает.
Я заполнил ListView парой элементов на всякий случай.
Я пытался установить Effect = vbDropEffectCopy
в ListView1_OLEDragOver
и ListView1_OLEGiveFeedback
но это, похоже, не имеет никакого эффекта (это даже не меняет курсор)
Примечание. Я могу получить событие StartDrag, которое будет запускаться при перетаскивании элемента управления.
Может кто-нибудь подтвердить, что это все еще работает на Windows 7?
2 ответа
Похоже, что перетаскивание на ListView не работает при запуске от имени администратора.
- Когда я пытаюсь это сделать в IDE (которая настроена на запуск от имени администратора), это не работает.
- Если я использую свой скомпилированный exe-файл, он работает, но если я запускаю свой скомпилированный exe-файл от имени администратора (щелкните правой кнопкой мыши)
Run As Admin
) это не работает.
Я не знаю, почему это не работает, однако
Похоже, это UIPI (изоляция привилегий пользовательского интерфейса), новая функция безопасности, которая не позволяет приложениям с более низкими привилегиями взаимодействовать с приложениями с более высокими привилегиями. Его можно обойти, главным образом, для учета приложений автоматизации пользовательского интерфейса. Чтобы обойти три вещи должны быть сделаны:
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"
Затем импортируйте сертификат:
2. Подпишите вашу программу сертификатом с помощью signtool, поставляемого с Visual Studio, введя в командной строке следующее:
signtool sign /t http://timestamp.digicert.com /f "c:\path\to\mycert.pfx" /p pfxpassword "c:\path\to\file.exe"
3. Включите раздел trustInfo с определением UIaccess, установленным в true, в файл манифеста для вашего exe-файла. Я сделал это с помощью Make My Manifest:
Теперь приложение должно иметь возможность обходить UIPI, но только при запуске из безопасного места, такого как "C:\Program Files\", "C:\Windows\" или из любого подкаталога.
Кроме того, вы можете просто отключить UAC.