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;
}
打开exe并隐藏程序窗口
最新推荐文章于 2024-07-03 09:59:26 发布