MFC窗口实现嵌入第三方exe,示例为Qt开发程序嵌入MFC

全部代码在上述markdown文件中,可下载阅读

1. Qt 中应当先设置定时更新窗口,保持更新窗口界面

FullBandJam::FullBandJam(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::FullBandJam)
{
    startTimer(100);
}
void FullBandJam::timerEvent(QTimerEvent *event)
{
    Q_UNUSED(event);
    update();
}

2. MFC 中运行第三方exe,并放到指定窗口

//启动进程
HANDLE C2JamSys::StartProcess(LPCTSTR program, LPCTSTR args)
{
	HANDLE hProcess = NULL;
	PROCESS_INFORMATION processInfo;

	///

	return hProcess;
}
void C2JamSys::RunThirdExe()
{
	//关键部分代码
	strAppDir += _T("\\C2JamSys.exe");//放对应的exe文件名称
	HANDLE handle = StartProcess(strAppDir, _T(""));


///

	if (hwnd)
	{
		SetForegroundWindow();
		::SetParent(hwnd, this->m_hWnd);
		DWORD style = GetWindowLong(hwnd, GWL_STYLE);
		style &= ~WS_CAPTION;//取消标题栏
		//style &= ~WS_THICKFRAME;//取消拖动改变大小
		style &= ~WS_MINIMIZEBOX;//取消最小化
		style &= ~WS_MAXIMIZEBOX;//取消最大化
		style |= WS_CHILD;//属性必须设为WS_CHILD
		SetWindowLong(hwnd, GWL_STYLE, style);
		SetForegroundWindow();


/
	}
}
//设置主窗口退出时,关闭第三方exe	
void C2JamSys::EndThirdExe()
{
	CString exeName = _T("C2JamSys.exe");
    BOOL result = FALSE;
    PROCESSENTRY32 pe;
    HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
    pe.dwSize = sizeof(PROCESSENTRY32);
    if (Process32First(snapshot, &pe))
    {
        do
        {
            if (pe.szExeFile == exeName)
            {
                HANDLE hProcess = OpenProcess(PROCESS_TERMINATE, FALSE, pe.th32ProcessID);
                if (hProcess != NULL)
                {
                    result = TerminateProcess(hProcess, 1);
                    CloseHandle(hProcess);
                    //break;
                }
            }
        } while (Process32Next(snapshot, &pe));
    }
    CloseHandle(snapshot);


}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LovG-Sco-Tec

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值