如何获得自己进程的HANDLE值和正确的id值?
我想在应用程序中获得自己的进程HANDLE 和ID但是HANDLE 总是-1,这是怎么回事?MFC程序。 问题点数:0、回复次数:8Top
1 楼kingzai(stevenzhu)回复于 2004-12-01 13:50:59 得分 0
use GetWindowThreadProcessId can get handle id from main hwnd.
then call OpenProcess can get handle.
what is your code?Top
2 楼vcleaner(我没当大哥很久了.......)回复于 2004-12-01 13:51:29 得分 0
你是怎么获得的?Top
3 楼vcleaner(我没当大哥很久了.......)回复于 2004-12-01 13:52:51 得分 0
参考:
void CInstallUserDLLApp::EndProgram(CString strExeName)
{
CString strExeNameToFind = strExeName;
HANDLE SnapShot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
if(SnapShot==NULL)
{
//MessageBox("检测当前进程失败!");
return ;
}
SHFILEINFO shSmall;
CString str,strTemp;
PROCESSENTRY32 ProcessInfo;//声明进程信息变量
ProcessInfo.dwSize=sizeof(ProcessInfo);//设置ProcessInfo的大小
//返回系统中第一个进程的信息
BOOL Status=Process32First(SnapShot,&ProcessInfo);
int m_nProcess=0;
DWORD m_ProcessID=0;
while(Status)
{
m_nProcess++;
ZeroMemory(&shSmall,sizeof(shSmall));
//获取进程文件信息
SHGetFileInfo(ProcessInfo.szExeFile,0,&shSmall,
sizeof(shSmall),SHGFI_ICON|SHGFI_SMALLICON);
strTemp=ProcessInfo.szExeFile;
strTemp.MakeUpper();
strExeNameToFind.MakeUpper();
if(strTemp.Find(strExeNameToFind,0) >= 0)
{
m_ProcessID=ProcessInfo.th32ProcessID;
break;
}
//获取下一个进程的信息
Status=Process32Next(SnapShot,&ProcessInfo);
}
// TODO: Add extra validation here
if(m_ProcessID!=0)
{
HANDLE hProcess= OpenProcess( PROCESS_ALL_ACCESS, FALSE, m_ProcessID);
if(::TerminateProcess(hProcess,1))
{
//AfxMessageBox(" The process has been successfully killed",MB_OK);
;
}
}
}Top
4 楼ppiy3670()回复于 2004-12-01 13:54:38 得分 0
GetCurrentProcess 得到但前进程的HANDLE。
GetCurrentProcessId 得到当前进程的ID。Top
5 楼vcleaner(我没当大哥很久了.......)回复于 2004-12-01 13:56:22 得分 0
DWORD GetWindowThreadProcessId(
HWND hWnd, // handle to window
LPDWORD lpdwProcessId // address of variable for process identifier
);
hWnd = (CMainFrame *)AfxGetMainWnd()->GetSafeHwnd();
Top
6 楼nobounded(风)回复于 2004-12-01 14:17:53 得分 0
GetCurrentProcess 返回-1
GetCurrentProcessId 返回一个值,被验证是不对的。
我试试你们提供的建议。
Top
7 楼DentistryDoctor(不在无聊中无奈,就在沉默中变态)回复于 2004-12-01 14:54:07 得分 0
GetCurrentProcess 返回-1
GetCurrentProcessId 返回一个值,被验证是不对的。
不曾碰到过。Top
8 楼DentistryDoctor(不在无聊中无奈,就在沉默中变态)回复于 2004-12-01 14:54:33 得分 0
如果可以,倒可以看看你的工程。Top
相关问题
- 进程ID的值的转换
- 如何根据一个进程的名称得到进程的ID和HANDLE啊?
- win2k中,已知一个进程的id 或 handle , 如何获得它的父进程的id 或handle ?
- 怎样用进程的ID得到他的handle
- 当有某进程的ID或此进程某窗口的句柄handle时,如何得到此进程的application的句柄handle?
- 在本进程中如何得到进程ID,也就是在2000的任务管理器中的那个值
- 请教:使用API,如何根据进程的HANDLE或ID,获得该进程的线程数量?(不用Tool Help创建快照)
- 锁/进程ID的疑惑
- 根据进程HANDLE获取进程对应的文件名?
- 知道一个进程的ID/HANDLE/FileName,怎么取得它在内存中的映像文件地址?!




