C++判断进程是否存在lizhigang

一、判断指定程序名的进程是否存在BOOLEnumWindows(WNDENUMPROClpEnumFunc,//pointertocallbackfunctionLPARAMlParam//application-definedvalue);TheEnumWindowsfunctionenumeratesalltop-levelwindowsonthescreenbypassingthehandletoeachwindow,inturn,toanapplication-definedcallbackfunction.EnumWindowscontinuesuntilthelasttop-levelwindowisenumeratedorthecallbackfunctionreturnsFALSE.

BOOLCALLBACKIpEnumFunc(HWNDhwnd,LPARAMlParam){charwndName[100];::GetWindowText(hwnd,wndName,sizeof(wndName));if(wndName!=""){if(strcmp(wndName,name1)==0){WndHnd=hwnd;flag=1;}}return1;}二、判断指定进程名的进程是否存在

DWORDGetProcessidFromName(LPCTSTRname){PROCESSENTRY32pe;DWORDid=0;HANDLEhSnapshot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);pe.dwSize=sizeof(PROCESSENTRY32);if(!Process32First(hSnapshot,&pe))return0;while(1){pe.dwSize=sizeof(PROCESSENTRY32);if(Process32Next(hSnapshot,&pe)==FALSE)break;if(strcmp(pe.szExeFile,name)==0){id=pe.th32ProcessID;break;}}CloseHandle(hSnapshot);returnid;}如果返回值不为零,则存在,否则不存在。三、VC判断程序调用的外部进程是否结束

PROCESS_INFORMATIONpi;STARTUPINFOsi;memset(&si,0,sizeof(si));si.cb=sizeof(si);si.wShowWindow=SW_HIDE;si.dwFlags=STARTF_USESHOWWINDOW;boolfRet=CreateProcess(NULL,str.GetBuffer(str.GetLength()),NULL,FALSE,NULL,NORMAL_PRIORITY_CLASS|CREATE_NO_WINDOW,NULL,NULL,&si,&pi);///判断DWORDExitCode;ExitCode=STILL_ACTIVE;while(ExitCode==STILL_ACTIVE){GetExitCodeProcess(pi.hProcess,&ExitCode);}四、VC判断进程是否存在?比如我想知道记事本是否运行,要用到哪些函数?

enProcess(PROCESS_QUERY_INFORMATION|PROCESS_VM_READ,FALSE,aProcesses[i]);//取得特定PID的进程名if(hProcess){if(EnumProcessModules(hProcess,&hMod,sizeof(hMod),&cbNeeded)){GetModuleBaseName(hProcess,hMod,szProcessName,sizeof(szProcessName));//将取得的进程名与输入的进程名比较,如相同则返回进程PIDif(!stricmp(szProcessName,InputProcessName)){CloseHandle(hProcess);returnaProcesses[i];}}}//endofif(hProcess)}//endoffor//没有找到相应的进程名,返回0CloseHandle(hProcess);return0;}也可以枚举得到所有进程的应用程序名,然后和知道应用程序名比较判断。五、实现程序只运行一次的方法实现程序只运行一次的方法很多,但是原理都是一样的,就是运行第一次的时候设置一个标记,每次运行的时候检查该标记,如果有就说明已经运行了。具体实现:1、在程序初始化的时候(InitInstance())枚举所有的窗口,查找本程序的实例是否存在2、在主窗口初始化的时候在本窗口的属性列表中添加一个标记,以便程序查找.部分关键代码:1、在App的InitInstance()中枚举所有窗口,查找本程序实例

HWNDoldHWnd=NULL;EnumWindows(EnumWndProc,(LPARAM)&oldHWnd);//枚举所有运行的窗口if(oldHWnd!=NULL){AfxMessageBox("本程序已经在运行了");::ShowWindow(oldHWnd,SW_SHOWNORMAL);//激活找到的前一个程序::SetForegroundWindow(oldHWnd);//把它设为前景窗口returnfalse;//退出本次运行}

2、添加EnumWndProc窗口过程函数://添加的标识只运行一次的属性名

CStringg_szPropName="YourPropName";//自己定义一个属性名HANDLEg_hValue=(HANDLE)1;//自己定义一个属性值BOOLCALLBACKEnumWndProc(HWNDhwnd,LPARAMlParam){HANDLEh=GetProp(hwnd,g_szPropName);if(h==g_hValue){*(HWND*)lParam=hwnd;returnfalse;}returntrue;}

3、在主窗口的OnInitDialog()中添加属性//设置窗口属性SetProp(m_hWnd,g_szPropName,g_hValue);再次启动时,先检查当前存在的所有窗口,如果有标题相同的,则把先前运行的窗口当成当前窗口我的程序如下:

