Укажите отработанное время

Отработанное время:
Продуктивное время:
Bug 7398 - Исправить explorer   Make a simular bug
Summary: Исправить explorer
Status: CLOSED FIXED
Alias: None
Product: WINE@Etersoft
Classification: Продукты (Products)
Component: Консоль ; Вызов программ (show other bugs)
Version: 1.0.9
Hardware: PC All
: P4 minor
Target Milestone: ---
Assignee: Виталий Перов
QA Contact: Andrey Vusik
URL:
Whiteboard:
Keywords:
Depends on: 2465
Blocks: 42 2088
  Show dependency treegraph
 
In work:
Reported: 2011-06-28 16:20 MSK by Виталий Перов
Modified: 2011-07-01 16:05 MSK (History)
3 users (show)

See Also:
Заявки RT:
Связано с:
Дата напоминания:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Виталий Перов 2011-06-28 16:20:54 MSK
+++ Данная задача создана размножением задачи 2465 +++

В 1С81 можно открывать вложеные файлы (например *.doc).

> trace:process:CreateProcessW app (null) cmdline L"explorer
> C:\\windows\\temp\\123g.doc"
>

Просто бага воспроизводится при помощи:
$ wine explorer документ.doc

-------------------------------------------
Откатил патч:
commit 33206ccfdf6ebaedc7555aa13b5bee0188e59199
Author: Vitaly Perov <vitperov@etersoft.ru>
Date:   Sun Dec 13 01:54:18 2009 +0300

    fix eterbug #2465: explorer can't open *.doc files

Для начала надо проверить воспроизводится ли бага.
Патч точно должнен быть в eterwine после версии 1.3.23
Comment 1 Виталий Перов 2011-06-28 17:10:27 MSK
Проверил. Бага воспроизводится
Comment 2 Виталий Перов 2011-06-28 17:44:48 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, вместо этого окно обозревателя создаётся прямо в программе.

Пока не нашёл на каком этапе можно проверить передаваемые параметры и выполнить открытие файла.
Comment 3 Виталий Перов 2011-06-30 15:53:38 MSK
Сейчас поддерживается открытие эксплорером только заданной директории.

Директория берётся из параметров коммандной строки. На основе её создаётся класс IShellFolder.

Класс может хранить только параметры директории.
Если ещё класс IShellItem, он может быть связан с конкретным файлом или директорией.
Нужно проверить, поддерживает ли этот класс IExplorerBrowser. Если да, то можно сделать вполне корректный патч
Comment 4 Виталий Перов 2011-06-30 17:59:34 MSK
Сделал... не работает.
Нормального патча видимо не получится, придётся делать хак.

На всякий случай выкладываю свои наработки (вдруг в будущем пригодится).

    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);
Comment 5 Виталий Перов 2011-06-30 18:24:44 MSK
Сделал патч, отправил в рассылку.
Comment 6 Виталий Перов 2011-06-30 18:42:12 MSK
Патч приложен. Всё должно работать
Comment 7 Виталий Перов 2011-07-01 16:05:45 MSK
Отправил письмо с текущей реализацией в wine-devel@winehq.org. Возможно кто-нибудь подскажет правильную реализацию