2016-08-12 1 views
0

Ich bin dabei, das COM-Objekt zu entwickeln, das die übergebene Zeichenfolge verschlüsselt. Es soll von PHP aus aufgerufen werden. Ich bekomme nicht, wie ich den Wert von COM zu PHP zurückgeben kann. Ich habe versucht, folgenden Code vielleicht funktioniert es nicht.COM-Objekt-Methode für 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 = %s\n", sCidAudio.c_str()); 
    printf("sEUid = %s\n\n", 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; 
} 

Von PHP ich folgende Weise versuche

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

    $sURLString = new VARIANT(0, VT_UI4); 
    $sEncryptedValue = new VARIANT(0, VT_UI4); 

    $testConnection->EncryptURL($sURLString,$sEncryptedValue); 
+0

'$ phpresult = $ testConnection-> EncryptURL ($ sURLString, $ sEncryptedValue);'? – RamRaider

Antwort

0

Sieht mir Rückgabewert zu bekommen ein dummer Tippfehler zu sein:

new COM("URLEncryption.ATLObject") 

im Vergleich zu

STDMETHODIMP CATLObject::EncryptURL 
      ^^^ 

Ich würde sagen, new COM sollte Chang sein ed an:

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