ÓÆÓÆÈí¼þ¹¤×÷ÊÒ

»¥ÁªÍøÈí¼þ×ÊÔ´¹²Ïí

µ±Ç°Î»ÖãºÊ×Ò³ -> ×ÛºÏƵµÀ -> Õ¾³¤Ö®¼Ò

phpµ÷ÓÃdll¾­ÑéС½á

×î½ü×öÒ»¸öÍøÕ¾£¬ÐèҪƵ·±Ê¹ÓÃÔ¶³ÌÊý¾Ý£¬Êý¾Ý½Ó¿ÚÒѾ­×öºÃ¡£ÔÚ×öת»»µÄʱºòÓöµ½ÁËÐÔÄÜÉϵÄÎÊÌ⣺¿ªÊ¼´òËãÓÃphpÀ´ÊµÏÖת»»£¬¿à¿à²éÁËÊýÌ죬¶¼Ã»ÓÐÕÒµ½Ö±½Ó²Ù×÷×ֽڵķ½·¨¡£ËäÈ»¿ÉÒÔʹÓà pack() ·½·¨½«¸÷¸öÊý¾ÝѹÈë½á¹¹ÖУ¬µ«ÊÇÔÚ½âѹµÄʱºòÈ´²»ÄÜͨ¹ý unpack() ¼òµ¥µÄ½â³öÀ´£¬ÐèҪͨ¹ý

