• 第三例:禁用程序


    这个程序是我再重新再看这本书时,想起的以前写过的一个这样的程序,如今想起来觉得也是很好,因为此处这个程序完美的融合了前面的知识点。

    介绍一下,这个程序书上没有的,我想到这个可以后台运行用来持续关闭掉任意一个程序,只要知道程序名字,格式如“MicrosoftEdge.exe”,就可以后台关掉这个程序,并且无法再打开,原理就是在一个循环里不断查找这个成勋是否还存在,一旦发现存在立即关闭,如果没有发现,则持续查找,此程序可以通过任务管理器后台关闭,程序没有前台框框。

    代码如下:

     1 #include<stdio.h>
     2 #include<windows.h>
     3 #include<tlhelp32.h>
     4 #include<string.h>
     5 #include<stdlib.h>
     6 //结束进程 
     7 bool TerminateProcessFromId(DWORD ProcessId)
     8 {
     9     bool bRet = false;
    10     HANDLE hProcess = ::OpenProcess(PROCESS_ALL_ACCESS,false,ProcessId);
    11     if(hProcess != NULL)
    12     {
    13         bRet = ::TerminateProcess(hProcess,0);
    14     }
    15     ::CloseHandle(hProcess);
    16     return bRet;
    17 }
    18 
    19 //通过进程名字查找进程ID 
    20 DWORD SearchProcessIdFromName(const char* p)
    21 {
    22     PROCESSENTRY32 pe32;
    23     pe32.dwSize = sizeof(pe32);
    24     DWORD ProcessIdRet =-1;
    25     if(p == NULL)
    26     {
    27         return -1;
    28     }
    29     HANDLE hProcessSnapshot = ::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
    30     bool bMore = ::Process32First(hProcessSnapshot,&pe32);
    31     while(bMore)
    32     {
    33         printf("%s
    ",pe32.szExeFile);
    34         if(strcmp(pe32.szExeFile,p) == 0)
    35         {
    36             ProcessIdRet = pe32.th32ProcessID;
    37             printf("
    
    
    ");
    38             break;
    39         }
    40         bMore = ::Process32Next(hProcessSnapshot,&pe32);
    41     }
    42     ::CloseHandle(hProcessSnapshot);
    43     return ProcessIdRet;
    44 }
    45 
    46 int main(int argc,char* argv[])
    47 {
    48     HWND hwndDos = GetForegroundWindow();//获取前台窗口句柄 
    49     char szName[30];
    50     scanf("%s",szName);
    51     ShowWindow(hwndDos,SW_HIDE);//隐藏前台窗口 
    52     while(1)//持续搜查并关闭监视的程序 
    53     {
    54         DWORD dwProcessId = SearchProcessIdFromName(szName);
    55         ::TerminateProcessFromId(dwProcessId);
    56     }
    57     return 0;
    58 }
  • 相关阅读:
    【卡西欧Fx-5800p系列教程】Pol()和Rec()正反算妙用
    《关于2013年全国测量人员最低工资标准的通知》
    易语言测量编程工具教程篇
    价值300元的《测量宝典》
    业界常用的和不常用cad快捷键
    角度格式批量转化弧度—易语言
    Web.config中 mode="RemoteOnly" 跟mode="On" 区别
    Oracle 批量修改某个用户下表的表空间
    JQuery radio单选框应用
    RadioButtonFor控件
  • 原文地址:https://www.cnblogs.com/FWFC/p/6357837.html
Copyright © 2020-2023  润新知