Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Windows7 Drag&Drop UIPI 
V
    Опции темы
Illusion Dolphin
  Дата 19.8.2010, 22:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1198
Регистрация: 3.5.2003

Репутация: 4
Всего: 63



Всем добрый день!

Столкнулся с проблемой поддержки Drag&Drop в Windows7:
Берётся рабочая библиотека для работы с Drag&Drop (Drag and Drop Component Suite Version 5.2), которая прекрасно работает в XP. В Windows 7 возникает проблема перетаскивания файлов в/из WindowsExplorer и Desktop. 
Поиск в интернете выдал следующие шаги:

1) Добавление манифеста в программу:

Код

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <assemblyIdentity
    type="win32"
    name="DelphiApplication"
    version="1.0.0.0" 
    processorArchitecture="*"/>
  <description>XXX</description>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity
        type="win32"
        name="Microsoft.Windows.Common-Controls"
        version="6.0.0.0"
        publicKeyToken="6595b64144ccf1df"
        language="*"
        processorArchitecture="*"/>
    </dependentAssembly>
  </dependency>
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
      <security>
       <requestedPrivileges>
        <requestedExecutionLevel level="asInvoker" uiAccess="true"/>
       </requestedPrivileges>
      </security>
  </trustInfo>
</assembly>


Файл my.rc компилируется и добавляется в программу
Код

1 24 XXX.manifest


2) Создаётся сертификат

Код

C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin>makecert -r -pe -n "CN=XXX" -ss PrivateCertStore XXX.cer


Им подписывается приложение:

Код

"c:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\SignTool.exe" sign /v /s PrivateCertStore /n "XXX" /t http://timestamp.verisign.com/scripts/timestamp.dll "D:\XXX.exe"



3) Отключается UIPI для сообщений нам очень нужных:

Код

procedure AllowDragAndDrop;
var
  User32Handle : THandle;
  ChangeWindowMessageFilter : TChangeWindowMessageFilter;
  I : Integer;

const
   MSGFLT_ALLOW = 1;
begin
  User32Handle := LoadLibrary(user32);
  @ChangeWindowMessageFilter := GetProcAddress(User32Handle, 'ChangeWindowMessageFilter');
  if Assigned(ChangeWindowMessageFilter) then
  begin
    //WM_COMMAND for taskbar
    ChangeWindowMessageFilter (WM_COMMAND, MSGFLT_ALLOW);
    ChangeWindowMessageFilter (WM_DROPFILES, MSGFLT_ALLOW);
    ChangeWindowMessageFilter (WM_COPYDATA, MSGFLT_ALLOW);
    ChangeWindowMessageFilter ($0049, MSGFLT_ALLOW);
  end;
end;


И в итоге ничего не помогает! Читал что надо подписывать приложение не самопальным сертификатом, а VerySign к примеру. Но 900$ за это удовольствие это слишком. Можно ли задаром сделать чтобы Drag&Drop работал между моим приложением и WindowsExplorer d Windows7? Кто-нибудь имел опыт?

P.S. Есть вариант полного отключения UAC\UIPI через реестр - но это не рассматривается.


--------------------
В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен.
Шифрование и организация фотографий - Photo Database 4.5
PM MAIL WWW ICQ   Вверх
Illusion Dolphin
Дата 19.8.2010, 22:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1198
Регистрация: 3.5.2003

Репутация: 4
Всего: 63



А решение было очень близко - Reboot  smile 


--------------------
В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен.
Шифрование и организация фотографий - Photo Database 4.5
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0500 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.