phpcom组件
① php调用COM组件操作EXCEL文档的问题
COM组件是通用的,如果你想用调用COM组件来操作EXCEL文档,建议可以参考的工具和资料如下:
1. office (excel)VBA帮助文档,VBA中包含对象、属性、方法的说明。
2. 使用OCX、DLL等查看工具,比如:
oleview软件
比较简便的办法,你可以下载 vbsEdit 软件,其中带有 oleview 查看工具,当你引入某个 com 组件时,会自动显示该组件对象的方法、属性等。
② PHP怎么从COM组件中获取返回的字符串
PHP如何从COM组件中获取返回的字符串?
COM组件中定义一个方法
HRESULT GetStr([in,out] BSTR* vStr, [in,out] LONG* vLen, [out,retval] LONG* vError);
方法实现为:
C/C++ code
STDMETHODIMP MC_MyClass::GetStr(BSTR* vStr, LONG* vLen, LONG* vError) { *vError = 0; if(0 == vStr) return S_FALSE; if(0 == vLen) return S_FALSE; wchar_t tStr[] = L"This is a string from com!"; memcpy(*vStr, tStr, wcslen(tStr)); *vLen = wcslen(tStr); *vError = 1; return S_OK; }
PHP调用该方法
C/C++ code
$tStr = ""; $tLen = 100; $tStr = str_pad($tStr, $tLen, "0"); $tRes = $tCom->GetStr(&$tStr, &$tLen);
结果
$tRes = 1;
$tStr = "";
$tLen = 26;
③ php调用com组件exception 'com_exception' with message 'Failed to create COM object 'WPS.Application
COM组件虽然也是DLL扩展,但它不是PHP扩展,所以把Senc.dll拷贝到php/ext 目录,然后在PHP.INI里加载是错误的,PHP也不认识它。
你这个是表示com组建不能使用,com组建在windows下需要注册的额。
④ php中有个com组件,它里面都有哪些属性和方法可以调用呢
先到PHP.INI中打开COM选项,com.allow_dcom = true
PHP 5.4.5后,com/dotnet 模块已经成了单独的扩展,所以需要在PHP.ini中配置extension=php_com_dotnet.dll,如果PHP VERSION<5.4.5 则不需要。否则的话,可能就是报错 Fatal error: Class 'COM' not found 了
配置方法为:只需在扩展列表里添加extension=php_com_dotnet.dll即可
另外需要了解的是,COM组件虽然也是DLL扩展,但它不是PHP扩展,所以把Senc.dll拷贝到php/ext 目录,然后在PHP.INI里加载是错误的,PHP也不认识它
配置完毕后可以测试下,语句为
$word=newCOM("word.application")ordie("UnabletoinstanciateWord");
print"LoadedWord,version{$word->Version} ";
上面语句本机必须安装了office才可以
openoffice的为:
$obj=newCOM("com.sun.star.ServiceManager")ordie("UnabletoinstanciateWord");
⑤ 如何用PHP调用自己编写的COM组件
首先写ActiveX Dll:
新建一个VB6工程,ActiveX Dll将工程命名为P_test,类名为c_test ,类的文件内容如下:
Option Explicit
Private MyscriptingContext As scriptingContext
Private MyApplication As Application
Private MyRequest As Request Private MyResponse As Response
Private MyServer As Server
Private MySession As Session Public
Sub OnStartPage(PassedscriptingContext As scriptingContext)
Set MyscriptingContext = PassedscriptingContext
Set MyApplication = MyscriptingContext.Application
Set MyRequest = MyscriptingContext.Request
Set MyResponse = MyscriptingContext.Response
Set MyServer = MyscriptingContext.Server
Set MySession = MyscriptingContext.Session
End Sub
Public Sub OnEndPage()
Set MyscriptingContext = Nothing
Set MyApplication = Nothing
Set MyRequest = Nothing
Set MyResponse = Nothing
Set MyServer = Nothing
Set MySession = Nothing
End Sub
Public Function Test_Number(num) As Variant
If num 0 Then Get_Number_Attrib = 1
If num = 0 Then Get_Number_Attrib = 0
End Function
编译生成p_test.dll文件
注册
提示符下运行:regsvr32 p_test.dll
编写php文件,test.php4代码如下:
<?php
$b=new COM("p_test.c_test");
$a=$b->Test_Number(-454);
echo $a;
?>
可能碰到的问题是,编译工程时通不过,要将Microsoft Active Server Pages Object Library引用进来,具体实现"Project->References"找到改库,并勾上 。
⑥ php怎么开启com组件
先到PHP.INI中打开COM选项,com.allow_dcom = true 注意: PHP 5.4.5后,com/dotnet 模块已经成了单独的扩展,所以需要在PHP.ini中配置extension=php_com_dotnet.dll ,如果PHP VERSION<5.4.5 则不需要。
⑦ php调用com组件,通过WMI能得到操作系统的日志吗
理论上讲是可以,日志一般也是文件存储形式,比如win的日志在C:\Windows\System32\config
一般来说获取日志文件内容即可,需要解决的问题:
1.日志文件是否有系统独占因素;
2.日志文件目录的权限;
3.读取到日志文件后,是否需要对应的解码或者转码问题。
⑧ PHP的COM组件
现象已经很明确了,是WScript.Shell对象可以引用,而word.application对象不可以引用。说明PHP配置和APACHE配置已经没有问题了。
问题在于word.application对象为什么不能引用,原因很可能是你的服务器没安装office,所以也不存在word.application对象。
⑨ PHP调用COM组件操作WORD问题
hp // 建立一个指向新COM组件的索引 $word = new COM("word.application")
⑩ php 用com组件连接MySql或ODBC的方法
你可以试试:
<?php
$conn=newcom("ADODB.Connection");
$connstr="Driver={MySQLODBC3.51Driver};Server=data.domain.com;Port=3306;Database=myDataBase;User=myUsername;Password=myPassword;Option=3;
$conn->Open($connstr);
$rs=newcom("ADODB.RecordSet");
$rs->Open("select*fromtable",$conn,1,1);
echo($rs->Fields(1)->value);
$rs=NULL;
?>
MySQLODBC3.51Driver为你安装myodbc的版本号