1,221
社区成员
发帖
与我相关
我的任务
分享
//---------------------------------------------------------------------------
DWORD __fastcall FindProcessName(String strPName)
{
DWORD procid = 0 ;
AnsiString ExeFile;
HANDLE snapshot;
PROCESSENTRY32 processinfo;
processinfo.dwSize = sizeof(processinfo);
snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
if(snapshot==NULL)
{
return false;
}
bool flag = Process32First(snapshot,&processinfo);
while(flag)
{
ExeFile = AnsiString(processinfo.szExeFile);
if(ExeFile == strPName)
{
procid = processinfo.th32ProcessID ; break ;
}
flag = Process32Next(snapshot,&processinfo);
}
return procid ;
}
//---------------------------------------------------------------------------
BOOL CALLBACK EnumProc2Wnd(HWND hWnd,LPARAM lParam)
{
DWORD dwProcessId;
GetWindowThreadProcessId(hWnd, &dwProcessId);
LPWNDINFO pInfo = (LPWNDINFO)lParam;
if(dwProcessId == pInfo->dwProcessId)
{
pInfo->hWnd = hWnd;
return false;
}
return true;
}
//---------------------------------------------------------------------------
HWND __fastcall FindWndProcessID(DWORD dwProcessId)
{
WNDINFO wi;
wi.dwProcessId = dwProcessId;
wi.hWnd = NULL;
EnumWindows((FARPROC)EnumProc2Wnd,(LPARAM)&wi);
return wi.hWnd;
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::btnIARClick(TObject *Sender)
{
DWORD dwPID= FindProcessName(IARPROC) ;
if(dwPID != 0)
{
HWND hWnd = FindWndProcessID(dwPID);
if(hWnd != NULL)
{
// ShowMessage("IAR RUNNING");
ShowWindow(hWnd , SW_RESTORE);
SendMessage(hWnd, WM_SYSCOMMAND, SC_RESTORE, 0);
int h = int(hWnd) ;
ShowMessage(IntToStr(h));
//PostMessage( hWnd, WM_SYSCOMMAND, SC_MAXIMIZE, 0 );
//BringWindowToTop(hWnd);
}
else
{
//没有找到句柄
}
}
else
{
//没有改进程ID
}
}
//
if(hWnd != NULL)
{
// ShowMessage("IAR RUNNING");
ShowWindow(hWnd , SW_RESTORE);
SendMessage(hWnd, WM_SYSCOMMAND, SC_RESTORE, 0);
int h = int(hWnd) ;
ShowMessage(IntToStr(h));
//PostMessage( hWnd, WM_SYSCOMMAND, SC_MAXIMIZE, 0 );
//BringWindowToTop(hWnd);
}