none
跨进程共享CWEBBROWSER2 NewWindow3事件的LPDISPATCH *ppdisp指针 RRS feed

  • 问题

  • 如题 我使用了内存映射但是 没有效果,我想知道还有什么办法或者通过内存映射在不同进程间共享ppdisp指针,又或者在另外一个进程访问同一session对象和cookie值 谢谢如需贴代码再说
    2014年7月30日 17:19

全部回复

  • 你好,

    你是在进行IE activeX的开发吗?你目前是如何进行内存映射共享的呢?


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2014年7月31日 8:16
  • 您好 感谢您的答复 是这样 代码如下

    第一个进程:

    HANDLE hFile = CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, MEN_SIZE, L"1");
     char *map = (char*)MapViewOfFile(hFile, FILE_MAP_ALL_ACCESS, 0, 0, MEN_SIZE);
     CopyMemory(map, &ppDisp, sizeof(LPDISPATCH));
     UnmapViewOfFile(map);
     
     
     WCHAR path[MAX_PATH + 1];
     GetModuleFileName(NULL, path, MAX_PATH + 1);
     //MessageBox(path);

     SHELLEXECUTEINFO shell = { sizeof(shell) };
     shell.fMask = SEE_MASK_FLAG_DDEWAIT;
     shell.lpVerb = L"open";
     
     shell.lpFile = path;//欲启动进程路径此处因为测试,我使用绝对路径
     shell.nShow = SW_NORMAL;
     shell.lpParameters = L"1";//传递参数
     BOOL ret = ShellExecuteEx(&shell);

    然后第二个进程:OnInitDialog()在里面

    首先if (_wcsicmp(theApp.m_lpCmdLine,L"1")==0)//获取启动参数

    LPDISPATCH *ppDisp = (LPDISPATCH*)GlobalAlloc(GPTR, sizeof(LPDISPATCH));
      HANDLE hFile = CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, MEN_SIZE, L"1");
      char *map = (char*)MapViewOfFile(hFile, FILE_MAP_ALL_ACCESS, 0, 0, MEN_SIZE);
      
      CopyMemory(&ppDisp, map, sizeof(HWND));
      //*b = TRUE;  
      UnmapViewOfFile(map);
      CloseHandle(hFile);

      *ppDisp = m_browser.get_Application();
      m_browser.put_RegisterAsBrowser(TRUE);

    结果不成功

    2014年7月31日 8:57
  • 没有人 用这个方法么或者没有人能解决么,那么请问msdn的大侠么,我如何跨进程访问同一个session和cookie值啊。
    2014年8月1日 9:30
  • 都几天没人知道么,告知另一种方法或者提点一下 都没有人么, jiangchen先生呢?听说她很牛的。
    2014年8月3日 14:10