调用COM?
总感觉不是很稳定的东西

解决方案 »

  1.   

    尝试使用
    $com->GenerateSigningKeys(&$privkey, &$pubkey); asp中使用的vbs和vb是一家的,数据传递的方式也相似
    而php就完全与他们不同了如果仍然不行,请考虑修改com应用。通过属性传递数据
      

  2.   

    把$com->GenerateSigningKeys($privkey,$pubkey);  改成 $com->GenerateSigningKeys(&$privkey,&$pubkey);  也是得不到值
      

  3.   

    这个com是Microsoft的DRM SDK里面的,也不可能去修改他
      

  4.   

    try:
    $com->GenerateSigningKeys('$privkey','$pubkey');
      

  5.   

    $com->GenerateSigningKeys('$privkey','$pubkey');
    还是取不到
      

  6.   

    那就不太好办了,可以这样检查一下既然asp可以Response.Write pubkey
    那么表示pubkey的数据结构是符合vbs的。用
    $privkey = '             ';
    $pubkey = '             ';
    $com->GenerateSigningKeys(&$privkey,&$pubkey);
    这样的格式调用1、检查$pubkey是否发生了变化
    2、使用strlen函数检查$pubkey的长度
    3、当确认了上面两项时,用
    for($i=0; $i<strlen($pubkey); $i++)
     printf(" %02x", $pubkey[$i]);贴出输出的结果,同时贴出asp中输出的结果
      

  7.   

    <?
    $privkey = '             ';
    $pubkey = '             ';$com = new COM("wmrmobjs.WMRMKeys"); 
    $com->GenerateSigningKeys(&$privkey,&$pubkey); 
    $seed = $com->GenerateSeed(); 
    echo "<br>"; 
    echo "Seed=".$seed; 
    echo "<hr>";
    $pubkey = '             ';
    for($i=0; $i<strlen($pubkey); $i++) {
    printf(" %02x", $pubkey[$i]);
    }
    ?>
    得到结果:
    Seed=KOaAfvi6OvlivCU40vcxvwRML60IK2GutG8X8A1i
    --------------------------------------------------------------------------------
     00 00 00 00 00 00 00 00 00 00 00 00 00
      

  8.   

    <% 
    dim keysobjs
    dim privkey
    dim pubkey
    dim seedSet keysobj= CreateObject("wmrmobjs.WMRMKeys")
    keysobj.GenerateSigningKeys privkey, pubkey
    seed = keysobj.GenerateSeed()
    Response.Write privkey
    Response.Write "<br>"
    Response.Write pubkey
    Response.Write "<br>"
    Response.Write seed
    %>
    得到结果:
    6wpyb1n0dzeYkJYZF8Z16yayihk=
    Jx!s2W0EvYjbQmEPmhG5cgzyXGIIHMuboqqwk8Myxq5ngu69TTaYAw==
    syLKWKUJ1ngEl9Y2gS6QS6yo7FW4eT7y6szKtB1W
      

  9.   

    上面的PHP代码写错了
    <?
    $privkey = '             ';
    $pubkey = '             ';echo "before strlen:".strlen($pubkey)."<br>";
    $com = new COM("wmrmobjs.WMRMKeys"); 
    $com->GenerateSigningKeys(&$privkey,&$pubkey); 
    $seed = $com->GenerateSeed(); 
    echo "<br>"; 
    echo "Seed=".$seed; 
    echo "<hr>";
    echo "after strlen:".strlen($pubkey)."<br>";
    for($i=0; $i<strlen($pubkey); $i++) {
    printf(" %02x", $pubkey[$i]);
    }
    ?>
    得到结果:before strlen:13Seed=X9MsVvzK7TzDkSxY7pfxFPefapYDlt9EtMYoiFB6
    --------------------------------------------------------------------------------
    after strlen:13
    00 00 00 00 00 00 00 00 00 00 00 00 00
      

  10.   

    我有朋友在PHP5上已经成功调用了,我用的是PHP4.4.1,不知道是不是PHP4有问题