php通过COM类调用组件的实现代码


Posted in PHP onJanuary 11, 2012

在PHP 4.2.0 至 4.2.3中,可以使用w32api_register_function 函数调用外部的DLL,前提是需要在php.ini中打开扩展的php_w32api.dll。
如果使用的是PHP 5,调用DLL只有使用PHP的COM类了。
基本方法为:$obj = new COM("server.object")
显然COM类将php功能又提高了一大截。同时这个类将组件的PO调用方法改成了OO方法。
在使用COM类之前,确保下面3个条件:
1.启用组件:regsvr32 组件dll
2. 允许调用COM:php.ini中com.allow_dcom =true
3. 账户有权限访问组件
然后就可以直接使用php的com函数调用它了
$obj = new COM("ABC.MyObj"); //一般前边是主文件名、后边是类名,注册表里找这个文件可以找到
这样就生成了一个叫obj的对象,我们就可以用它的属性和方法来操作了
$obj->MyAttr='123';
$obj->SerAttr('str',0);
===================================================================================
一些例子:

<?php 
$phpwsh=new COM("Wscript.Shell") or die("Create Wscript.Shell Failed!"); 
$phpexec=$phpwsh->exec("cmd.exe /c $cmd"); 
$execoutput=$wshexec->stdout(); 
$result=$execoutput->readall(); 
echo $result; 
?> 
<?php 
$obj = new COM("server.object") 
即可以使用COM对象的属性和方法。 
下面以word为例 
// 启动 word 
$word = new COM("word.application") or die("Unable to instanciate Word"); 
print "ioaded Word, version {$word->Version}\n"; 
//将其置前 
$word->Visible = 1; 
//打开一个空文档 
$word->Documents->Add(); 
//随便做些事情 
$word->Selection->TypeText("This is a test..."); 
$word->Documents[1]->SaveAs("Useless test.doc"); 
//关闭 word 
$word->Quit(); 
//释放对象 
$word->Release(); 
$word = null; 
?> 
<?php 
$com=new COM('Scripting.FileSystemObject'); // FSO要使用绝对路径的 
$file=$com ->getfile(__FILE__); //绝对路径 
$file ->attributes='6'; //修改属性为系统、隐藏 
//常数 值 描述 
//Normal 0 普通文件。不设置属性。 
//ReadOnly 1 只读文件。属性为读/写。 
//Hidden 2 隐藏文件。属性为读/写。 
//System 4 系统文件。属性为读/写。 
//Volume 8 磁盘驱动器卷标。属性为只读。 
//Directory 16 文件夹或目录。属性为只读。 
//Archive 32 文件在上次备份后已经修改。属性为读/写。 
//Alias 64 链接或者快捷方式。属性为只读。 
//Compressed 128 压缩文件。属性为只读。 
?>