//php code
for( $i = 0; $i < $length; $i+=2 ){
   $tempstr = $tempstr.chr( hexdec(substr($array["data"], $i, 2)) );
}
$array["data"] = $tempstr;

     ÕâÀà·½·¨½øÐнâÂ롣Ƶ·±µÄʹÓø÷ÖÖ×Ö·û´®²Ù×÷£¬ÎÞÒɽ«¶ÔÐÔÄÜÔì³ÉºÜ´óµÄÓ°Ïì¡£¾­¹ýÑо¿£¬·¢ÏÖÓÐÒÔÏ·½·¨¿ÉÒÔʵÏÖ¶Ô×ֽڵIJÙ×÷£º

  • ʹÓÃstream½øÐжÁд

  • ʹÓÃsocket½øÐжÁд

  • ʹÓÃCOM dll£¬½«Êý¾ÝÔÚC++ dllÖнøÐÐת»»

     ÓÉÓÚÍøÉÏÕÒ²»µ½Ïà¹ØµÄÎĵµ£¨ÆäʵÊÇûºÃºÃÕÒ£©£¬streamºÍsocketÏȺó±»PASSµôÁË¡£ÎªÁ˱àÒëCOMµÄdll£¬»¹×¨ÃÅÏÂÔØÁËVC++ 6.0£¨ÎªÉ¶²»×°2005£¿Ó²ÅÌ̫С£¬×°²»Ï£¬Ã»°ì·¨°¡£©¡£¾­¹ýÎÞÇîÎÞ¾¡µÄGoogle£¨È«ÊÇphpµ÷ÓÃVBдµÄdllµÄÐÅÏ¢£¬Ã»¶à´ó°ïÖú£©ºÍ±àÒë/µ÷ÊÔ£¬ÖÕÓڳɹ¦µÄ°Ñ½á¹û´«µÝµ½phpÖС£
     ÏÂÃæ¼òµ¥½éÉÜһϲ½ÖèºÍ×¢ÒâÊÂÏ

  1. ÔÚVC++ 6.0ÖУ¬File -> New... Ñ¡ÔñProjectsÖеÄ"ATL COM AppWizard"£¬Ìîд¹¤³ÌÃû³ÆµÈ¡£±¾ÀýÖУ¬¹¤³ÌÃûΪ"ATLtest"¡£

  2. ÔÚ"ATL COM AppWizard - Step 1 on 1"¶Ô»°¿òÖУ¬"Server Type" Ñ¡Ôñ"Dynamic Link Library (DLL)"£¬Ö®ºóFinish¡£

  3. ÔÚ"ClassView"ÖУ¬ÓÒ»÷"ATLtest"£¬Ñ¡Ôñ"New ATL Object..."£¬ÔÚ"ATL Object Wizard"ÖУ¬Ñ¡ÔñĬÈϵÄ"Simple Object"£¬Ö®ºó"Next"¡£

  4. ÔÚ"ATL Object Wizard ÊôÐÔ"ÖУ¬ÔÚ"Short Name"ÊäÈë½Ó¿ÚµÄÃû³Æ¡£±¾ÀýÖУ¬½Ó¿ÚÃû³ÆΪ"test"¡£Ö®ºó£¬"Names"Ñ¡ÏÖеÄËùÓÐtextBox¶¼×Ô¶¯ÌîºÃÁËĬÈϵÄÖµ¡£×¢ÒâÁ½¸öµØ·½£ºÒ»¸ö"Prog ID"£¨±¾ÀýÖÐΪ"ATLtest.test"£©£¬Ò»¸ö"Interface"£¨±¾ÀýÖÐΪ"Itest"£©¡£

  5. Íê³ÉÖ®ºó£¬ÔÚ"ClassView"ÖУ¬"ATLtest classes"ÏÂÉú³ÉÁË"Ctest"À࣬²¢ÇÒʵÏÖÁË"Itest"½Ó¿Ú¡£

  6. ÓÒ»÷"Itest"½Ó¿Ú£¬Ñ¡Ôñ"Add Method..."¡£

  7. ÔÚ"Add Method to Interface"ÖУ¬Ìîд·½·¨µÄÃû³ÆºÍ²ÎÊý¡£×¢Ò⣺·µ»ØÖµÒ»¶¨ÊÇHRESULTÐÍ£¬ÕæÕýµÄ·µ»ØÖµÊÇ×îºóÒ»¸ö²ÎÊý¡£±ÈÈç

    //C++ code
    BSTR Encode(unsigned int msgType, unsigned int msgLength, BSTR message)

    Õâ¸öº¯Êý£¬ÒªÐ´³É

    //C++ code
    STDMETHODIMP Ctest::Encode(
       unsigned int msgType,
       unsigned int msgLength,
       BSTR message,
       BSTR *result
    )

    ÕâÑùµÄÐÎʽ¡£»¹ÓоÍÊÇ·µ»ØÖµÖ»½ÓÊܼòµ¥µÄÀàÐÍ£¨²»ÖªµÀΪʲô£¬char**²»ÄÜÓ㩺ÍÖ¸Õ룬BSTRû·¨Ö±½ÓʹÓá£


  8. Íê³ÉÕâ¸öº¯Êý¡£µ±È»£¬ÎªÁ˼òµ¥Æð¼û£¬ÕâÀï¾ÍÊǸø½á¹ûËæ±ã¸³ÁËÒ»¸öÖµ£¬ÓÃÀ´ËµÃ÷²ÎÊý³É¹¦µÄ´«µÝ³öÀ´ÁË¡£Ã»Óп¼ÂÇÈκÎÄÚ´æй©ÎÊÌâ¡£

    //C++ code
    STDMETHODIMP Ctest::Encode(
       unsigned int msgType,
       unsigned int msgLength,
       BSTR message,
       BSTR *result
    )
    {
       BSTR temp = ::SysAllocString(L"asdfasdf");
       *result = temp;

       return S_OK;
    }


  9. ±àÒ룬½«µÃµ½µÄATLtest.dllʹÓÃregsvr32½øÐÐ×¢²á£¬Ö®ºó²ÅÄÜʹÓÃCOM½øÐе÷Óá£

  10. Ö®ºóÊéдÕâÑùµÄphp´úÂ룺

    //php code
    $com = new COM("ATLtest.test") or die("ÎÞ·¨½¨Á¢COM×é¼þ");
    $result = "δ´¦ÀíµÄ×Ö·û´®";
    echo '$result = "'.$result.'"
    ';

    $result = $com->Encode(1,1,"11");
    echo '$result = "'.$result.'"
    ';

    $com = null;


  11. ×¢ÒâÕâÀïµÄ"ATLtest.test"ÊǸղţ¨4£©ÖеÄ"Prog ID"£¬²¢ÇÒʹÓÃEncode() µÄ·½·¨ºÍÉùÃ÷µÄÒ²²»Ò»Ñù¡£Ã»ÓйØϵ£¡
    µ±È»£¬ÓÉÓÚÍêȫûÓÐÓõ½Èý¸öÊäÈë²ÎÊý£¬ÕâÀïµÄ1,1,"11"Ö»ÊÇΪÁËÂú×ãÊäÈë²ÎÊýµÄÊýÁ¿¡£

  12. Õâ¸öphpµÄÊä³öÊÇʲôÑùµÄÄØ£¿

    //HTML ½á¹û
    $result = "δ´¦ÀíµÄ×Ö·û´®"
    $result = "asdfasdf"

    ¿É¼û£¬$result ³É¹¦µÄ¸Ä±ä³ÉÁËdllÖи³µÄÖµ£¬ËµÃ÷ Encode() ·½·¨³É¹¦µÄ·µ»ØÁËÖµ¡£


