PHP操作COM的问题

yanxw_227 2009-08-20 09:52:15
PHP调用COM组件,需求是要读取进程的用户名,但是GetOwner这个函数(method)的输出是在参数中的([out]类参数),PHP好像没有这种用法,请教各位高人了!多谢!

<?
$objLocator = new COM("WbemScripting.SWbemLocator");
$wmi = $objLocator->ConnectServer();

$kkk =array('Caption','ExecutablePath');
$lll = array('GetOwner');
$buffer = _GetWMI($wmi, "Win32_Process", $kkk, $lll);

echo '<pre>';
print_R($buffer);
echo '</pre>';

function _GetWMI($wmi, $strClass, $strValue = array(), $strMethod = array() ) {
$objWEBM = $wmi->Get($strClass);
if( PHP_VERSION < 5 ) {
$objProp = $objWEBM->Properties_;
$arrProp = $objProp->Next($objProp->Count);
$objMeth = $objWEBM->Methods_;
$arrMeth = $objMeth->Next($objMeth->Count);
$objWEBMCol = $objWEBM->Instances_();
$arrWEBMCol = $objWEBMCol->Next($objWEBMCol->Count);
} else {
$arrProp = $objWEBM->Properties_;
$arrMeth = $objWEBM->Methods_;
$arrWEBMCol = $objWEBM->Instances_();
}
foreach($arrWEBMCol as $objItem) {
//reset($arrProp);
$arrInstance = array();
foreach($arrProp as $propItem) {
eval("\$value = \$objItem->" .$propItem->Name .";");
if( empty( $strValue ) ) {
$arrInstance[$propItem->Name] = trim($value);
} else {
if( in_array( $propItem->Name, $strValue ) ) {
$arrInstance[$propItem->Name] = trim($value);
}
}
}
foreach($arrMeth as $i=>$methItem) {
if(is_array($strMethod) and count($strMethod)>0) {
if(in_array($methItem->Name,$strMethod)) {
eval("\$value2 = \$objItem->".$methItem->Name."();");
$arrInstance[$methItem->Name] = trim($value2);
}
}
}
$arrData[] = $arrInstance;
}
return $arrData;
}
?>
...全文
60 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
CunningBoy 2009-08-20
  • 打赏
  • 举报
回复
PHP也有out作为参数的,比如preg_match_all函数。

你贴代码出来想问什么?

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