На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Обратите внимание:
1. Прежде чем начать новую тему или отправить сообщение, убедитесь, что вы не нарушаете правил форума!
2. Обязательно воспользуйтесь поиском. Возможно, Ваш вопрос уже обсуждали. Полезные ссылки приведены ниже.
3. Темы с просьбой выполнить какую-либо работу за автора в этом разделе не обсуждаются.
4. Используйте теги [ code=cpp ] ...текст программы... [ /code ] для выделения текста программы подсветкой.
5. Помните, здесь телепатов нет. Старайтесь формулировать свой вопрос максимально грамотно и чётко: Как правильно задавать вопросы
6. Запрещено отвечать в темы месячной и более давности без веских на то причин.

Полезные ссылки:
user posted image FAQ Сайта (C++) user posted image FAQ Форума user posted image Наши Исходники user posted image Поиск по Разделу user posted image MSDN Library Online (Windows Driver Kit) user posted image Google

Ваше мнение о модераторах: user posted image B.V.
Модераторы: B.V.
  
> iwebbrowser2 cookies
    Приложение создает несколько копий iwebbrowser2 в разных процессах
    Необходимо задать для каждого iwebbrowser2 свою папку с cookies
    Подскажите как это можно реализовать

    Добавлено
    А еще лучше задать для каждого iwebbrowser2 отдельную папку Temporary Internet Files
      Это детали работы внутренностей wininet, на базе которой построена сетевая часть IWebBrowser2.
      Следовательно, штатно - никак; нештатная реализация очевидна: перехватить API, например, те, через которые wininet-библиотека получают путь к %userprofile% и др. директориям, в которых, в конечном итоге, будут лежать юзерские данные вроде Temporary Internet Files.
        IWebBrowser2 получает путь к временным файлам функцией RegQueryValue

        С помощью Detour перехватил RegQueryValueA и RegQueryValueW

        ExpandedWrap disabled
          static LSTATUS(WINAPI * TrueRegQueryValueW)(HKEY hKey, LPCWSTR lpSubKey, LPWSTR lpData, PLONG lpcbData) = RegQueryValueW;
          static LSTATUS(WINAPI * TrueRegQueryValueA)(HKEY hKey, LPCSTR lpSubKey, LPSTR lpData, PLONG lpcbData) = RegQueryValueA;
           
          LSTATUS WINAPI TimedRegQueryValueW(HKEY hKey, LPCWSTR lpSubKey, LPWSTR lpData, PLONG lpcbData)
          {
              LSTATUS lStatus = TrueRegQueryValueW(hKey, lpSubKey, lpData, lpcbData);
              return lStatus;
          }
           
          LSTATUS WINAPI TimedRegQueryValueA(HKEY hKey, LPCSTR lpSubKey, LPSTR lpData, PLONG lpcbData)
          {
              LSTATUS lStatus = TrueRegQueryValueA(hKey, lpSubKey, lpData, lpcbData);
              return lStatus;
          }
           
          BOOL CDlgWebBrowser::OnInitDialog()
          {
              CDialogEx::OnInitDialog();
           
              DetourRestoreAfterWith();
           
              LONG error = DetourTransactionBegin();
              error = DetourUpdateThread(GetCurrentThread());
              error = DetourAttach(&(PVOID&)TrueRegQueryValueW, TimedRegQueryValueW);
              error = DetourAttach(&(PVOID&)TrueRegQueryValueA, TimedRegQueryValueA);
              error = DetourTransactionCommit();
           
              if (!m_pBrowser.Create(0, 0, WS_VISIBLE, rect, this, 3000))
                  return FALSE;
           
              m_lpBrowser = m_pBrowser.GetControlUnknown();
           
              m_lpBrowser->put_Silent(-1);
              m_lpBrowser->Navigate2(&CComVariant(TEXT("https://www.google.com/")), &CComVariant(), &CComVariant(), &CComVariant(), &CComVariant());
           
              return TRUE;
          }


        Не работает. В чем ошибка?
          Кажется ошибся. Вызывается RegQueryValueEx.

          Переделал под RegQueryValueEx. Точка останова срабатывает, но параметры всегда одни и те же

          hKey = 0x00000396 {unused=??? } ТОЛЬКО ТУТ РАЗНЫЙ КЛЮЧ
          lpValueName = 0x00000000 <NULL>
          lpReserved = 0x00000000 {???}
          lpType = 0x00000000 {???}
          lpData = 0x0092db30 "I"
          lpcbData = 0x0092db24 {200}

          после вызова настоящей RegQueryValueEx

          lpcbData = 0x0092db24 {34}

          RegQueryValueEx возвращает 0
          0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
          0 пользователей:


          Рейтинг@Mail.ru
          [ Script execution time: 0,0241 ]   [ 17 queries used ]   [ Generated: 28.03.24, 10:32 GMT ]