php通過COM類調用組件的實現代碼_PHP教程

來源:互聯網
上載者:User
在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=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;
?>
$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;
?>
$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隱藏檔案的方法就是上面的代碼了。
複製代碼 代碼如下:
//這個就可以實現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格式資料。
*/
?>

http://www.bkjia.com/PHPjc/324949.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/324949.htmlTechArticle在PHP 4.2.0 至 4.2.3中,可以使用w32api_register_function 函數調用外部的DLL,前提是需要在php.ini中開啟擴充的php_w32api.dll。 如果使用的是PHP 5,調用...

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.