PHP的COM对象方法

COM object method for PHP

本文关键字:方法 对象 COM PHP      更新时间:2023-10-16

我正在开发将加密传递的字符串的COM对象。它将从PHP调用。我不知道我怎么能从COM返回值到PHP。我尝试了下面的代码,也许它不工作。

 STDMETHODIMP CATLObject::EncryptURL(VARIANT* sURLString, VARIANT* sEncryptedValue)
{
    URLEncryption oURLEncryption;
    char sRequestString[MAX_NAME] = "abcbbefekjdss dsf dsk fkjds fk sd";
    char sEncrytedRequestStrin
g[MAX_NAME] = "";
    char sDecrytedRequestString[MAX_NAME] = "";
    oURLEncryption.EncryptQuery(sRequestString, sEncrytedRequestString);
    KeyValue oKeyValue1;
    KeyValue oParameterKeyValue;
    oKeyValue1.ParseKeyValueString(sEncrytedRequestString, '&', true);
    string sParameter = oKeyValue1.GetValue("sp");
    string sCheckSum = oKeyValue1.GetValue("chk");
    oURLEncryption.DecryptQuery(sParameter, sCheckSum, (void *)&oParameterKeyValue);
    string sCidAudio = oParameterKeyValue.GetValue("cid_audio");
    string sEUid = oParameterKeyValue.GetValue("euid");
    printf("sCidAudio = %sn", sCidAudio.c_str());
    printf("sEUid = %snn", sEUid.c_str());
    // Create an instance of the MEMORYSTATUSEX structure
    MEMORYSTATUSEX memstatex;
    // Specify the length of the structure
    memstatex.dwLength = sizeof(memstatex);
    // Call the GlobalMemoryStatusEx function and pass to it
    //  a reference to our MEMORYSTATUSEX instance
    ::GlobalMemoryStatusEx(&memstatex);
    // Set the ulVal (unsigned long value) of the VARIANT parameter
    //  passed by reference to the function with the dwMemoryLoad
    //   value of the MEMORYSTATUEX instance which specifies the
    //    approximate percentage of the physical memory currently
    //     in use.
    sURLString->ulVal = memstatex.dwMemoryLoad;
    sEncryptedValue->bstrVal = L"Output from DLL!!!";
    return S_OK;
}

从PHP我正在尝试以下方式获得返回值

$testConnection = new COM("URLEncryption.ATLObject");
    $sURLString = new VARIANT(0, VT_UI4);
    $sEncryptedValue = new VARIANT(0, VT_UI4);
    $testConnection->EncryptURL($sURLString,$sEncryptedValue);

在我看来这是一个愚蠢的打字错误:

new COM("URLEncryption.ATLObject")

相比
STDMETHODIMP CATLObject::EncryptURL
            ^^^

我想说new COM应该改为:

$testConnection = new COM("URLEncryption.CATLObject");