PHP隐藏文件的方法就是上面的代码了。
<?php 
//这个就可以实现asp的XMLHTTP传马功能 
$xmlhttp=new COM('Microsoft.XMLHTTP') or die("Create Microsoft.XMLHTTP Failed!"); 
$xmlhttp->open('GET','http://localhost/1.txt',false); 
$xmlhttp->send(); 
echo $xmlhttp->responseText; 
/* 
XMLHTTP方法 
Open(bstrMethod, bstrUrl, varAsync, bstrUser, bstrPassword)  
bstrMethod: 数据传送方式,即GET或POST。 
 
bstrUrl: 服务网页的URL。 
 
varAsync: 是否同步执行。缺省为True,即异步执行。False,为同步执行。 
 
bstrUser: 用户名,可省略。 
 
bstrPassword:用户口令,可省略。 
 
Send(varBody) 
 
varBody:指令集。可以是XML格式数据,也可以是字符串,流,或者一个无符号整数数组。也可以省略,让指令通过Open方法的URL参数代入。 
 
setRequestHeader(bstrHeader, bstrvalue) 
 
bstrHeader:HTTP 头(header) 
 
bstrvalue: HTTP 头(header)的值 
如果Open方法定义为POST,可以定义表单方式上传: 
 
xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded") 
XMLHTTP属性 
onreadystatechange:在同步执行方式下获得返回结果的事件句柄。只能在DOM中调用。 
 
responseBody: 结果返回为无符号整数数组。 
 
responseStream: 结果返回为IStream流。 
 
responseText : 结果返回为字符串。 
 
responseXML: 结果返回为XML格式数据。 
*/ 
?>
PHP 相关文章推荐
解析php框架codeigniter中如何使用框架的session
Jun 24 PHP
探讨:web上存漏洞及原理分析、防范方法
Jun 29 PHP
限制ckeditor上传图片文件大小的方法
Nov 15 PHP
将二维数组转为一维数组的2种方法
May 26 PHP
php查询mysql大量数据造成内存不足的解决方法
Mar 04 PHP
php使用MySQL保存session会话的方法
Jun 18 PHP
WordPress中调试缩略图的相关PHP函数使用解析
Jan 07 PHP
详解PHP的Yii框架中的Controller控制器
Mar 29 PHP
linux下php上传文件注意事项
Jun 11 PHP
PHP Mysqli 常用代码集合
Nov 12 PHP
php识别翻转iphone拍摄的颠倒图片
May 17 PHP
Laravel 已登陆用户再次查看登陆页面的自动跳转设置方法
Sep 30 PHP
关于IIS php调用com组件的权限问题
Jan 11 #PHP
Uncaught exception com_exception with message Failed to create COM object
Jan 11 #PHP
比file_get_contents稳定的curl_get_contents分享
Jan 11 #PHP
学习使用curl采集curl使用方法
Jan 11 #PHP
PHP 日,周,月点击排行统计
Jan 11 #PHP
php删除页面记录 同时刷新页面 删除条件用GET方式获得
Jan 10 #PHP
PHP求小于1000的所有水仙花数的代码
Jan 10 #PHP
You might like
PHP4在WinXP下IIS和Apache2服务器上的安装实例
2006/10/09 PHP
PHP图片自动裁切应付不同尺寸的显示
2014/10/16 PHP
symfony表单与页面实现技巧
2015/01/26 PHP
Windows2003下php5.4安装配置教程(Apache2.4)
2016/06/30 PHP
实例讲解PHP验证邮箱是否合格
2019/01/28 PHP
JavaScript中String和StringBuffer的速度之争
2010/04/01 Javascript
使用Bootstrap框架制作查询页面的界面实例代码
2016/05/27 Javascript
微信小程序 loading(加载中提示框)实例
2016/10/28 Javascript
js数组操作方法总结(必看篇)
2016/11/22 Javascript
Vue.JS入门教程之列表渲染
2016/12/01 Javascript
js 递归和定时器的实例解析
2017/02/03 Javascript
JavaScript实现审核流程状态的动态显示进度条
2017/03/15 Javascript
浅谈jquery fullpage 插件增加头部和版权的方法
2018/03/20 jQuery
解决使用bootstrap的dropdown部件时报错:error:Bootstrap dropdown require Popper.js问题
2018/08/30 Javascript
在vue.js中使用JSZip实现在前端解压文件的方法
2018/09/05 Javascript
node中的cookie的具体使用
2018/09/13 Javascript
详解JavaScript 事件流
2020/09/02 Javascript
python 快速排序代码
2009/11/23 Python
Python设计模式之观察者模式实例
2014/04/26 Python
Python random模块常用方法
2014/11/03 Python
学生信息管理系统python版
2018/10/17 Python
python实现旋转和水平翻转的方法
2018/10/25 Python
python3 deque 双向队列创建与使用方法分析
2020/03/24 Python
解决reload(sys)后print失效的问题
2020/04/25 Python
使用HTML5 Canvas绘制圆角矩形及相关的一些应用举例
2016/03/22 HTML / CSS
美国大尺码女装零售商:TORRID
2016/10/01 全球购物
Happy Socks英国官网:购买五颜六色的袜子
2020/11/03 全球购物
工作的心得体会
2013/12/31 职场文书
网上快餐厅创业计划书
2014/02/01 职场文书
简历中的自我评价范文
2014/02/05 职场文书
安全承诺书格式
2014/05/21 职场文书
房产销售员2015年终工作总结
2015/10/22 职场文书
MySQL慢查询的坑
2021/04/28 MySQL
教你如何让spark sql写mysql的时候支持update操作
2022/02/15 MySQL
SQL语句多表联合查询的方法示例
2022/04/18 MySQL
spring IOC容器的Bean管理XML自动装配过程
2022/05/30 Java/Android