用c++判断进程QQ.exe是否存在,如果存在就关机,如果不存在就继续往下运行代码。请大家给出文件头,详细一

我要完整代码。... 我要完整代码。 展开
 我来答
修罗_逆
2010-05-03 · 超过22用户采纳过TA的回答
知道答主
回答量:31
采纳率:0%
帮助的人:0
展开全部
刚写了个 测试成功了。

VC++6.0 XP Win32控制台程序 赶紧把分吧 额

再还有问题 595207641。天天在

#include "stdafx.h"
#include"stdio.h"
#include <windows.h>
#include <tlhelp32.h>

void shutdown()
{
// 以下为提权函数,使其用关机权限,
HANDLE hToken;
TOKEN_PRIVILEGES tkp;
if(!OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES
|TOKEN_QUERY,&hToken))
{
printf("OpenProcessToken调用失败");
}
LookupPrivilegeValue(NULL,SE_SHUTDOWN_NAME,&tkp.Privileges[0].Luid);
tkp.PrivilegeCount=1;
tkp.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken,false,&tkp,0,
(PTOKEN_PRIVILEGES)NULL,0);
//下面为关机函数
if(!ExitWindowsEx(EWX_SHUTDOWN ,0))
{
printf("关机失败");
}
}
int main(int argc, char* argv[])
{
PROCESSENTRY32 pe32;
pe32.dwSize = sizeof(pe32);

HANDLE hProcessSnap = ::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if(hProcessSnap == INVALID_HANDLE_VALUE)
{
printf(" CreateToolhelp32Snapshot调用失败! \n");
return -1;
}

BOOL bMore = ::Process32First(hProcessSnap, &pe32);
while(bMore)
{
printf(" 进程名称:%s \n", pe32.szExeFile);

if(stricmp("QQ.exe",pe32.szExeFile)==0)
{
printf("QQ 运行中,准备关机");
shutdown();
break;
}

bMore = ::Process32Next(hProcessSnap, &pe32);
}

::CloseHandle(hProcessSnap);
printf("QQ 不在运行");
return 0;
}
vbtraz
2010-05-03 · TA获得超过5532个赞
知道大有可为答主
回答量:4152
采纳率:0%
帮助的人:4443万
展开全部
EnumProcess 得到进程列表

然后挨个 OpenProcess, GetProcessImageFileName , 比较一下是不是QQ.exe

都比较完了就。。你想怎么做就怎么做了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式