打开exe并隐藏程序窗口

  HANDLE m_hProcess;
  HWND hWnd;
  long g_ulProcessId;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
    //registerMessage(this);

    p360Button = new T360Button(this);
    p360Button->ButtonText = "打开进程";
    p360Button->Setsize(TRect(120,50,220,80));
    p360Button->SetControlTransparentColor(0xffff0000);
    p360Button->OnClick = T360OnClick;
}
//---------------------------------------------------------------------------
//回调函数
BOOL CALLBACK EnumWndProc(HWND hWnd, LPARAM lParam)
{
	TCHAR szWndText[MAX_PATH];
	unsigned long dwProcId;
	GetWindowThreadProcessId(hWnd, &dwProcId);
	if(dwProcId == g_ulProcessId)
	{
		if(NULL == ::GetParent(hWnd))
		{
			*(HWND*)lParam = hWnd;
			return FALSE;
		}
	}
	return TRUE;
}
//查找主窗口
HWND TForm1::GetProcessMainWnd()
{	
	HWND hWnd;
	if(0 == EnumWindows((WNDENUMPROC)EnumWndProc, (LPARAM)&hWnd))
	{
		return hWnd;
	}
	return NULL;
}

//------------------------------------------------------
//打开进程
void __fastcall TForm1::T360OnClick(TObject * Sender)
{
	STARTUPINFO si;
	PROCESS_INFORMATION pi;
	memset(&si, 0, sizeof(STARTUPINFO));
	memset(&pi, 0, sizeof(PROCESS_INFORMATION));

	si.cb = sizeof(STARTUPINFO);
	si.wShowWindow = SW_SHOW;
	si.dwFlags = STARTF_USESHOWWINDOW;
        char szCmd[MAX_PATH];
	strcpy(szCmd, "GMISServer.exe");

	BOOL bSucceed = CreateProcess(NULL, szCmd, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);
	if(bSucceed)
	{
		m_hProcess = pi.hProcess;
		g_ulProcessId = pi.dwProcessId;
	}
	else
	{
		ShowMessage("创建进程失败");
	}


}
//隐藏窗口
void __fastcall TForm1::Button1Click(TObject *Sender)
{
	if(m_hProcess != INVALID_HANDLE_VALUE)
	{   
		hWnd = GetProcessMainWnd();
		if(::IsWindowVisible(hWnd))
		{	
			::ShowWindow(hWnd, SW_HIDE);
		}
		else
		{	
			::ShowWindow(hWnd, SW_SHOW);
		}
	}
}
//---------------------------------------------------------------------------
//关闭进程
void __fastcall TForm1::Button2Click(TObject *Sender)
{
    	if(TerminateProcess(m_hProcess, 0))
	{
		ShowMessage("结束进程成功");
	}
	else
	{
		ShowMessage("结束进程失败.");
	}
	m_hProcess = INVALID_HANDLE_VALUE;    
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值