51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 3711|回复: 4
打印 上一主题 下一主题

[原创] 适用于 QTP 的 dll 及源代码(直接调用 WINAPI 实现),功能:按进程名关闭进程

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2007-2-28 16:53:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
花了一天半时间做出来的,参考了 MSDN ,WIN32 API 说明,又上 CSDN 讨论,我记得以前哪位仁兄发过一个类似的 dll,但是下到我的机器上后不能用,因为需要 MFC 的某某dll,于是自己写了一个 dll (VC++6.0),没用 MFC ,直接调用 WINDOWS API 实现的,并在 winxp 和 win2003 下测试了一下,均 OK,本人编程菜鸟一个,高手勿笑,希望借此程序抛砖引玉,给大家提供一个自动化测试思路,如果你喜欢,可以在源代码上进行扩展,实现自己想要的功能,如果发现 bug,请通知我,谢谢

核心代码如下
**********************************************************
WINDLL_API int killprocess(char * processname)
{
      
        HANDLE hSnapshot;
        int flag;
        int eqflag=0;
        long int pid=-1;
        hSnapshot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
        PROCESSENTRY32* processInfo=new PROCESSENTRY32;
        processInfo->dwSize=sizeof(PROCESSENTRY32);
    flag=Process32First(hSnapshot,processInfo);
        while(flag!=0)
        {
        eqflag=0;
    for(int i=0;processInfo->szExeFile!='\0';i++)
        {
             
        if(processInfo->szExeFile!=processname)
                eqflag=1;
               
        }
        //printf("%d\n",eqflag);
        if(eqflag==0)
    pid=processInfo->th32ProcessID;
        flag=Process32Next(hSnapshot,processInfo);
        }
        CloseHandle(hSnapshot);
        //printf("%d",pid);
        if(pid==-1)
        return 0;
        HANDLE hProcess=OpenProcess(PROCESS_ALL_ACCESS,TRUE,pid);
        //printf("%d",hProcess);
        TerminateProcess(hProcess,0);
        return 1;


}

***********************************************************


使用说明及 dll 见附件,如果此贴不沉,可能放上注释版源码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2007-2-28 17:00:38 | 只看该作者
我第一!
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2007-2-28 17:05:22 | 只看该作者
唉,原来源码不能整个复制的,复制后就出错了,呵呵,发现 HTML 语言的一个 BUG,后面的斜体实际上是因为源码中含有 i 变量,这在 HTML 表示斜体,不好意思,稍后放上新版源码
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2007-2-28 17:08:01 | 只看该作者
新版代码

**********************************************
WINDLL_API int killprocess(char * processname)
{
      
        HANDLE hSnapshot;
        int flag;
        int eqflag=0;
        long int pid=-1;
        hSnapshot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
        PROCESSENTRY32* processInfo=new PROCESSENTRY32;
        processInfo->dwSize=sizeof(PROCESSENTRY32);
    flag=Process32First(hSnapshot,processInfo);
        while(flag!=0)
        {
        eqflag=0;
    for(int j=0;processInfo->szExeFile[j]!='\0';j++)
        {
             
        if(processInfo->szExeFile[j]!=processname[j])
                eqflag=1;
               
        }
        //printf("%d\n",eqflag);
        if(eqflag==0)
    pid=processInfo->th32ProcessID;
        flag=Process32Next(hSnapshot,processInfo);
        }
        CloseHandle(hSnapshot);
        //printf("%d",pid);
        if(pid==-1)
        return 0;
        HANDLE hProcess=OpenProcess(PROCESS_ALL_ACCESS,TRUE,pid);
        //printf("%d",hProcess);
        TerminateProcess(hProcess,0);
        return 1;


}

***********************************************
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2007-2-28 17:16:01 | 只看该作者
顶了
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-10-6 02:26 , Processed in 0.089400 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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