¼¸µãÒÉÎÊ

  1. Ϊʲô Encode() Öзµ»ØµÄÊÇ BSTR* £¬µ«Êǵ½ÁËphpÖУ¬¾Í±ä³ÉÁË×Ö·û´®£¨BSTR£© ÄØ£¿Õâ¸ö×Ô¶¯µÄת»»ÊÇATL½øÐеģ¬»¹ÊÇphp½øÐеÄÄØ£¿

  2. C++´úÂëÖÐͨ¹ýSysAllocString()ΪBSTR·ÖÅäµÄ¿Õ¼äÔÚºÎʱ½øÐÐÀ¬»øÊÕ¼¯£¿ÊÕ¼¯¹¤×÷ÓÉÄÄÀ︺Ô𣿻᲻»áµ¼ÖÂÄÚ´æй©£¿

  3. Íê¶ñµÄC++ 6.0 ±àÒëÆ÷£¬ÎªÊ²Ã´·µ»ØÖµ²»Ö§³Ö char** ÕâÖÖ¼òµ¥µÄÀàÐÍÄØ£¨Ê¹ÓÃchar**Ö±½Ó±àÒë³öÎÞÊý´íÎ󣩣¿ BSTR±¾ÖÊÉϾÍÊÇÖ¸ÕëÂҲ²»Ö§³Ö£¨Ìáʾ˵ֻ֧³Ö¼òµ¥ÀàÐͺÍÖ¸Õ룩£¬Ö»ºÃÓÃÒ»¸ö²»Âײ»ÀàµÄBSTR*À´Ð´¡£àÅ£¬ÏÂÒ»²½³¢ÊÔ¸ÄÓÃCCOMBSTR»òÕß_bstr_t£¬ÊÔÊÔÄĸö¸üºÃÓá£

  4. ¶ÔÓÚ´«ÈëµÄBSTR* result£¬ÐèҪʹÓà SysFreeString() ½øÐд¦Àíô£¿ÔÚC++Öп´À´£¬ÎÞÒÉÊÇÐèÒªÊͷŵģ»µ«ÊÇphpÔÚ±³ºó×öÁËÄÄЩ¹¤×÷ÄØ£¿ÓÐûÓжÔδ±»ÒýÓõij£Á¿"δ´¦ÀíµÄ×Ö·û´®"½øÐÐÀ¬»øÊÕ¼¯ÄØ£¿

//////////////////////////////////////////////////////////////////////////

phpµ÷ÓÃdll

ÏîÄ¿ÐèÒªÓõ½phpµ÷ÓÃdll,ÂÛ̳·¢ÌûµÃµ½Ë¼Â·£¬ÓÃDynamicWrapper·½·¨µ÷Óá£ÏÂÔØDynamicWrapper.dllµ½php extÏÂÓëwindows system32Ï£¬ $dw = new COM("DynamicWrapper"); $dw->Register("EbUsbApi.dll", "EbCreateDataFile", 'i=sls', "f=s", "r=l"); $ch = $dw->EbCreateDataFile("222",11,"22"); dllÆäÖÐÒ»¸öº¯Êý HANDLE EbCreateDataFile(LPCTSTR lpFileName, DWORD dwCreationDisposition, LPCTSTR lpPassword) µÃµ½½á¹û0.³É¹¦
///////////////////////////////////////////////////
1¡£²é¿´CPUºÉÔØ£º

CODE:


$wmi = new COM('winmgmts://');

$processor = $wmi->ExecQuery("SELECT * FROM Win32_Processor");

foreach($processor as $obj){

   $cpu_load_time = $obj->LoadPercentage;

}

echo $cpu_load_time;

?>2¡£µ÷ÓÃ×Ô¶¨µÄdll×é¼þ£º
1) ´´½¨ActiveX dll×é¼þ --

CODE:

Public Function hello() As String
   hello = "Hello World!"
End Function²¢´æΪ"test.dll" Îļþ

2) ÓÃregsvr32.exe×¢²á´Ë×é¼þ
regsvr32 test.dll

3) ÔÚPHPÄÚµ÷ÓôËdll×é¼þ:

CODE:

$obj = new COM("test.dll");
$output=$obj->hello(); // Call the "hello()" ·½·¨
echo $output; // ÏÔʾHello World! (so this comes from the dll!)
?>
/////////////////////////////////

½ñÌìÒªÓù¤ÉÌÒøµÄ½Ó¿Ú×öÒ»¸öÔÚÏßÖ§¸¶£¬ÌṩµÄÊÇÁ½¸ödllÎļþºÍÒ»¸ö˵Ã÷Îĵµ£¬ÁíÍ⻹µç×ÓÖ¤Êé¡£
PHPµ÷ÓÃCOM×é¼þ£¬´ÓÍøÉÏÕÒÁË°ëÌìҲûÕÒµ½¸ö˵µÃÃ÷°×µÄ£¬ÊDz»ÊÇÓÃÕâ¸öµÄÈËÌ«ÉÙÁËÓÖ»òÊÇÌ«¼òµ¥Ëù

ÒÔûÓÐÈËд¡£