HWNDhWnd_Exist;hWnd_Exist=::GetDesktopWindow();hWnd_Exist=::GetWindow(hWnd_Exist,GW_CHILD);for(;;){if(hWnd_Exist==NULL){break;}chars[256];memset(s,0,256);::SendMessage(hWnd_Exist,WM_GETTEXT,255,(LONG)s);if(strstr(s,"******")!=NULL)break;hWnd_Exist=::GetWindow(hWnd_Exist,GW_HWNDNEXT);}if(hWnd_Exist!=NULL){::ShowWindow(hWnd_Exist,SW_SHOWNORMAL);::SetForegroundWindow(hWnd_Exist);exit(0);}

if(!mutexApp.Lock(1))returnFALSE;::CreateMutex(NULL,TRUE,m_pszExeName);if(ERROR_ALREADY_EXISTS==GetLastError()){CWnd*pPrevHwnd=CWnd::GetDesktopWindow()->GetWindow(GW_CHILD);while(pPrevHwnd){if(::GetProp(pPrevHwnd->GetSafeHwnd(),m_pszExeName)){if(pPrevHwnd->IsIconic()){pPrevHwnd->ShowWindow(SW_RESTORE);}pPrevHwnd->SetForegroundWindow();pPrevHwnd->GetLastActivePopup()->SetForegroundWindow();returnFALSE;}pPrevHwnd=pPrevHwnd->GetWindow(GW_HWNDNEXT);}TRACE("Couldnotfondfreviousinstancemainwindow!");returnFALSE;}

创建一个全局的互斥量,每次启动时检查是否存在。

BOOLCRTDBApp::OnlyOneInstance(){if(::CreateMutex(NULL,TRUE,"onlyone")==NULL){TRACE0("CreateMutexerror.");returnFALSE;};if(::GetLastError()==ERROR_ALREADY_EXISTS){CWnd*pPrevWnd=CWnd::FindWindow(NULL,"onlyonehwnd");if(pPrevWnd){if(pPrevWnd->IsIconic())pPrevWnd->ShowWindow(SW_RESTORE);pPrevWnd->SetForegroundWindow();pPrevWnd->GetLastActivePopup()->SetForegroundWindow();returnFALSE;}};returnTRUE;}

