1. VC 关闭 进程
首先根据进程名找到该进程的ID,如已知某进程的进程名为Application.exe,可以用列举进程的办法找的该进程的ID(前提是系统中有且只有一个这样的进程):
HANDLE hProcessSnap;
TCHAR ProcessName[]="Application.exe";
DWORD ProcessID=0x00;
hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if(hProcessSnap==INVALID_HANDLE_VALUE)
{
printf("列举进程失败\n");
return ;
}
PROCESSENTRY32 pe32;
pe32.dwSize = sizeof(pe32);
BOOL bProcess = Process32First(hProcessSnap, &pe32);
TCHAR buff[1024];
while(bProcess)
{
if(strcmp(ProcessName,pe32.szExeFile)==0)
{
ProcessID= pe32.th32ProcessID;
break;
}
memset(buff, 0x00, 1024);
bProcess=Process32Next(hProcessSnap, &pe32);
}
if(ProcessID==0)
{
printf("没有找到进程%s", ProcessName);
return;
}
然后把ProcessID作为参数,按照下面这篇文章所说的方法得到该进程的主窗口句柄:http://www.vckbase.com/document/viewdoc/?id=404
假设得到的句柄为pWnd,然后直接向该窗口发送关闭消息即可:
pWnd->PostMessage(WM_CLOSE); //这种方法是让目标进程自己退出,所以属于安全退出
一般程序会默认处理WM_CLOSE消息,所以当向一个进程的主窗口窗口发送WM_CLOSE消息时就可以关闭该进程,不信你可以试试用下面的代码向任务管理器发送WM_CLOSE消息:
HWND hwnd = ::FindWindow("#32770","Windows 任务管理器");
if(hwnd)
{
::PostMessage(hwnd , WM_CLOSE, 0, 0);
}
要想让被关闭程序在退出之前完成当前任务,则只有在被关闭程序中添加WM_CLOSE的消息函数OnClose(),在里面作出规定:只有在完成任务后才能退出。
希望能帮到你
2. vc如何退出程序
在你要退出程序的地方,加一个exit(返回值)函数
正常退出的话用exit(0);
非正常退出可以用exit(-1);
若满意请及时采纳,谢谢
3. 怎么才能在vc不退出黑屏幕运行程序
while(1)
{
你要的操作
}
4. 如何在vc中关闭程序
可以实现的。最简单的方法就是: ShowWindow(hTagetWnd, SW_HIDE); 你甚至可以获得别的进程的窗口句柄,隐藏别的进程的窗口。 比如做个多开的游戏外挂。 可能会在一定程度上节省系统资源,毕竟窗口不再显示了, 但可能不一定是节约内存,也可能是CPU使用率等。 但是具体能节约到什么程度,不太清楚。
5. Vc++ 自己做的小程序无法执行。
scanf(“%d”, h) 中的h改成 &h 需要传入h的地址来进行修改
6. 用vc怎么关闭一个外部程序?
终止指定进程
#include "tlhelp32.h"
void KillExe(const char* szExeName)
{
if (szExeName == NULL)
return 0;
int lsr = lstrlen(szExeName);
if (lsr == 0)
return 0;
PROCESSENTRY32 my;
HANDLE l = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (((int)l) != -1)
{
my.dwSize = sizeof(my);
if (Process32First(l, &my))
{
do
{
if (lstrcmpi(szExeName, my.szExeFile + lstrlen(my.szExeFile) - lsr) == 0)
{
HANDLE hProcessHandle;
hProcessHandle = OpenProcess(0x1F0FFF, true, my.th32ProcessID);
if (hProcessHandle != NULL)
{
if (TerminateProcess(hProcessHandle, 0) != NULL)
{
CloseHandle(hProcessHandle);
}
}
CloseHandle(l);
return;
}
}while (Process32Next(l, &my));
}
CloseHandle(l);
}
}
调用方式
KillExe("c:\\windows\\notepad.exe");
完整或部分路径名,不区分大小写
7. VC有没有退出过程的命令
exit(-1);
8. VC++6.0写的c++小程序运行后自动退出
VC的话,Ctrl+F5运行,就不会一闪而过了