VC 关闭 进程

2024-05-13

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(),在里面作出规定:只有在完成任务后才能退出。 

希望能帮到你

VC 关闭 进程

2. vc如何退出程序

在你要退出程序的地方,加一个exit(返回值)函数
正常退出的话用exit(0);
非正常退出可以用exit(-1);
 
若满意请及时采纳,谢谢

3. 怎么才能在vc不退出黑屏幕运行程序

while(1)
{
   你要的操作
}

怎么才能在vc不退出黑屏幕运行程序

4. 如何在vc中关闭程序

可以实现的。最简单的方法就是:  ShowWindow(hTagetWnd, SW_HIDE);  你甚至可以获得别的进程的窗口句柄,隐藏别的进程的窗口。 比如做个多开的游戏外挂。  可能会在一定程度上节省系统资源,毕竟窗口不再显示了, 但可能不一定是节约内存,也可能是CPU使用率等。 但是具体能节约到什么程度,不太清楚。

5. Vc++ 自己做的小程序无法执行。

scanf(“%d”, h) 中的h改成 &h  需要传入h的地址来进行修改

Vc++ 自己做的小程序无法执行。

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);

VC有没有退出过程的命令

8. VC++6.0写的c++小程序运行后自动退出

VC的话,Ctrl+F5运行,就不会一闪而过了
最新文章
热门文章
推荐阅读