php com类不是识别,php 通过 COM 类调用组件的实现代码

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

在 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);

===================================================================================

一些例子:

代码如下:$phpwsh=newCOM("Wscript.Shell")ordie("Create Wscript.Shell Failed!");

$phpexec=$phpwsh->exec("cmd.exe /c $cmd");

$execoutput=$wshexec->stdout();

$result=$execoutput->readall();

echo $result;

?>

$obj=newCOM("server.object")

即可以使用 COM 对象的属性和方法

下面以 word 为例// 启动 word

$word=newCOM("word.application")ordie("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;

?>

$com=newCOM('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 隐藏文件的方法就是上面的代码了

代码如下:// 这个就可以实现 asp 的 XMLHTTP 传马功能

$xmlhttp=newCOM('Microsoft.XMLHTTP')ordie("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 格式数据

*/

?>

来源: https://www.php1.cn/detail/php-19b681c9e3.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值