5546|13

65

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

紧急求助:如何检测一个应用程序正在运行 [复制链接]

请问在wince下如何检测一个应用程序正在运行?
我想使用enumprocess枚举目前所有的进程,但是此函数在ce下无法使用,请问有没有其他的方法?
如果使用findwindow,如何得到窗口的句柄呢?
谢谢!

最新回复

谢谢大家,我再试一下。  详情 回复 发表于 2009-4-3 11:26
点赞 关注

回复
举报

82

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
CloseToolhelp32Snapshot
Closes a handle to a snapshot.

CreateToolhelp32Snapshot
Takes a snapshot of the processes, heaps, modules, and threads used by the processes


Process32First
Retrieves information about the first process encountered in a system snapshot.

Process32Next
Retrieves information about the next process recorded in a system snapshot.

 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
谢谢楼上,我先去试一下
 
 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

4
 
为什么编译的时候会提示说这几个函数是不可解决的外部变量呢?我已经加了它们需要的头文件进去了哦。郁闷死了。
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

5
 
我把问题在描述一下,请大家帮帮忙。
客户有一个应用程序,需要开机自动启动,我们帮他弄好了。现在他要求如果用户使用后退出了应用程序,然后suspend,在wakeup回来,程序还是要能自动启动。
我的想法就是在pwrbutton.c中,在系统从变为“ON”的状态时,检测一下用户的程序有没有正在运行,有的话什么都不做,没有的话则运行该程序。
在pwrbutton.c中,加了一个IsAPRunning函数,如下,用上了2楼所给出的API。但是编译的时候就提示CreateToolhelp32Snapshot,Process32Next等是不可解决的外部变量,头文件Tlhelp32.h已经加上了。
对于AP不是很熟悉,所以请大家帮帮忙,谢谢!

  1. void IsAPRunning(TCHAR ProcessName)
  2. {
  3.     TCHAR szProcessName[MAX_PATH];
  4.    
  5.     PROCESSENTRY32* processInfo;
  6.     processInfo->dwSize=sizeof(PROCESSENTRY32);
  7.     int index=0;
  8.    
  9.     // Get a handle to the process.
  10.     HANDLE hSnapShot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
  11.    

  12.     // Get the process name.

  13.    if (NULL != hSnapShot )
  14.     {
  15.         while(Process32Next(hSnapShot,processInfo)!=FALSE)
  16.         {
  17.                 strcpy(szProcessName,processInfo->szExeFile);
  18.                 if(_tcscmp(szProcessName,ProcessName))
  19.                 {
  20.                         goto Done;
  21.                 }
  22.         }                      
  23.     }
  24.     CloseToolhelp32Snapshot(hSnapShot);
  25.     return FALSE;
  26.    
  27.    Done:
  28.            CloseToolhelp32Snapshot(hSnapShot);
  29.            return TRUE;

  30. }
复制代码
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

6
 
Toolhelp.lib 需要这个库支持
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(中级)

7
 
除了加頭文件檔外, 還要設置工程與toolhelp.lib連接.
 
 
 

回复

59

帖子

0

TA的资源

一粒金砂(初级)

8
 
头文件和lib是必须一起使用的。

头文件只是声明而已,实质性的还是lib——在sources里面加个链接就OK了。
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

9
 
Toolhelp.lib LINK进来
如果没有编进来 从WINCE500\PUBLIC\COMMON\OAK\LIB\X86\RETAIL拷贝到你的库里面去
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

10
 
使用
DWORD GetProcessVersion(
  DWORD ProcessId
);
函数查找已运行应用程序的ID,只要返回值不为NULL就说明程序还在运行.
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

11
 
HWND hwd =NULL;
hwd = FindWindow (L"Dialog",TEXT("窗体名称")); 这是判断窗体是否存在,也可以用mutex来判断,方法很多。
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

12
 
FindWindow 比较好,可以先用spy++查看下窗口的CLASS和标题。
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

13
 
FindWindow不可靠...,在程序开始运行的时候还没出现窗体呢,没办法用这个判断。你连击快的时候就知道了
 
 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

14
 
谢谢大家,我再试一下。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表