如何知道某个程序是否正在运行??
解决方案 »
- 请教一个动态创建数组的问题
- 打听一下成都C++的待遇
- 编辑控件输入焦点的问题
- ShellExecute获取所调用程序的返回信息:)
- 开发工具VC,使用OLEDB进行数据访问,如何动态的使用表,视图以及如何访问其中的数据等.(即不利用类向导等现生成CLASS.)(给出方法或是具体的
- 求救:关于view类的问题
- 关于表中记录互换
- Vc++,如何入门!!!
- TreeCtrl的排序:自己实现的排序函数为什么不起作用?
- 请问高手们一致推荐的《VC++技术内幕》清华的第四版号还是第五办好?是否适合我学?
- 新丁求一个完整的Socket程序。
- 谁把setwindowext和setviewext讲清楚,100分就是谁的啦:)
AddPrivilege(SE_DEBUG_NAME); //提升进程DEBUG权限
HANDLE hRemoteProcess = NULL;
DWORD pid = ProcessToPID(DESTPROC);//这里的pid就是我们进程PID
// ProcessToPID函数如下:
DWORD ProcessToPID(const char *InputProcessName)
//将进程名转换成进程PID的函数
{
DWORD aProcesses[1024], cbNeeded, cProcesses;
unsigned int i;
HANDLE hProcess = NULL;
HMODULE hMod = NULL;
char szProcessName[MAX_PATH] = "UnknownProcess";
//提升进程权限至DEBUG权限
AddPrivilege(SE_DEBUG_NAME);
// 计算目前有多少进程, aProcesses[]用来存放有效的进程PIDs
if ( !EnumProcesses( aProcesses, sizeof(aProcesses), &cbNeeded ) )
{
return 0;
}
cProcesses = cbNeeded / sizeof(DWORD);
// 按有效的PID遍历所有的进程
for ( i = 0; i < cProcesses; i++ )
{
// 打开特定PID的进程
hProcess = OpenProcess( PROCESS_QUERY_INFORMATION |
PROCESS_VM_READ,
FALSE, aProcesses[i]);
// 取得特定PID的进程名
if ( hProcess )
{
if ( EnumProcessModules( hProcess, &hMod, sizeof(hMod), &cbNeeded) )
{
GetModuleBaseName( hProcess, hMod, szProcessName, sizeof(szProcessName) );
//将取得的进程名与输入的进程名比较,如相同则返回进程PID
if(!stricmp(szProcessName, InputProcessName))
{
CloseHandle( hProcess );
return aProcesses[i];
}
}
}//end of if ( hProcess )
}//end of for
//没有找到相应的进程名,返回0
CloseHandle( hProcess );
return 0;
}
其中的参数xxxx是指你要找的程序的标题。