如果知道这个程序的类名或窗口标题,可以用FindWindow()函数。
如果不知道,只好枚举进程列表,然后查找。
如果不知道,只好枚举进程列表,然后查找。
解决方案 »
- 关于分割视图的问题
- LNK1179: 无效或损坏的文件: 重复的 COMDAT“?Terminate@Innovative@@$$FYAXXZ”
- DX的一个错误,有待高手解决!!!!!!!!!!
- 求多线程FTP/HTTP下载源代码,哪有呀
- 如何复制多种格式的数据到剪贴板?
- 送分的问题(不要笑话俺)
- [水园公务贴12.7-12.15]--请大家监督,回答一个新版CSDN的一个功能,不想得到可用分和信誉分吗?
- 急需一小程序,望有高手相助!
- 怎么插入动画图片!
- sizeof(struct) pragma pack(16)
- 请问:KillTimer是否要写在OnTimer函数里的最后一行呢?还是随意写呢?
- 弱问题。
void CPtbView::IsAppRun(CString modulename)
{
DWORD buf[4096];
DWORD num;
TCHAR filenamebuf[_MAX_PATH+1];
HMODULE hModule;
DWORD cbReturned;
BOOL bret=EnumProcesses(buf,4095,&num);
bool bfound=false;
CString msg;
if(!bret)
{
AfxMessageBox("Error EnumProcesses");
return;
}
for(int i=0;i<(int)num;i++)
{
HANDLE hProcess =OpenProcess(PROCESS_QUERY_INFORMATION¦ PROCESS_VM_READ,false,buf[i]);
if(hProcess ==NULL)
continue;
bret=EnumProcessModules(hProcess ,&hModule, sizeof(hModule), &cbReturned );
if(bret)
{
DWORD dwret=GetModuleFileNameEx(hProcess ,hModule,filenamebuf,_MAX_PATH);
CloseHandle( hProcess ) ;
if(dwret==0)
{
msg.Format("%d",GetLastError());
AfxMessageBox(msg);
break;
}
else
{
TCHAR* pfind=_tcsstr(filenamebuf,modulename);
if(pfind)
{
bfound=true;
break;
}
}
}
}
if(bfound)
AfxMessageBox("Found it");
else
AfxMessageBox("Not found");
}void CPtbView::OnViewCheckrun()
{
IsAppRun("notepad.exe");
}
大哥,好人那!等我试一下,给你家分!