Summary: | Исправить explorer | ||
---|---|---|---|
Product: | WINE@Etersoft | Reporter: | Виталий Перов <vitperov> |
Component: | Консоль ; Вызов программ | Assignee: | Виталий Перов <vitperov> |
Status: | CLOSED FIXED | QA Contact: | Andrey Vusik <night> |
Severity: | minor | ||
Priority: | P4 | CC: | baraka, ddv, lav |
Version: | 1.0.9 | ||
Target Milestone: | --- | ||
Hardware: | PC | ||
OS: | All | ||
Whiteboard: | |||
Заявки RT: | Связано с: | ||
Дата напоминания: | |||
Bug Depends on: | 2465 | ||
Bug Blocks: | 42, 2088 |
Description
Виталий Перов
2011-06-28 16:20:54 MSK
Проверил. Бага воспроизводится Новые изменения в winehq вызваны патчем: commit f2ac486e21c64b664dea527e2621e3c1d830c2cc Author: Jay Yang <jkelleyy@gmail.com> Date: Sat Jun 11 17:42:17 2011 -0400 explorer: Implement the explorer using IExplorerBrowser. Там больше не используется CreateProcessW, вместо этого окно обозревателя создаётся прямо в программе. Пока не нашёл на каком этапе можно проверить передаваемые параметры и выполнить открытие файла. Сейчас поддерживается открытие эксплорером только заданной директории. Директория берётся из параметров коммандной строки. На основе её создаётся класс IShellFolder. Класс может хранить только параметры директории. Если ещё класс IShellItem, он может быть связан с конкретным файлом или директорией. Нужно проверить, поддерживает ли этот класс IExplorerBrowser. Если да, то можно сделать вполне корректный патч Сделал... не работает. Нормального патча видимо не получится, придётся делать хак. На всякий случай выкладываю свои наработки (вдруг в будущем пригодится). SetWindowLongPtrW(window,EXPLORER_INFO_INDEX,(LONG_PTR)info); static void make_explorer_window(IShellFolder* startFolder, WCHAR* pathW) ret = IShellFolder_ParseDisplayName(startFolder, NULL, NULL, pathW, NULL, &pidl_testfile, NULL); WINE_FIXME("ParseDisplayName returned %x\n", ret); //ret = pSHCreateShellItem(pidl_cwd, NULL, pidl_testfile, &shellitem); ret = SHCreateShellItem(NULL, NULL, pidl_testfile, &shellitem); WINE_FIXME( "SHCreateShellItem returned %x\n", ret); //ret = IExplorerBrowser_BrowseToObject(info->browser,(IUnknown*)shellitem, SBSP_ABSOLUTE); ret = IExplorerBrowser_BrowseToIDList(info->browser,pidl_testfile, SBSP_ABSOLUTE); WINE_FIXME( "ExplorerBrowser_BrowseToObject %x\n", ret); ShowWindow(window,SW_SHOWDEFAULT); UpdateWindow(window); Сделал патч, отправил в рассылку. Патч приложен. Всё должно работать Отправил письмо с текущей реализацией в wine-devel@winehq.org. Возможно кто-нибудь подскажет правильную реализацию |