也谈在Windows Mobile的应用程序里杀进程

 

 这几天做个在PPC上面小项目,需要在程序里播放视频文件,
最初的想法是在程序的弹出对话框里面插入wmp控件,但是没有成功,没有查处到底为什么,
因为对平台不是很了解,且时间紧张,故放弃,转而采用启动wmp进程,播放,关闭,这样
的操作过程。
使用VS2005开发,SDK为:PPC 2003;
一)启动比较简单:

就用调用ShellExcute,在PPC 2003里面没有ShellExcute,只有ShellExcuteEx,其实都
一样的,只是封装而已;
 //播放;
 CString strFileName;(L"video.wmv");
 strFileName = m_strFilePath + strFileName; //取得播放文件的绝对路径;

 memset(&m_objCreateProcess,0,sizeof(m_objCreateProcess));  
 m_objCreateProcess.cbSize   =   sizeof(m_objCreateProcess);  
 m_objCreateProcess.lpVerb=L"open";  
 m_objCreateProcess.lpFile=strFileName.GetBuffer(); 
//注意:这里用了windows系统的文件关联,
//如果这里传入的是wmplayer.exe那么只是打开了wnp,
//即使传入的参数有文件名,也会报错,
 m_objCreateProcess.fMask   =   SEE_MASK_CLASSNAME;  
 m_objCreateProcess.nShow=   SW_HIDE;  

 ShellExecuteEx(&m_objCreateProcess);
//wmplayer.exe被启动了,播放了(那个开心啊,,,,,)


二)关闭进程比较稍微麻烦点:
  大家都知道,在PPC里面关闭wmplayer(按右上角的X或者OK),播放窗口被关闭,但是
wmplayer进程还是在播放的。
下面是我试的几种方法:

1)找到wmplayer.exe的窗口,然后发生WM_CLOSE:没有成功;
分析:PPC里面按wmplayer.exe右上角的X或者ok是关闭窗口,但是进程还在,
关闭了窗口以后,再发生WM_CLOSE,就没有反应了。

2)TerminationProcess:
    这个是可以的,但是一定要通过进程快照,找到wmplayer.exe,然后terminationprocess,
如果只是通过ShellExcuteEX得到的wmplayer.exe的句柄,这个是关不掉的,MSDN里面说的很清楚,
不保证正确;
    后来仔细想了想,PPC自带的设置->内存->停止这个功能也是按照下面的方法做的;
    另外VS2005里面的远程工具中的进程查看器,也应该是用的这种方法;
下面是关闭wmpplayer.exe进程代码:

#include <Tlhelp32.h>

#pragma comment( lib, "Toolhelp") //这个用到Toolhelp库;

StopMediaPlayer()
{
 HINSTANCE hKernel = NULL;
 HINSTANCE hProcessSnap = NULL;
 PROCESSENTRY32   pe32={0};
 DWORD dwTaskCount = 0;

 //创建进程映射
 hProcessSnap = (HINSTANCE)CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
 if(hProcessSnap == INVALID_HANDLE_VALUE){
  DWORD dwError = GetLastError();
  return ;
 }
 dwTaskCount = 0;
 pe32.dwSize = sizeof(PROCESSENTRY32);
 if(Process32First(hProcessSnap, &pe32)){
  do{

  • 0
    点赞
  • 0
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
评论

打赏作者

sailor_Song

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值