注册 | 登录

游侠NETSHOW论坛





游侠NETSHOW论坛 游侠NETSHOW论坛 游侠PC游戏综合讨论区 taskkill结束进程后图标不消失
查看: 4825|回复: 9
打印 上一主题 下一主题

[已解决] taskkill结束进程后图标不消失 [复制链接]

帖子
1048
精华
0
积分
526
金钱
5604
荣誉
0
人气
17
评议
0
跳转到指定楼层
楼主
发表于 2014-2-1 12:23:27 |只看该作者 |正序浏览
本帖最后由 温情小女人 于 2014-2-1 12:31 编辑

我用VB结束进程后,图标不自动消失,需要鼠标移动到图标上才会消失,

set WshShell=createobject("wscript.shell")
WshShell.run "cmd.exe /c taskkill /f /im *.exe  /t" ,0
要怎么改才会让它消失呢?

使用道具 举报

帖子
3605
精华
0
积分
2216
金钱
12372
荣誉
38
人气
228
评议
0
10#
发表于 2014-2-1 13:49:36 |只看该作者
用C/C++来写吧。
function KillTask(ExeFileName: string): integer; //杀进程函数
const
PROCESS_TERMINATE=$0001;
var
ContinueLoop: BOOL;
FSnapshotHandle: THandle;
FProcessEntry32: TProcessEntry32;
begin
result := 0;
FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
//取得系统快照
FProcessEntry32.dwSize := Sizeof(FProcessEntry32);
//循环例举,如果到达最后,则退出loop
ContinueLoop := Process32First(FSnapshotHandle,FProcessEntry32);
while integer(ContinueLoop) <> 0 do
begin //取得进程名,大写后好作比较
if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile))=
UpperCase(ExeFileName))
or (UpperCase(FProcessEntry32.szExeFile) =
UpperCase(ExeFileName))) then
Result := Integer(TerminateProcess(OpenProcess(
PROCESS_TERMINATE, BOOL(0),
//调用terminateprocess结束符合的进程项
FProcessEntry32.th32ProcessID), 0));
ContinueLoop := Process32Next(FSnapshotHandle,FProcessEntry32);
end;
end;

ContinueLoop := Process32First(FSnapshotHandle,FProcessEntry32);
//这一句是从进程链中,取出一个到FProcessEntry32结构中,然后
在这个结构中取得进程名。至于FProcessEntry32,你用按下ctrl同时在这个上面鼠标点下,可以看到它的详细定义。
  人杰惟追古解良,士民争拜汉云长。
  桃园一日兄和弟,俎豆千秋帝与王。
  气挟风雷无匹敌,志垂日月有光芒。
  至今庙貌盈天下,古木寒鸦几夕阳。

使用道具 举报

帖子
6879
精华
0
积分
3524
金钱
15610
荣誉
6
人气
244
评议
0
9#
发表于 2014-2-1 13:45:47 |只看该作者
温情小女人 发表于 2014-2-1 13:37
感谢大神

汗,兄弟加油哦,这些都是很入门的一些东西。其实个人不建议你学vbs,它调用第三方还用activex,太古老了

activex、dde这些已经是十几、二十年前的技术了,现代的程序员哪里还用这些东西哦。很多人可能听都没听过哦~

你别把精力浪费在折腾这些落伍技术上

使用道具 举报

帖子
1048
精华
0
积分
526
金钱
5604
荣誉
0
人气
17
评议
0
8#
发表于 2014-2-1 13:37:04 |只看该作者
感谢大神

使用道具 举报

帖子
6879
精华
0
积分
3524
金钱
15610
荣誉
6
人气
244
评议
0
7#
发表于 2014-2-1 13:27:50 |只看该作者
温情小女人 发表于 2014-2-1 12:53
大神有没有刷新任务图标的命令啊

都給说了嘛,肯定是不能实现这个功能。要实现的话你要用更高级的东西

例如用c/c++写个com,或者命令行程序,然后你用vbs或bat来调。
已有 1 人评分金钱 收起 理由
椛朶朶 + 5 助人为乐,品格高尚~

总评分: 金钱 + 5   查看全部评分

使用道具 举报

帖子
1048
精华
0
积分
526
金钱
5604
荣誉
0
人气
17
评议
0
6#
发表于 2014-2-1 12:53:53 |只看该作者
大神有没有刷新任务图标的命令啊

使用道具 举报

帖子
6879
精华
0
积分
3524
金钱
15610
荣誉
6
人气
244
评议
0
5#
发表于 2014-2-1 12:49:29 |只看该作者
温情小女人 发表于 2014-2-1 12:42
用BAT隐藏不了启动的窗口啊

可以隐藏的,但要用到WMI,那个东西比较复杂。

另外,用vbs和bat就不要想实现自动清除图标这功能了,图标释放你要用win32api,不然就只能被动等事件触发系统自行清理。

vbs是前端脚本,它的解释器有安全限制,不能直接调用本地资源的,只能通过activex。

windows的shell比较弱,功能都很差。如果linux就能直接完成这个功能了,windows不行。你还是要正儿八经地用更高级一点的开发工具来做

使用道具 举报

帖子
1048
精华
0
积分
526
金钱
5604
荣誉
0
人气
17
评议
0
地板
发表于 2014-2-1 12:42:55 |只看该作者
用BAT隐藏不了启动的窗口啊

使用道具 举报

帖子
6879
精华
0
积分
3524
金钱
15610
荣誉
6
人气
244
评议
0
板凳
发表于 2014-2-1 12:35:42 |只看该作者
神叨叨的,用命令行还挂个VBS,搞毛线,直接bat不就行了

使用道具 举报

日冕圣斗士·山猫座
闪亮地狱爪

帖子
8328
精华
0
积分
4647
金钱
2336
荣誉
44
人气
340
评议
0

沙发
发表于 2014-2-1 12:29:34 |只看该作者
{:13_448:}小猫猫表示不明白,帮顶了

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

手机版|Archiver|游侠NETSHOW论坛 ( 苏ICP备2023007791号 )

GMT+8, 2025-8-2 12:56 , Processed in 0.409200 second(s), 13 queries , Gzip On, Memcache On.

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

分享到