转自:http://hi.baidu.com/kashifs/blog/item/4f643bafcdde5c194b36d6b7.html

COM(Component Object Model)组件对象模型,是一种跨应用和语言共享二进制代码的方法。COM可以作为DLL被本机程序载入也可以通过DCOM被远程进程调用。

在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通过COM类调用组件相关推荐

  1. Jakarta Commons:巧用类和组件1

    From http://linux.ccidnet.com/art/322/20030805/57869_1.html Jakarta Commons是Jakarta的子项目,它创建和维护着许多独立软 ...

  2. php语言smtp类,php mailer类调用远程SMTP服务器发送邮件实现方法

    这篇文章主要介绍了php mailer类调用远程SMTP服务器发送邮件实现方法,结合实例形式分析了php mailer类的调用及邮件发送相关技巧,需要的朋友可以参考下 本文实例讲述了php maile ...

  3. react 调用组件方法_React源码分析1 — 组件和对象的创建(createClass,createElement)...

    1 组件的创建 学习了半年前端了,感觉前端的水确实也很深.做安卓的时候就对React-Native比较感兴趣,开发H5时也使用了一段时间的ReactJS.所以决定好好分析下它的源码.文章中有不对的地方 ...

  4. reactjs定义组件:类式组件

    执行了ReactDOM.render(-之后,发生了什么? 1.React解析组件标签,找到了MyComponent组件. 2.发现组件是使用类定义的,随后new出来该类的实例,并通过该实例调用到原型 ...

  5. Jakarta Commons:巧用类和组件三(转)

    2019独角兽企业重金招聘Python工程师标准>>> 在这个系列文章的第一篇中,我们把Commons项目包含的组件分成了5类,介绍了Web类和其他类.第二篇文章论及XML类和包装类 ...

  6. Feign远程调用组件与Gateway网关组件

    文章目录 1. Feign远程调用组件 1.1 Feign简介 1.2 Feign配置应用 1.3 Feign对负载均衡的支持 1.4 Feign对熔断器的支持 1.5 Feign对请求压缩和响应压缩 ...

  7. 【Spring Cloud Alibaba】(二)微服务调用组件Feign原理+实战

    系列目录 [Spring Cloud Alibaba](一)微服务介绍 及 Nacos注册中心实战 本文目录 系列目录 前言 什么是RPC? Feign和OpenFeign都是什么? HTTP调用 v ...

  8. python类方法以及类调用实例方法的理解

    classmethod类方法 1) 在python中.类方法 @classmethod 是一个函数修饰符,它表示接下来的是一个类方法,而对于平常我们见到的则叫做实例方法. 类方法的第一个参数cls,而 ...

  9. 17、Spring Boot普通类调用bean【从零开始学Spring Boot】

    转载:http://blog.csdn.net/linxingliang/article/details/52013017 我们知道如果我们要在一个类使用spring提供的bean对象,我们需要把这个 ...

  10. C++跨类调用——extern

    方式:全局变量实现跨类调用(extern) 环境:MFC 目的:两个Dialog(Class),A和B,想在B中调用 A中的变量(IplImage * img) 实现:在A.cpp 添加代码如下 CA ...

最新文章

  1. python常用导入函数及其他操作备忘录
  2. 整合Swagger2文档api
  3. XADD和NEG命令
  4. 访问模型参数,初始化模型参数,共享模型参数方法
  5. Socket常见错误代码与描述
  6. MATLAB学习笔记(十一)
  7. linux挂载windows上的共享文件夹
  8. mllib线性回归GeneralizedLinearModel GeneralizedLinearAlgorithm源码解析
  9. 2018 中国短视频开发者创意大赛震撼来袭,万元现金大奖邀你来战!
  10. 使用OpenSSL生成证书 pem文件的生成 celery Security
  11. 保送清华计算机,2018年北大、清华五大学科竞赛集训队保送生争夺战结果
  12. 【转载】古龙·断章·小札[十二]:《多情剑客无情剑》
  13. 读书笔记丨《数据产品经理修炼手册:从零基础到大数据产品实践》丨DAY4
  14. 通过银行卡号获取银行卡所属银行
  15. scala中的match详解
  16. vue3.0需要学习的技术栈
  17. webpack优化系列七:首屏加载优化
  18. Lua程序设计 | 模块和包、泛型迭代器和for、元表和元方法
  19. 3.灰色预测模型(Gray Forecast Model)
  20. 前端培训教程JavaScript

热门文章

  1. MathType公式编辑器数学公式、希腊字母和常用操作快捷键[待续ing]
  2. windows11关闭安全中心的病毒和威胁防护时,打不开,弹出打开应用需要打开windowsdefender链接问题
  3. 日常运维-端口查询篇
  4. 如何在 Excel 中使用 SUMIF 函数?
  5. 雷达威力图绘制matlab,科学网—matlab绘雷达图 - 张凌的博文
  6. 原生JavaScript实现jQuery中的fadeIn和fadeOut淡入/出效果
  7. SDL 加载显示JPEG图片
  8. CocosCreator 子弹运动轨迹的绘制
  9. 解决Win 10桌面 IE 图标消失问题的注册表代码
  10. 第五周助教工作总结——NWNU李泓毅