THE END
1.c++编译器手机版官方版app2024免费下载安装手机C++编译器app全部平台版本 C++编译器app安卓手机版10.4.1 大小:62.8MB时间:2024-11-26 下载 更多C++编译器app安卓历史版本(4个)相关合辑 代码编辑器apppc浏览器手机免费pdf编辑器app专用app播放器翻译app实时翻译cosplay软件app翻译软件英译汉app软件编程软件app免费编程app软件免费了解汽车的app软件同城购物app https://m.liqucn.com/rj/771305.wml
2.C++教程菜鸟教程C++ 教程C++ 是一种高级语言,它是由 Bjarne Stroustrup 于 1979 年在贝尔实验室开始设计开发的。C++ 进一步扩充和完善了 C 语言,是一种面向对象的程序设计语言。C++ 可运行于多种平台上,如 Windows、MAC 操作系统以及 UNIX 的各种版本。 本教程通过通俗易懂的语言来讲解 C++ 编程语言。 现在开始学习 C++ 编程!https://m.runoob.com/cplusplus/cpp-tutorial.html
3.C++编程C++ 是一种中级语言,它是由 Bjarne Stroustrup 于 1979 年在贝尔实验室开始设计开发的。C++ 进一步扩充和完善了 C 语言,是一种面向对象的程序设计语言。C++ 可运行于多种平台上。本教程通过通俗易懂的语言来讲解 C++ 编程语言。教程包含以下章节基础教程 *C++ 简介https://apps.apple.com/cn/app/wapatv/id1203780811?see-all=developer-other-apps
4.C++编译器下载C++编译器手机版2024官方下载想要查找手机版C++编译器下载安装?PP提供C++编译器2024版官方下载。C++编译器一款非常精简APP,主要为C++语言初学者提供核心的功能,能够随手验证一些小。该支持直接从文件管理器中打开代码文件,方便用户浏览查看。 C++编译器更新说明: 使用全新的编译模块 C++编译器10.4.1下载安装说明: 下载C++编译器到手机上面的方法有很https://wap.pp.cn/app_BywhcxYDgzu/
5.C++初学者编程软件推荐cpp学习app文章浏览阅读453次,点赞5次,收藏8次。在数字时代的浪潮中,编程语言如同构建未来世界的基石,而C++以其强大的性能和广泛的应用领域,成为了众多编程爱好者的首选。_cpp学习apphttps://blog.csdn.net/Helloworld11_/article/details/141394896
6.开启编程之旅C++入门学习软件推荐作为一名编程初学者,熟悉和掌握一个能够提供编程环境的学习软件是必不可少的第一步。这篇文章推荐几款适合C++编程入门的学习软件。 1. Visual Studio Visual Studio是微软开发的一个集成开发环境(IDE)。它不仅支持C++,还支持其他多种编程语言。其强大的代码编辑和调试功能,以及丰富的插件资源,能够大大提升开发效率,也https://px.hxsd.cn/article/1641407185327554560
7.手机上可以编程的app,手机编程软件介绍学编程,最方便的肯定是电脑啦。但是有很多时候电脑没办法带电脑怎么学习编程呢?今天介绍几个可以在手机上编程的软件,手机上可以编程的app,主要分为C/C++,Java,Python,前端网页,Linux这5个方面,感兴趣可以下载尝试一下: 1、C/C++ 这里介绍一个软件—C++编译器(c4droid),可以直接编辑运行C/C++程序,代码高亮、语法http://www.360doc.com/content/22/0925/14/29291909_1049290456.shtml
8.c++编程软件下载手机版C++编译器APP下载v10.1.2安卓版C++编译器APP是可以在手机上面浏览和编辑C++代码文件的一款实用工具,非常适合初学C++编程的新手们使用。C++编译器APP自带语法高亮、代码纠错等功能,可以辅助用户更加快速和高效的完成C++代码编辑操作。而且编辑好的代码还可以直接通过APP来运行并查看运行结果,方便用户对自己编写的C++代码进行调试没功能非常的强大,有需要的http://www.liulan.net/az/22798.html
9.辅导andrioapp辅导app编程辅导Database解析C/C++编程5. Experience Cross-platform app development [Optional] Tasks: 1. Handle long click event for an item in ListView 2. Pop up a dialog 3. Handle item clicking in ListView with Intent and another Activity 4. Develop Cross-platform app with Xamarin [Optional] http://www.7daixie.com/2018082916717371.html
10.北京少儿线上编程培训小码王通过竞赛普及——竞赛提升——集训营,多方面提升孩子C++编程能力,为信奥赛加码! 除了信奥赛,和Scratch、Python相比,C++的学习难度更大一些,因此,如果是零基础的少儿编程学习者,C++上手也会比较慢。 成为小小软件工程师——App Inventor 编程语言的综合训练应用,孩子们都喜欢的App手机开发 https://www.gdzz114.com/zx_pxzx/114747.html
11.牛客APP下载C++Java前端经典笔试面试题库牛客APP是移动版IT求职神器,提供海量C++、JAVA、前端等职业笔试题库,在线进行百度阿里腾讯网易等互联网名企笔试面试模拟考试练习,和牛人一起讨论经典试题,全面提升你的编程能力,轻松搞定面试https://www.nowcoder.com/app
12.C++ProC语言在线编辑和编程教育工具软件下载C++Pro基本简介 .C/C++/C#在线编辑器,你可以在线编程,简单易学.同时支持GO语言在线编程.支持找工作和简历模版下载.支持PHP编程语言.支持Node JS热门脚本.职场热点资讯.工程师最好的工具软件 相关专题 c语言编程软件专题 c语言软件大全 c语言编程软件专题 10款 c语言编程软件专题,为您提供c语言编程软件、c语言编程http://www.onlinedown.net/soft/753555.htm/
13.计算机开放电子书2017归档高级Bash脚本编程指南 3.9.1 (杨春敏 黄毅 译) Gitee 下载 Github 下载 SourceForge 下载 高质量 C C++ 编程指南(林锐) Gitee 下载 Github 下载 SourceForge 下载 A Second Course in Algorithms Lecture Notes (Stanford CS261) Gitee 下载 Github 下载 SourceForge 下载 Advanced Algorithm Design Lecture Notes https://developer.aliyun.com/article/664730
14.2024年最新最全版:小码王在线编程一年费用小码王的在线课会更加注重培养孩子的逻辑思维和创新能力,提供从入门到高阶的全方位编程课程,包括Scratch、APPInventor、Python、C++等多种编程语言的教学,旨在为不同年龄段的孩子打造适合的编程学习路径,提高学习的效率。 01Scratch课程4000元-10000元左右 其中,对于Scratch课程是专为初学者设计的基础课程,通过游戏化的教http://xiaomawang.tantuw.com/news/1182.html
15.手机编程App排行榜华为手机手机编程app推荐手机编程,不仅仅是一款可以在手机上编程的APP。支持C语言,C++,Java,python,go语言,HTML。未来将支持更多编程语言。支持本地运行,无需联网,随时随地写代码。支持随时随地咨询,不懂就问,学习效率翻倍,疑惑瞬间解开。 通俗易懂大白话教程,帮助初学者快速上手。客服在线,编程无忧。这是一款初学者使用的手机编程类APP,https://www.diandian.com/phb/1606/2-1.html
16.c4droid中文版下载C4droidAPP安卓汉化版V8.01下载C4droid APP特点 - 支持C和C++编程语言; - 可以在Android手机或平板电脑上编写、编辑、编译和运行C/C++代码; - 可以使用多种编译器,包括GCC、Clang、Visual C++等; - 支持多种文件格式,包括.c、.cpp、.h、.hpp等; - 支持多种编码格式,包括UTF-8、GBK等; http://www.winwin7.com/azapp/74086.html