51Testing软件测试论坛
标题:
适用于 QTP 的 dll 及源代码(直接调用 WINAPI 实现),功能:按进程名关闭进程
[打印本页]
作者:
intothehit
时间:
2007-2-28 16:53
标题:
适用于 QTP 的 dll 及源代码(直接调用 WINAPI 实现),功能:按进程名关闭进程
花了一天半时间做出来的,参考了 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 见附件,如果此贴不沉,可能放上注释版源码
作者:
ebuluo
时间:
2007-2-28 17:00
我第一!
作者:
intothehit
时间:
2007-2-28 17:05
唉,原来源码不能整个复制的,复制后就出错了,呵呵,发现 HTML 语言的一个 BUG,后面的斜体实际上是因为源码中含有 i 变量,这在 HTML 表示斜体,不好意思,稍后放上新版源码
作者:
intothehit
时间:
2007-2-28 17:08
新版代码
**********************************************
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;
}
***********************************************
作者:
ajasa
时间:
2007-2-28 17:16
顶了
欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/)
Powered by Discuz! X3.2