51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 4759|回复: 10
打印 上一主题 下一主题

怎样调用api终止一个进程?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2005-1-31 16:05:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在脚本中,怎样调用api终止一个进程
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏

该用户从未签到

2#
发表于 2005-1-31 16:09:04 | 只看该作者

搂住把问题再讲明白点!

回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2005-1-31 17:43:54 | 只看该作者
就是有时候被测试程序退出的时候会崩溃,进程还残留在任务管理器中,我想在脚本中调用api把进程杀死
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2005-1-31 17:49:53 | 只看该作者

这个和你的脚本的回访顺序可能有关!

1。改变回访顺序,和时间及状态设定;
2。使用事务处理函数;
看行么?
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2005-1-31 21:20:40 | 只看该作者
解决问题的思路:
1.开发一个外部程序提供给winrunner调用,专门杀死进程的
2.楼主可以扩展脚本开发所需要的DLL,然后传入当你要杀死的进程!

不同的系统进程函数是不同的,在 win 98 中,系统提供 TOOLHELP32 API 接口,在 win NT 中,系统提供 PSAPI 函数, 2000而 win 2000 既支持 TOOLHELP 又支持 PSAPI,NT 系统还提供了 NATIVE API (NtQuerySystemInformation),这个函数功能十分强大
这里可以利用外部开发工具开发个dll,然后在winrunner中调用!
核心代码:
#include "stdafx.h"
#include "Psapi.h"

#pragma comment (lib,"Psapi.lib")



int plist(传入进程名字)
{
DWORD Processesid[1024], cbNeeded,size;
unsigned int i;
if (!EnumProcesses(Processesid,sizeof(Processesid),&cbNeeded))
return 0;

size=cbNeeded/sizeof(DWORD);

for (i=0;i<size;i++)
  还有要得到进程名字!
  加入进程名字和得到的进程名字判断代码;
  如果找到了就调用killprocesses函数杀死进程
return 0;
}


上边我简单写的几行代码,你可以找找相关资料!可以完成!
还有就是你可以在winrunner中调用这些函数用load_dll先加载包含上边提到的函数的dll,然后声明,就可以直接使用了
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2005-2-1 08:35:32 | 只看该作者
:d:d:d不错,在学习中!
在winrunner中调用这些函数用load_dll先加载包含上边提到的函数的dll,然后声明,就可以直接使用了,这个可以深入!
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2006-4-18 14:36:51 | 只看该作者
貌似WIN32里就有专门杀进程的API直接可以用
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2006-4-19 15:20:15 | 只看该作者
还有一种方法不需要用API
Step1:Invoke 出Task  Manager Window
Step2:Switch 到进程的Tab
Step3:对那个List开始遍历,找到你要的进程,Press 那个End Process按钮
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2006-4-30 08:48:44 | 只看该作者
那位高手给个例子吧,就以杀掉WINWORD.EXE为例好了啊,谢谢啊
回复 支持 反对

使用道具 举报

该用户从未签到

10#
发表于 2006-5-4 18:32:57 | 只看该作者
是不是大家休息了啊,怎么没人回复啊
回复 支持 反对

使用道具 举报

该用户从未签到

11#
发表于 2006-5-15 17:32:40 | 只看该作者
献丑了 ````

这个可以用dos得命令 (xp下,也许不同的系统不太一样)

taskkill /fi "imagename eq 进程名.exe"
wmic process where name="进程名.exe" call terminate
ntsd -c q -pn 进程名.exe
如果用这三个命令都不能结束的话说明那个进程的级别比较高,或者有个守护进程。具体情况具体分析。

dos_system("taskkill /fi "imagename eq notepad.exe"");
dos_system("wmic process where name="notepad.exe" call terminate");
dos_system("ntsd -c q -pn notepad.exe");

我用它杀qq.exe , notepad.exe 都行

---dos_system("taskkill /fi "imagename eq notepad.exe"");
----dos_system("wmic process where name="notepad.exe" call terminate");

这两个语句中在dos钟可以运行,但实在winrunner中就不可以用`````晕```(我觉得是由于“”的原因```  有谁可以解决下```
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-15 20:02 , Processed in 0.078485 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表