用windows API怎样去监测一个程序是否运行?

cyaei 2011-04-20 10:48:27
用windows API编写一个程序(B程序)去监测另外一个程序(A程序)是否运行,如果它(A程序)没有运行不做任何操作,如果它(A程序)运行,从它(A程序)运行的时候开始计时,等到它(A程序)退出时获得他的运行的时间?A程序是固定不变的一个简单示例程序。
小弟刚学这个windows编程,想了好久没有一点思路,各位大虾帮帮忙啊,最好能有可以运行代码。就当练练手吧哈
...全文
691 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
这不是鸭头 2011-08-02
  • 打赏
  • 举报
回复
BOOL GetProcessID(LPCTSTR lpsz)
{
CString strExeName(lpsz);
strExeName.MakeLower();
HANDLE handle=::CreateToolhelp32Snapshot(TH32CS_SNAPALL,0);
PROCESSENTRY32 Info ;
Info.dwSize = sizeof(PROCESSENTRY32);
if(::Process32First(handle,&Info))
{
while(::Process32Next(handle,&Info)!=FALSE)
{
CString ss;
ss=Info.szExeFile;
ss.MakeLower();
if(ss.Compare(strExeName)==0)
{
#ifdef WINCE_HD
CloseToolhelp32Snapshot(handle);
#else
CloseHandle(handle);
#endif
return Info.th32ProcessID;
}
}
#ifdef WINCE_HD
CloseToolhelp32Snapshot(handle);
#else
CloseHandle(handle);
#endif
return FALSE;
}
}
jiyuhai1988 2011-08-02
  • 打赏
  • 举报
回复
到msdn上面去查一下就知道了 呵呵
jiyuhai1988 2011-08-02
  • 打赏
  • 举报
回复
二楼是高手 呵呵
dfatfat 2011-07-27
  • 打赏
  • 举报
回复
char *s="进程名字";
PROCESSENTRY32 pe32;
memset(&pe32,0,sizeof(pe32));
pe32.dwSize=sizeof(pe32);
HANDLE hProcessSnap=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
if(hProcessSnap==INVALID_HANDLE_VALUE)
{
printf("create toolhelp32snapshot error\n");
return -1;
}
BOOL bmore= Process32First(hProcessSnap,&pe32);
while(bmore)
{
if(!strcmp(pe32.szExeFile,s))
{
i=pe32.th32ProcessID;
break;
}
bmore=Process32Next(hProcessSnap,&pe32);
}
CloseHandle(hProcessSnap);
加个 while 加个 sleep
当然 2楼 的方法最好
xxq123321 2011-07-27
  • 打赏
  • 举报
回复
windows核心编程 有进程快照相关api详细介绍和示例源码
na2650945 2011-07-21
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 lactoferrin 的回复:]

学习就要自己动手做,可以定期使用NtQuerySystemInformation获得进程列表,如果有映像名为a.exe的就用SYNCHRONIZE|PROCESS_QUERY_INFORMATION打开进程并用NtWaitForSingleObject等待,等待有信号后表明进程结束,再用NtQueryInforamtionProcess得到进程运行时间
[/Quote]
学习下这个。
lijianli9 2011-07-15
  • 打赏
  • 举报
回复
API接口可以getprocesstime,getthreadtime
tony520131400 2011-07-15
  • 打赏
  • 举报
回复
先添加一个计时器,OnTimer()
void CXxxxDlg:OnTimer(UINT nIDEvent)
{
HWND hwnd =::FindWindow(NULL,"你要测试的窗口");
if(hwnd )
{
开始计时代码!!
}
else
{
KillTimer(nIDEvent);
结束计时的代码,并显示结束时间
}

CDialog::OnTimer(nIDEvent);
}
hooha 2011-04-22
  • 打赏
  • 举报
回复
顶二楼~~~
xengine-qyt 2011-04-22
  • 打赏
  • 举报
回复
2 楼的说的已经满足你的问题了
飞翔的薄荷 2011-04-22
  • 打赏
  • 举报
回复
Process and Thread Functions
中的函数
OpenProcess 打开程序的句柄
WaitForSingleObject 等待OpenProcess打开程序句柄的结束

上面我给那个例子中有OpenProcess的用法 比如结束程序 修改内存等
飞翔的薄荷 2011-04-22
  • 打赏
  • 举报
回复
进程快照
http://download.csdn.net/source/2621894 这个源代码中用到过 可以看下
_free 2011-04-22
  • 打赏
  • 举报
回复
A中用CreateMutex()

B中 OpenMutex()
GetLastError()== ERROR_FILE_NOT_FOUND
WaitForSingleObject
jamseyang 2011-04-22
  • 打赏
  • 举报
回复
oldmtn 2011-04-22
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 oldmtn 的回复:]

