c语言怎么关闭正在运行的应用程序

c语言怎么关闭正在运行的应用程序,第1张

可以通过system 函数,调用dos命令taskkill实现关闭正在运行的应用程序。

system("taskkill /im notepad.exe")

会关闭记事本镇宏应用。

system("taskkill \F /pid 1234 \T")

会强制结束pid为1234的进程及其子进程。

关于taskkill的详细描述如下:

TASKKILL [/S system [/U username [/P [password]]]] { [/FI filter] [/PID processid | /IM imagename] } [/F] [/T]

参数列表:

/S system 指定要连接到的远程系统

/U [domain\]user 指定应该在哪个用户上下文

执行这个命令。

/P [password] 为提供的用户上下文指定密码。如果忽略,提示输入。

/F 指定要强行终止的进程。

/FI filter 指定筛选进或筛选出查询的的任务。

/PID process id 指定要终止的进程的PID。

/IM image name 指定要终止的进程的宴让图像名。通配符 '*'可用来指定所有图像名。

/T Tree kill: 终止指定的进程和任何由此启动的子进程。

/? 显示帮助/用法。

筛选器:

筛选器名 有效运算符 有效值

----------- --------------- --------------

STATUS eq, ne 运行 | 没有响应

IMAGENAME eq, ne 图像名

PID eq, ne, gt, lt, ge, le PID 值

SESSION eq, ne, gt, lt, ge, le 会话编号

CPUTIME eq, ne, gt, lt, ge, le CPU 时间,格式为

hh:mm:ss。

hh - 时,

mm - 钟,ss - 秒

MEMUSAGE eq, ne, gt, lt, ge, le 内存使用,单位为 KB

USERNAME eq, ne 用户名,格式为

[domain\]user

MODULES eq, ne DLL 名

SERVICES eq, ne 服务名

WINDOWTITLE eq, ne 窗口标题

注晌旅局意: 只有带有筛选器的情况下,才能跟 /IM 切换使用通配符 '*'。

注意: 远程进程总是要强行终止,

不管是否指定了 /F 选项。

//kill进程from名字

BOOL KillProcessFromName(LPCSTR lpProcessName)

{

//创建进程快照(TH32CS_SNAPPROCESS表示创建所有进程的快照)

HANDLE hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0)

//PROCESSENTRY32进程快照的结构体

PROCESSENTRY32 pe

//实例化后使用Process32First获取第一个快照的进程前必做的初始化 *** 作

pe.dwSize = sizeof(PROCESSENTRY32)

//下面的IF效果同:

//if(hProcessSnap == INVALID_HANDLE_VALUE) 无效的句柄

if(!Process32First(hSnapShot,&pe))

{

return FALSE

}

CString strProcessName = lpProcessName

//将字符串转换为小写

strProcessName.MakeLower()

//如果句柄有效 则一直获取下一个句柄循环下去

while (Process32Next(hSnapShot,&pe))

{

//pe.szExeFile获取当前进程的可执行文件名称

CString scTmp = pe.szExeFile

//将可执行文件名称所有英文字母修改为小写

scTmp.MakeLower()

//比较当前进程的可执含御行文件名称和传递进来的文件名称是否谈或岩相同

//相同的话Compare返回0

if(!scTmp.Compare(strProcessName))

{

//从快照进程中获取该进程的PID(即任务管理器中的PID)

DWORD dwProcessID = pe.th32ProcessID

HANDLE hProcess = ::OpenProcess(PROCESS_TERMINATE,FALSE,dwProcessID)

::TerminateProcess(hProcess,0)

CloseHandle(hProcess)

return TRUE

}

scTmp.ReleaseBuffer()

}

strProcessName.ReleaseBuffer()

return FALSE

}

以杀死qq程序为例,我们可以通团桥过下列方式:

KillProcessFromName("qq.exe")

您好!出现:0x???????? 指令引用的0x????????内存。该内存不能为"read"或"written"。答案【shijan8原创】★严禁复制★

【1】出现该问题原因很多,首先一定要清楚是在什么时候出现该问题,把下面写的看完,对照您电脑出现的问题进行正确的解决。

【2】盗版系统或Ghost版本系统,系统文件错误或丢失,也会出现该问题,及时安装官方发行的补丁,{检查电脑年、月、日是否正确}。建议:最好安装【正版】系统或【完整版】系统。

【3】检查驱动是否出现问题,重新安装驱动或及时更新驱动。

【4】病毒引起的:升级杀毒软件或下载专杀工具,清理恶意插件,对电脑全盘杀毒。

【5】硬件引起的:

(1)可能是内存条出现的小问题,关机断电,把内存条拆下清理干净重新安装。必要时更换内存条。(硬件上一般不会出现该问题)

【6】软件引起的:

(1)安装的软件与系统或其它软件发生冲突,盗版或带病毒的软件,请慎重下载软件,最好使用正版。【这里主要说的是检查开机启动项,把没必要启动的启动项禁止开机启动】

(2)如果你的电脑中安装了两款或两款以上的同类软件,比如:两款杀毒软件、两款优化系统软件等,请卸载一款,以免发生冲突,以保持备租电脑稳定性。

(3)有些系统补丁下载安装了错误补丁,可能与您当前的系统或其它软件发生冲突,也会出现该问题。卸载该补丁,找到适合您电脑补丁,重新下载重新安装。

(4)当下载安装或打开运行播放器、游戏、QQ等第三方软件,出现该问题时。可能是您下载的软件存在着危险,毁磨系统本身为了保护系统不受影响,也会出现该内存不能为“read”或“wrtten”。一般的解决办法就是卸载该软件重新安装。如果不能解决,需要更换同类型其它版本的软件,或找到发生冲突的软件卸载它,问题才能解决。

【注意】:如果以确定电脑没有病毒,检查清理电脑是否存在恶意插件,把它清理掉。如果您使用windows IE浏览器出现该问题,尤其是打了错误补丁,最近windows IE变得不太稳定。用360安全卫士、安装的急救箱或其它软件进行系统修复,如果没有效果,升级或降低IE版本试试。如果纤滚斗还是不行,最简单的解决办法就是:下载更换其它浏览器。【不用删除windows IE,直接使用其它浏览器即可。】比如:360安全浏览器、世界之窗浏览器、傲游等。

如果上面说的检查都没问题,可以试试下面的方法:看看能不能解决。

◆开始→运行→输入cmd→回车,在命令提示符下输入下面命令

for %1 in (%windir%\system32\*.dll) do regsvr32.exe /s %1回车。

完成后,在输入下面的

for %i in (%windir%\system32\*.ocx) do regsvr32.exe /s %i 回车。

如果怕输入错误,可以复制这两条指令,然后在命令提示符后击鼠标右键,打“粘贴”,回车,耐心等待,直到屏幕滚动停止为止。(重启电脑)。

●在检查运行regedit进入注册表, 在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellExecuteHooks 下,应该只有一个正常的键值{AEB6717E-7E19-11d0-97EE-00C04FD91972}, 将其他的删除。【如果还有一个(默认)值,不用管它,也不能删除,一般它为空。】必要时【还原】或重新安装系统。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12457088.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存