ʲôÊÇCOM£¿

  COM£¨Component Object Model£©×é¼þ¶ÔÏóÄ£ÐÍ£¬ÊÇÒ»ÖÖ¿çÓ¦ÓúÍÓïÑÔ¹²Ïí¶þ½øÖÆ´úÂëµÄ·½·¨¡£ÊÇ

λÓÚDCE RPCÉϲ¿µÄ¶ÔÏóÖ¸Ïò²ã£¨¹ØÁª·þÎñ£©¶¨Ò幫¹²µÄµ÷ÓÃЭ¶¨ÒÔÔÊÐíÓò»Í¬ÓïÑÔ±àдµÄ´úÂëµ÷Óã¬

²¢ÔÊÐíÆäËüÓïÑÔ´úÂë½øÐн»»¥²Ù×÷£¨Ç°ÌâÊÇ´úÂëÊÇCOMÃ÷°×µÄ£©£¬COM¿ÉÒÔ×÷ΪDLL±»±¾»ú³ÌÐòÔØÈëÒ²¿É

ÒÔͨ¹ýDCOM±»Ô¶³Ì½ø³Ìµ÷Óá£

×¼±¸¹¤×÷

±ÈÈçÎÒ×÷ÁËÒ»¸öCOM×é¼þ£¬Ð½¨Ò»¸ö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 = 1
If num = 0 Then Get_Number_Attrib = 0
End Function

±àÒëÉú³Ép_test.dllÎļþ

µÚÒ»²½£¬×öΪһ¸öCOM×é¼þ£¬Õâ¸öDLLÒª±»ÏµÍ³Ê¶±ð¾ÍÒªÏȵ½ÏµÍ³À´±¨µ½

  regsvr32 [·¾¶]/[×é¼þÎļþÃû]

  regsvr32 C:/WINDOWS/system32/p_test.dll  
  ·ÅÔÚϵͳÎļþ¼Ðsystem32ϲ»ÈÝÒ׳öÏÖȨÏÞÎÊÌâ

ÕâʱºòÕâ¸öÎļþ¾Í²»ÄÜÒƶ¯Î»ÖÃÁË£¬ÏµÍ³»áÔÚÓõ½Ëüʱµ½Õâ¸öĿ¼À´ÕÒ£¬Èç¹û¸ÄĿ¼¾ÍµÃÏÈɾ³ý×¢²á

ÔÙÖØÐÂ×¢²á

  regsvr32 /u [·¾¶]/[×é¼þÎļþÃû]

ϵͳ»áÏÔʾ´°¿Ú±íʾ³É¹¦£¬´óÒâÊÇ ×é¼þDllregister³É¹¦»òÊÇDllunregister³É¹¦


µÚ¶þ²½¾Í¿ÉÒÔÖ±½Óµ÷ÓÃËüÁË
£¼?
$b=new COM("p_test.c_test");  //Ò»°ãÇ°±ßÊÇËüµÄÖ÷ÎļþÃûºó±ßÊÇËüµÄÀàÃû´Ó×¢²á±íÀïÕÒÕâ¸öÎÄ

¼þ¿ÉÒÔÕÒµ½

ÕâÑù¾ÍÉú³ÉÁËÒ»¸ö½ÐbµÄ¶ÔÏó£¬ÎÒÃǾͿÉÒÔÓÃËüµÄÊôÐԺͷ½·¨À´²Ù×÷ÁË
$a=$b-£¾Test_Number(-454);
echo $a;
?£¾
¿ÉÄÜÓöµ½µÄÎÊÌâÊÇ£¬±àÒ빤³Ìʱͨ²»¹ý£¬Òª½«
Microsoft Active Server Pages Object Library  
ÒýÓýøÀ´£¬¾ßÌåʵÏÖ"Project->References"ÕÒµ½¸Ä¿â£¬²¢¹´ÉÏ ¡£



ÉÏһƪ£º·ÖÏíÒ»¸öÇ¿´óµÄHTTP·ÃÎÊÀࣨ¿É×ö..
ÏÂһƪ£ºvb webbrowser ±£´æÍøÒ³Ô´ÂëµÄ¸÷..

ÆÀÂÛ

ÕÊ¡¡¡¡ºÅ: ÃÜÂë: (ÐÂÓû§×¢²á)
Ñé Ö¤ Âë:
±í¡¡Çé:
ÄÚ¡¡¡¡ÈÝ:

Ê× Ò³   |   °æȨÉùÃ÷   |   ¹ØÓÚÎÒÃÇ   |   ¹ã¸æ·þÎñ   |   ÁªÏµÎÒÃÇ   |   ÊÖ»ú°æ    |   ÍøÕ¾µØͼ
Copyright@zhuchunyu.com all rights reserved
Powered by zhuchunyu.com 2018-2025 zhuchunyu.com ÍîICP±¸05011767ºÅ-23