请指点在系统打创建进程之前和之前如何马上得到通知?
谢谢!
谢谢!
解决方案 »
- 关于多块网卡的机器指定网卡发送数据是的一个问题
- ReadEventLog的问题
- MFC edit control的auto VScroll 和 Horizontal scroll无法更改
- vc rc文件中的 dialog info作用是什么 为什么会变大很多 如何修改
- 如何在编好的程序前加入一个登录界面
- MFC向导建立的单对话筐工程,想自己再画个窗口,怎么做?
- [求助]读mfc下向导建立的sdi代码
- 登录远程Oracle问题。是否一定要用Oracle Client端?如何用?配置数据源吗?还有别的办法吗?用ADO还是ODBC好一点?
- 求助:哪位大虾有键盘扫描码?请请告诉我吧!
- (新手问题)关于dll的简单问题
- 求救!我的程序在Debug情况下可以正常编译执行,但在Realease情况下编译通过,执行出现debug assertion failed!谢谢大家
- 超简单问题求助,关于连接错误error LNK2001
另一种不是很实时的方法,是PSAPI.
它是通过这2个函数来实现的:
void CPsManagerDlg::CProcessesList::DeleteZoobieItem(unsigned long aProcesses[],DWORD cProcess)
{
for(int i=0;i<GetItemCount();i++){
for(unsigned long idx=0;idx<cProcess;idx++){
CString sPID;
sPID.Format( "%d", aProcesses[ idx ] );
if(sPID.CompareNoCase(GetItemText(i,1)) == 0) break;
}
if(idx >= cProcess) DeleteItem(i);
}
}//实现了查找不再运行的程序就从LIST中删除
int CPsManagerDlg::CProcessesList::FindPIDIndex( DWORD pid)
{
CString sPID;
sPID.Format( "%d", pid); for(int i=0;i<GetItemCount();i++){
if(sPID.CompareNoCase(GetItemText(i,1)) == 0) return i;
}
return -1;
}//实现了查找已经存在的就不刷新LIST
void CPsManagerDlg::RefreshList()
{
// m_ctlProcesses.DeleteAllItems();
DWORD aProcesses[ 1024 ];
DWORD cProcesses = GetProcessIDs( aProcesses, sizeof( aProcesses ) ); DWORD idxList = 0;
m_ctlProcesses.DeleteZoobieItem(aProcesses,cProcesses);
for( DWORD idx = 0; idx < cProcesses; idx++ )
{
CString sName = GetProcessBaseModuleName( aProcesses[ idx ] ); if( sName.IsEmpty() )
{
continue;
}
CString sPID;
sPID.Format( "%d", aProcesses[ idx ] );
if(m_ctlProcesses.FindPIDIndex(aProcesses[ idx ]) >= 0) continue;
m_ctlProcesses.InsertItem( idxList, sName );
m_ctlProcesses.SetItemText( idxList, 1, sPID );
m_ctlProcesses.SetItemText( idxList, 2, GetProcessPath( aProcesses[ idx ] ) );
m_ctlProcesses.SetItemData( idxList, aProcesses[ idx ] ); idxList++;
}}//刷新函数
怎么实时得到系统有新的进程打开? 很简单就是用一下FindPIDIndex( DWORD pid)
就可以了:),假如还要动态刷新那些不再运行的程序就需要用DeleteZoobieItem(unsigned long aProcesses[],DWORD cProcess)。
在系统中,负责调用CreateProcess创建新进程是个什么进程?
网上这个例子ps_manager.zip在哪?codeguru或是codeproject
www.xfocus.net有一篇挂接windows api函数,比较不错。