IsHungWindow
[/Quote]
错了,是 IsHungAppWindow
oldmtn 2011-04-22
  • 打赏
  • 举报
回复
IsHungWindow
afairycell 2011-04-22
  • 打赏
  • 举报
回复
可以用CreateProcess创建进程,PROCESS_INFORMATION pi = { 0 };STARTUPINFO si = { 0 };保存进程信息和状态,控制si就可以了
Dreadnought 2011-04-20
  • 打赏
  • 举报
回复
创建进程快照,获取procssname 或者路径,如果得到了程序就在运行… 或者findwindow… 不过正确率应该不高,很容易伪造一个窗口去欺骗
cyaei 2011-04-20
  • 打赏
  • 举报
回复
Lactoferrin (列宁): 能说的详细一点吗?本来刚学这个,不大懂啊,谢谢了啊
Lactoferrin 2011-04-20
  • 打赏
  • 举报
回复
如果用驱动程序就更简单,用PsSetCreateProcessNotifyRoutine设置进程创建、结束通知例程,就可以及时获知进程创建的事件
加载更多回复(1)
本文档为开发者提供了开发 BREW 设备平台应用程序所需的 Binary Runtime Environment for Wireless™ (BREW™) 函数和数据结构的信息。 在本参考资料中 《BREW API 参考资料》的余下部分包括以下内容: BREW API 接口 按字母顺序列出 BREW 接口和函数。 助手函数 按字母顺序详列助手函数。 数据类型 按字母顺序详列 BREW 接口使用的数据结构。 每个函数的说明均提供了以下信息: 说明 函数用法的说明。 原型 一个调用结构的示例。 参数A 需要输入和返回的对象。 返回值 从函数调用返回的项目,包括多种类型、消息、值、结构和说明。 备注 帮助理解函数的用法、限制和边界的特殊说明和附加信息。 副作用 (仅在适当情况下) 使用函数调用时函数表现的任何异常行为。 除非存在副作用,否则不显示该标题。 版本 引入此函数的版本。 另请参阅 相关函数或数据结构的交叉参考。 A 注意: 仅当参数表包含混合类型时,参数列表才显示 [in]、[in/out] 和 [out]。 如果表中都是输入参数,将省略 [in]。 BREW 继承函数 每个继承函数均链接至其基类。 以下是继承函数条目的一个示例。 IBITMAP_AddRef() 此函数继承于 IBASE_AddRef()。 详细信息 BREW 应用程序开发者可以得到相关的联机信息和支持。 请访问 BREW 网站了解详细信息: www.qualcomm.com/brew/zh/developer。 请求 BREW 的新功能 如果您在使用 BREW SDK 的过程中对它的功能有任何意见和想法, 欢迎您按如下地址给我们发送电子邮件: brew-request@qualcomm.com。 新功能反应小组将认真考虑您的每一个意见,并通过电子邮件尽快地给予您答复。 BREW™ 程序设计概念 本部分讨论以下 BREW 程序设计概念。 转至主题 学习 BREW SDK 的组件 BREW SDK 中包括的组件。 组件如何交互 如何配合使用下载 BREW SDK 后得到的各种组件和工具。 BREW SDK 目录结构 BREW SDK 中文版的组织方式。 使用小程序和模块 在 BREW 中如何使用小程序和模块编译应用程序 DLL。 还包括一些关于创建小程序和实例,处理小程序事件的主题。 BREW 开发指导原则 如何避免常见错误和缩短测试、调试和修改 BREW 源代码的时间。 创建新的应用程序 创建新 BREW 应用程序的方法。 还包括一些关于使用应用程序向导、处理特定语言资源和使用浮点运算的主题。 访问外壳服务 如何利用 IShell、IBase、IModule 和 IApplet 接口使模块和小程序可以访问外部服务。 事件处理概念 如何处理事件,包括切换事件。 在 EFS 中访问文件或 API 与桌面文件系统(例如 Windows XP)相比,如何在设备的 EFS 上运行应用程序监测进入的 SMS 消息 BREW 电话层如何监测进入的 SMS 消息(如 DMA 设备的 IS-637 SMS 消息)。 管理短时计时器和设备睡眠 如何处理设备睡眠模式和短时计时器。 开发屏幕保护程序 如何在 BREW 中创建屏幕保护程序,包括将应用程序注册为屏幕保护程序的过程。 扩展 BREW API 如何使用 BREW API 扩展自定义 BREW API。 从第三方应用程序调用 MobileShop。 如何向您的应用程序添加 MobileShop URL。 文件系统名称空间和 ACL 在 BREW 中如何处理文件系统名称空间和 ACL。 BREW 安全模式 BREW 如何管理设备上有问题的应用程序。 内容安全 如何确保安全处理从因特网、SMS 消息和其它外部信息源接收的消息。

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