精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>● CGI>>[灌水]如何使用PERL调用WIN32 API

主题:[灌水]如何使用PERL调用WIN32 API
发信人: demonalex(啊神)
整理人: workingnow(2003-11-22 19:02:46), 站内信件
    今天我要介绍的这个包名叫Win32::API,是由老外Aldo Calpini([email protected])开发的PERL专用WIN32 API接
口包。这个包并不在默认的PERL版本中,安装它的方法(在ActivePerl for WIN32的环境下):
*********************************************************
首先在CMDSHELL下进入PERL目录下的BIN子目录,敲:
ppm(回车)
进入ppm>模式后,敲:
install WIN32-API(回车)
安装提示成功后,敲:
exit(回车)
退出ppm>模式,OK,安装过程完成了。
*********************************************************
    现在介绍一下这个包的基本‘方法’:
=============================================================================================================
-------------------------------------------------------------------------------------
首先导入WIN32 API接口包:
use Win32::API;
-------------------------------------------------------------------------------------
导入一个WIN32 API函数:
Win32::API->Import('WIN32 API动态链接库','调用API表达格式部分');
讲解:楼上格式调用导入了一个WIN32 API函数,这个方法的第一个参数是WIN32 API动态链接库文件(*.DLL);而第
     二个参数则是一个类似C定义格式中定义函数的格式方式,定义格式:

     返回值类型 函数名(参数类型 格式参数[,参数类型 格式参数[,参数类型 格式参数[......参数列表]]])

     调用了这个导入方法后,PERL程序就能直接调用这个WIN32 API函数了。
例子:
Win32::API->Import("kernel32","int GetCurrentProcessId()");
楼上导入了WIN32的API库kernel32.DLL下的GetCurrentProcessId函数,这个GetCurrentProcessId的返回值为int(
整型数),无参数,调用这个函数用于获取当前进程的ID号。
-------------------------------------------------------------------------------------
=============================================================================================================
    最基本的使用方法只需要认识楼上两个PERL语句就可以了。现在看看整个程序实例来总结整个调用过程吧:
*********************************************************
#usr/bin/perl -w
use Win32::API;
Win32::API->Import('kernel32', 'int GetCurrentProcessId()');
$PID=GetCurrentProcessId();
print "$PID\n";
exit 1;
*********************************************************
整个过程是不是很简单呢?现在总结一个整个程序的运行次序:

导入Win32::API包->使用Import方法导入WIN32 API库的API函数->直接调用WIN32 API函数->[I/O操作](如果有需要
的话)->退出程序

整个过程简单明了,但还有一些细节问题是需要注意:
1)Win32::API库是附加库,必须另外安装,其他安装方式比较麻烦,而使用PPM方式安装的话,那台主机必须要是一
  台在线的主机才能完成安装。
2)要熟练地运用这个接口的必须能熟练地记忆各种WIN32 API函数的使用格式与目的。附WIN32 API函数表:
http://www.ego12.com/demonalex/API32.CHM
3)由于这些WIN32 API函数的调用格式都是C语言的格式,所以你必须先弄懂C语言的格式才能正常地运用这些接口。


    就这个接口的易用性与通用性来看,这个包还是不错的(不过这篇文章就写得太烂了)。希望下次能再有机会为
各位更详细地介绍这个包与接口的内容与资料:)......有问题也可以email: [email protected]


----
You may say I'm a dreamer 
But I'm not the only one 
I hope someday you'll join us 
And the world will be as one. 

http://demonalex.cnhacker.cn
http://demonalex.dark2s.org

[关闭][返回]