在vc下如何结束一个正在执行的.exe文件???
刚涉足C...求指点给你写个例子,你开个记事本看看,程序能不能关闭你的记事本
#include "stdafx.h"
#include <stdio.h>
#include <tchar.h>
#include <iostream>
#include <Windows.h>
#include <fstream>
#include <string>
#include <TlHelp32.h>
using namespace std;
int main()
{
int a=0;
printf("请输入结束记事本进程的方式,输入1代表调用dos命令,输入2代表api\n");
scanf("%d",&a);
if (a==1)
{
system("@echo off");
system("taskkill /IM notepad.exe >nul");
system("@echo on");
}
if (a==2)
{
int pid=0;
HANDLESnapShot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
PROCESSENTRY32W pro;
pro.dwSize=sizeof(PROCESSENTRY32W);
BOOLFlag=Process32First(SnapShot, &pro );
while(Flag)
{
if(wcscmp(pro.szExeFile,L"notepad.exe")==0)
pid=pro.th32ProcessID;
Flag=Process32Next(SnapShot,&pro);
}
if (pid)
{
HANDLE hdl= OpenProcess(PROCESS_ALL_ACCESS,FALSE,pid);
if (hdl)
TerminateProcess(hdl,0);
}
}
return 0;
}
方法很多,比如用apiTerminateProcess 当然要先打开进程用OpenProcess
或者用system()调用dos命令 taskkill结束指定进程 machimilk 发表于 2014-3-10 21:08 static/image/common/back.gif
方法很多,比如用apiTerminateProcess 当然要先打开进程用OpenProcess
或者用system()调用dos命令 tas ...
关键是我现在得不到已经执行的.exe程序的ID,在另外vc程序中能不能通过.exe文件名来关闭此进程 ysm 发表于 2014-3-10 21:28 static/image/common/back.gif
关键是我现在得不到已经执行的.exe程序的ID,在另外vc程序中能不能通过.exe文件名来关闭此进程
得到pid容易,没pid也可以用taskkill结束的 machimilk 发表于 2014-3-10 22:31 static/image/common/back.gif
给你写个例子,你开个记事本看看,程序能不能关闭你的记事本
谢谢...可以啦!!! machimilk 发表于 2014-3-10 21:02 static/image/common/back.gif
给你写个例子,你开个记事本看看,程序能不能关闭你的记事本
不知道咋回事,这段代码在vc下老是不能执行....
#include "stdafx.h"
#include <stdio.h>
#include <Windows.h>
#include <string>
#include <TlHelp32.h>
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
// TODO: Place code here.
int pid=0;
HANDLESnapShot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
PROCESSENTRY32W pro;
pro.dwSize=sizeof(PROCESSENTRY32W);
BOOLFlag=Process32First(SnapShot, &pro );
while(Flag)
{
if(wcscmp(pro.szExeFile,L"notepad.exe")==0)
pid=pro.th32ProcessID;
Flag=Process32Next(SnapShot,&pro);
}
if (pid)
{
HANDLE hdl= OpenProcess(PROCESS_ALL_ACCESS,FALSE,pid);
if (hdl)
TerminateProcess(hdl,0);
}
return 0;
}
ysm 发表于 2014-3-11 18:48 static/image/common/back.gif
不知道咋回事,这段代码在vc下老是不能执行....
#include "stdafx.h"
应该没问题 我在vs2008上面写的unicode环境 ,如果你不成功 API请使用窄字符版本 machimilk 发表于 2014-3-11 19:00 static/image/common/back.gif
应该没问题 我在vs2008上面写的unicode环境 ,如果你不成功 API请使用窄字符版本
恩恩,我用的是vc6.0编译环境,估计是编码问题吧
页:
[1]