1. 程式人生 > >C++與C#介面通訊[部分為轉載,具體看附件連結]

C++與C#介面通訊[部分為轉載,具體看附件連結]

    //內嵌到MFC的某個視窗中,視窗控制代碼為hhwnd
    CRect rect;
    GetClientRect(hhwnd, &rect);

    LPCTSTR args = _T("");
    PROCESS_INFORMATION processInfo;
     STARTUPINFO startupInfo;
     ::ZeroMemory(&startupInfo, sizeof(startupInfo));
     startupInfo.cb = sizeof(startupInfo);

     startupInfo.dwFlags = STARTF_USESHOWWINDOW;

     startupInfo.wShowWindow = SW_HIDE;
     if(::CreateProcess(cstrFilePath, (LPTSTR)args, NULL,  NULL, FALSE,  0, NULL, NULL, &startupInfo, &processInfo))
     {
            //延遲0.5s,等待程序建立成功
            Sleep(500);
            while(true)
            {
                ::EnumWindows(&EnumWindowsProc, processInfo.dwThreadId);//Iterate all windows
                if(NULL != apphWnd)
                {
                    break;
                }
            }

            HANDLE     hPro = processInfo.hProcess;

            if(apphWnd!=NULL)
            {
                ::SetParent(apphWnd,hhwnd
);
                SetWindowLong(apphWnd, GWL_STYLE, WS_VISIBLE);
                ::MoveWindow(apphWnd, 0, 0,rect.right, rect.bottom, true);
                ::UpdateWindow(apphWnd);
                ::ShowWindow(apphWnd,SW_SHOW);
            }
        }