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 相关文章推荐
真正面向对象编程:PHP5.01发布
Oct 09 PHP
计算2000年01月01日起到指定日的天数
Oct 09 PHP
PHP获取表单textarea数据中的换行问题
Sep 10 PHP
php实现的支持imagemagick及gd库两种处理的缩略图生成类
Sep 23 PHP
php中文验证码实现方法
Jun 18 PHP
PHP实现支付宝即时到账功能
Dec 21 PHP
详谈php ip2long 出现负数的原因及解决方法
Apr 05 PHP
php实现的pdo公共类定义与用法示例
Jul 19 PHP
PHP实现获取毫秒时间戳的方法【使用microtime()函数】
Mar 01 PHP
PHP数据源架构模式之表入口模式实例分析
Jan 23 PHP
php多进程并发编程防止出现僵尸进程的方法分析
Feb 28 PHP
PHP延迟静态绑定使用方法实例解析
Sep 05 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
简单的用PHP编写的导航条程序
2006/10/09 PHP
实现 win2003 下 mysql 数据库每天自动备份
2006/12/06 PHP
PHP代码优化的53个细节
2014/03/03 PHP
thinkPHP模板引擎用法示例
2016/12/08 PHP
PHP大文件分块上传功能实例详解
2019/07/22 PHP
Aster vs Newbee BO5 第一场2.19
2021/03/10 DOTA
经常用的图片在容器中的水平垂直居中实例
2007/06/10 Javascript
用js实现的自定义的对话框的实现代码
2010/03/21 Javascript
Nodejs实现多人同时在线移动鼠标的小游戏分享
2014/12/06 NodeJs
JS解析XML实例分析
2015/01/30 Javascript
JavaScript实现把rgb颜色转换成16进制颜色的方法
2015/06/01 Javascript
JavaScript 常见安全漏洞和自动化检测技术
2015/08/21 Javascript
jquery插件uploadify多图上传功能实现代码
2016/08/12 Javascript
js实现图片淡入淡出切换简易效果
2016/08/22 Javascript
Bootstrap基本组件学习笔记之列表组(11)
2016/12/07 Javascript
初探JavaScript 面向对象(推荐)
2017/09/03 Javascript
关于Google发布的JavaScript代码规范你要知道哪些
2018/04/04 Javascript
微信小程序开发之路由切换页面重定向问题
2018/09/18 Javascript
vue集成kindeditor富文本的实现示例代码
2019/06/07 Javascript
jQuery内容选择器与表单选择器实例分析
2019/06/28 jQuery
js获取url页面id,也就是最后的数字文件名
2020/09/25 Javascript
[19:14]DOTA2 HEROS教学视频教你分分钟做大人-维萨吉
2014/06/24 DOTA
微信跳一跳自动运行python脚本
2018/01/08 Python
python实现简单登陆系统
2018/10/18 Python
举例详解HTML5中使用JSON格式提交表单
2015/06/16 HTML / CSS
英国景点门票网站:attractiontix
2019/08/27 全球购物
餐饮业经理竞聘演讲稿
2014/01/14 职场文书
《鞋匠的儿子》教学反思
2014/03/02 职场文书
航空学院求职信
2014/06/11 职场文书
动漫设计与制作专业推荐信
2014/07/07 职场文书
财务检查整改报告
2014/11/06 职场文书
中学生自我评价2015
2015/03/03 职场文书
2015年端午节活动策划书
2015/05/05 职场文书
2016关于学习党章的心得体会
2016/01/15 职场文书
JavaScript数组reduce()方法的语法与实例解析
2021/07/07 Javascript
Dubbo+zookeeper搭配分布式服务的过程详解
2022/04/03 Java/Android