C++怎样关闭一个已经名称的程序的进程?
比如在E:\盘有一个程序叫456.exe,并且正在运行(不一定要在最前台)。如何在一个对话框的按钮事件上编写代码,强制关闭它?另外,我想定期检查任务管理器是否进在运行,如...
比如在E:\盘有一个程序叫456.exe,并且正在运行(不一定要在最前台)。
如何在一个对话框的按钮事件上编写代码,强制关闭它?
另外,我想定期检查任务管理器是否进在运行,如果运行,就关掉它。
这对我很重要,我们的作业是做一个挂机软件,能锁定屏幕,我已经垄断键盘输入,和挟持任务栏,就是不知道怎么屏蔽任务管理器。
我不要通过修改注册表禁用任务管理器,我是想知道怎样关掉一个已经名称并正在运行中的程序的进程。
请哪个高手能告诉小弟,最好是有代码(写在按钮事件的代码),感激不尽! 展开
如何在一个对话框的按钮事件上编写代码,强制关闭它?
另外,我想定期检查任务管理器是否进在运行,如果运行,就关掉它。
这对我很重要,我们的作业是做一个挂机软件,能锁定屏幕,我已经垄断键盘输入,和挟持任务栏,就是不知道怎么屏蔽任务管理器。
我不要通过修改注册表禁用任务管理器,我是想知道怎样关掉一个已经名称并正在运行中的程序的进程。
请哪个高手能告诉小弟,最好是有代码(写在按钮事件的代码),感激不尽! 展开
展开全部
下首州面的一段代码是关闭任务管理器的.你试一下.我是在控制台下写的.
任务管理器应该可以屏蔽掉的,你到网上找一下,应该有相关的知识.
你已屏蔽了键盘输入是什么意轮纳思?那样的话,怎么开锁?在腊芹没编写这类程序的时候,最好是先给程序留一个后门,比如:按F1退出程序.要不然后话,很容易就输入不了信息,只能重启电脑了.
#include <Afx.h>
//#include <windows.h>
#include <Winbase.h>
#include <Tlhelp32.h>
#pragma comment(lib, "Kernel32.lib")
int main()
{
HANDLE hProcessSnap = NULL;
PROCESSENTRY32 process32;
hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
process32.dwSize = sizeof(PROCESSENTRY32);
BOOL b = Process32First(hProcessSnap, &process32);
HANDLE hProcess;
while (b)
{
CString strTempName;
strTempName.Format("%s", process32.szExeFile);
if (strTempName.Find("taskmgr") != -1)
{
DWORD dwId = process32.th32ProcessID;
hProcess = OpenProcess(PROCESS_TERMINATE, FALSE, dwId);
if ( NULL == hProcess )
{
return 0;
}
//printf("%d", GetLastError());
TerminateProcess(hProcess, 0);
//printf("%d", GetLastError());
CloseHandle(hProcess);
}
b = Process32Next(hProcessSnap,&process32);
}
return 0;
}
任务管理器应该可以屏蔽掉的,你到网上找一下,应该有相关的知识.
你已屏蔽了键盘输入是什么意轮纳思?那样的话,怎么开锁?在腊芹没编写这类程序的时候,最好是先给程序留一个后门,比如:按F1退出程序.要不然后话,很容易就输入不了信息,只能重启电脑了.
#include <Afx.h>
//#include <windows.h>
#include <Winbase.h>
#include <Tlhelp32.h>
#pragma comment(lib, "Kernel32.lib")
int main()
{
HANDLE hProcessSnap = NULL;
PROCESSENTRY32 process32;
hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
process32.dwSize = sizeof(PROCESSENTRY32);
BOOL b = Process32First(hProcessSnap, &process32);
HANDLE hProcess;
while (b)
{
CString strTempName;
strTempName.Format("%s", process32.szExeFile);
if (strTempName.Find("taskmgr") != -1)
{
DWORD dwId = process32.th32ProcessID;
hProcess = OpenProcess(PROCESS_TERMINATE, FALSE, dwId);
if ( NULL == hProcess )
{
return 0;
}
//printf("%d", GetLastError());
TerminateProcess(hProcess, 0);
//printf("%d", GetLastError());
CloseHandle(hProcess);
}
b = Process32Next(hProcessSnap,&process32);
}
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1. 遍历进程,得到进程ID
DWORD GetProcessID(LPCTSTR lpProcessName)
{
//创建进程快照耐仔
HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if(hSnapshot != INVALID_HANDLE_VALUE)
{
PROCESSENTRY32 pe32 = {0};
pe32.dwSize = sizeof(pe32);
//拿毕银到第一个进程信息
if(!Process32First(hSnapshot, &pe32))
{
CloseHandle(hSnapshot);
return FALSE;
}
do
{
int nLen = _tcslen(lpProcessName);
int nLen2 = _tcslen(pe32.szExeFile);
if(nLen != nLen2)
{
continue;
}
if(_tcscmp(lower(lpProcessName), lower(pe32.szExeFile)) == 0)
{
return pe32.th32ParentProcessID;
}
} while (Process32Next(hSnapshot, &pe32));
}
return 0;
}
2. 获取进程句柄
HANDLE hProcess = OpenProcess(PROCESS_TERMINATE,FALSE,GetProcessID("yourprocessname"));
3. 结束进程
TerminateProcess(hProcess,0);//昌数汪关闭进程
DWORD GetProcessID(LPCTSTR lpProcessName)
{
//创建进程快照耐仔
HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if(hSnapshot != INVALID_HANDLE_VALUE)
{
PROCESSENTRY32 pe32 = {0};
pe32.dwSize = sizeof(pe32);
//拿毕银到第一个进程信息
if(!Process32First(hSnapshot, &pe32))
{
CloseHandle(hSnapshot);
return FALSE;
}
do
{
int nLen = _tcslen(lpProcessName);
int nLen2 = _tcslen(pe32.szExeFile);
if(nLen != nLen2)
{
continue;
}
if(_tcscmp(lower(lpProcessName), lower(pe32.szExeFile)) == 0)
{
return pe32.th32ParentProcessID;
}
} while (Process32Next(hSnapshot, &pe32));
}
return 0;
}
2. 获取进程句柄
HANDLE hProcess = OpenProcess(PROCESS_TERMINATE,FALSE,GetProcessID("yourprocessname"));
3. 结束进程
TerminateProcess(hProcess,0);//昌数汪关闭进程
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询