C语言判断进程是否存在

#include <windows.h>
#include <tlhelp32.h>    //进程快照函数头文件
#include <stdio.h>

bool getProcess(const char *procressName)                //此函数进程名不区分大小写
{
    char pName[MAX_PATH];                                //和PROCESSENTRY32结构体中的szExeFile字符数组保持一致,便于比较
    strcpy(pName,procressName);                            //拷贝数组
    CharLowerBuff(pName,MAX_PATH);                        //将名称转换为小写
    PROCESSENTRY32 currentProcess;                        //存放快照进程信息的一个结构体
    currentProcess.dwSize = sizeof(currentProcess);        //在使用这个结构之前,先设置它的大小
    HANDLE hProcess = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);//给系统内的所有进程拍一个快照

    if (hProcess == INVALID_HANDLE_VALUE)
    {
        printf("CreateToolhelp32Snapshot()调用失败!\n");
        return false;
    }

    bool bMore=Process32First(hProcess,&currentProcess);        //获取第一个进程信息
    while(bMore)
    {
        CharLowerBuff(currentProcess.szExeFile,MAX_PATH);        //将进程名转换为小写
        if (strcmp(currentProcess.szExeFile,pName)==0)            //比较是否存在此进程
        {
            CloseHandle(hProcess);                                //清除hProcess句柄
            return true;
        }
        bMore=Process32Next(hProcess,&currentProcess);            //遍历下一个
    }

    CloseHandle(hProcess);    //清除hProcess句柄
    return false;
}

int main()
{

    if (getProcess("qq.exe"))
    {
        printf("存在\n");
    }
    else
    {
        printf("不存在\n");
    }
    return 0;
}

原文地址:https://www.cnblogs.com/LyShark/p/9158612.html

时间: 2024-11-13 07:57:10

C语言判断进程是否存在的相关文章

反汇编--C语言(判断与分支)

if  else条件判断 C语言实现: void Conditional(int c){ if (c>0 && c<10) { printf("c大于0,小于10"); } else if(c>10 && c<100) { printf("c大于10,小于100"); } else{ printf("其它"); } } void main(){ int num=5; Conditional(

C语言判断系统数据大/小端存储方式

小端存储:数据的低位部分,存储于存储器的低地址空间里. 大端存储:数据的低位部分,存储于存储器的高地址空间里. 首先,一般PC数据存储方式是小端存储. 基本实现思想是:将存储器中所存的数据按字节以地址顺序输出,与存入数据的高低位进行比较,即得出结论. 实现方法一: 1 #include <stdio.h> 2 int main(void) 3 { 4 short int x; 5 char *arr; 6 7 x = 0x1122; 8 arr = (char *)&x; 9 10 i

【系统篇】从C/C++语言到进程启动背后的故事

我们需要运行一个程序或者软件,双击之即可完成.不过从你双击到程序的窗口产生的这“短暂”的时间内,Windows为你做了很多的工作. 首先,系统有一个进程监测到了你的双击操作,这个进程就是系统shell,没错,就是资源管理器explorer.exe,不是IE浏览器了,那是另一个进程IExplorer.exe.你可以尝试打开任务管理器将这个进程结束掉,然后桌面的一切元素都没有了,任务栏,图标什么的都消失了.只剩下墙纸一张,此时,右键菜单也不复存在···因为平时负责这些东西的explorer.exe已

C++ 判断进程是否存在

#include <windows.h> #include "psapi.h" #include <tlhelp32.h> ////判断进程是否存在DWORD GetProcessidFromName(LPCTSTR name){PROCESSENTRY32 pe;DWORD id=0;HANDLE hSnapshot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);pe.dwSize=sizeof(PROCESSE

使用C语言判断栈的方向

这一问题主要是如何判读出先后入栈的变量的地址大小,比如有a, b两个变量一先一后被定义,如果a的地址大于b的地址,则说明是以低地址方向增长的,反之,往高地址方向增长. 在写C程序的时候不能简单直接的定义两个变量来比较它们的地址大小,因为这样很有可能编译器会做优化,最终导致结果不真实.为避免这种编译器优化的情况,可以采用将变量定义到函数中,然后递归调用该函数.例如下面的代码: #include <stdio.h> static int stack_direction = 0; static vo

判断进程存不存在

#!/bin/bash # #调用关闭jboss进程脚本 stopMethodServer.sh #打印出当前的jboss进程:grep jboss查询的jboss进程,grep -v "grep" 去掉grep进程 jmsThread=`ps -ef | grep gdms | grep jboss | grep -v "grep"` echo $jmsThread #查询jboss进程个数:wc -l 返回行数 count=`ps -ef | grep gdms

c语言判断某一年是否为闰年的各种实现程序代码

本文导语: c语言判断某一年是否为闰年的各种实现程序代码1.公历闰年计算原则(按一回归年365天5小时48分45.5秒)1)普通年能整除4且不能整除100的为闰年.(如2004年就是闰年,1900年不是闰年)2)世纪年能整除400的是闰年.(如2000年是闰年... c语言判断某一年是否为闰年的各种实现程序代码 1.公历闰年计算原则(按一回归年365天5小时48分45.5秒) 1)普通年能整除4且不能整除100的为闰年.(如2004年就是闰年,1900年不是闰年) 2)世纪年能整除400的是闰年

inno setup 安装前判断进程是否存在,以及停止相应进程&lt;转&gt;

打包的时候遇到了这样的需求:假似用户都是傻瓜                  式操作,如果更新安装程序的时候,之前的老程序还在运行这个时候如果你去提示让用户吧老程序手动退掉也不现实. 所以当遇到这种情况的时候能不能在更新安装程序上下手,在更新的时候就默认吧老程序杀掉(如果老程序在运行). 答案是明确的inno setup 是可以这样的操作. 下面是转的文章,谢谢作者的分享. ============================================================

使用C语言判断一个IP 地址是否为私有地址

参考:https://zhidao.baidu.com/question/191740827.html 私有IP地址范围:A: 10.0.0.0 10.255.255.255 10.0.0.0/8B: 172.16.0.0 172.31.255.255 172.16.0.0/12C: 192.168.0.0 192.168.255.255 192.168.0.0/16 在C语言中的 socket 结构体如下 struct sockaddr_in { short sin_family; USHOR