From:             gospodin dot p dot zh at gmail dot com
Operating system: Windows
PHP version:      5.4.7
Package:          COM related
Bug Type:         Bug
Bug description:PHP extension for COM connection

Description:
------------
char* Connect1c77(char* dir, char* username, char* password, bool 
no_splash_screen){
        //для начала инициализируем COM
        HRESULT hr = CoInitialize(NULL);
        if(FAILED(hr))
        {
          return"Невозможно инициализировать COM!";
          return FALSE;
        }

        CLSID   cls77;

        hr = CLSIDFromProgID(L"V77M.Application", &cls77); 
        if(FAILED(hr))
        {
          return"Переустановите 1С Предприятие!";
          CoUninitialize();
          return FALSE;
        }

        IDispatch *pv77;


        hr = CoCreateInstance(cls77, NULL, CLSCTX_LOCAL_SERVER, IID_IDispatch, 
(void**)&pv77);

        if(FAILED(hr)  ||  !pv77)
        {
          return"Невозможно инициализировать
интерфейс 1С Предприятия"; 
          CoUninitialize();
          return FALSE;
        }


        VARIANT       vRet;
        DISPID dispIDRmTrade, dispIDInitialize;
        DISPPARAMS args = {0, 0, 0, 0};
        VARIANT vars[3];  // Параметры для вызова Initialize


        BSTR rmTrade = L"RMTrade";

        hr = pv77->GetIDsOfNames(IID_NULL, &rmTrade, 1, 0, &dispIDRmTrade);

        if (FAILED(hr))
        {
          return"Невозможно получить ID от RMTrade";
          if (pv77)
                pv77->Release();
          CoUninitialize();
          return FALSE;
        }

        hr = pv77->Invoke(dispIDRmTrade, IID_NULL, 0, DISPATCH_PROPERTYGET, 
&args,
                  &vars[2], NULL, NULL);

        if (FAILED(hr))
        {
          return"Невозможно получить интерфейс от
RMTrade";
          if (pv77)
                pv77->Release();
          CoUninitialize();
          return FALSE;
        }

        //нужно получить ID для Initialize(..);
        BSTR init = L"Initialize";
        hr = pv77->GetIDsOfNames(IID_NULL, &init, 1, 0, &dispIDInitialize);
        if (FAILED(hr))
        {
          return"Не удалось получить ID от Initialize";
          if (pv77)
                pv77->Release();
          CoUninitialize();
          return FALSE;
        }


        args.cArgs = 3;
        args.rgvarg = vars;
        std::wstring path = L"/DC:\\Users\\Public\\Documents\\old\\Steklo\\ 
/Nya 
/P185224";

        vars[0] = _variant_t(no_splash_screen ? L"NO_SPLASH_SHOW" : L""); 
        vars[1] = _variant_t(path.c_str());;


        hr = pv77->Invoke(dispIDInitialize, IID_NULL, 0, DISPATCH_PROPERTYGET, 
&args, 
           &vRet, NULL, NULL);

        if(FAILED(hr) ||  (vRet.vt ==  VT_BOOL && vRet.bstrVal == 0x00))
        {
          return"Невозможно запустить 1С
Предприятие";
        }

        return "ok";
}

Actual result:
--------------
This code work fine if compiled like Win32 application.
When i make it a part of PHP extension (dll) and call from PHP script
started 
program behaves like path 

        std::wstring path = L"/DC:\\Users\\Public\\Documents\\old\\Steklo\\ 
/Nya 
/P185224";

is incorrect, but there is no any windows or messages of course. Stated
program is 
in memory has size like there exists only windows to enter correct path
(such 
window is shown if it's a win32 application, not a PHP extension).

Help me somehow please

-- 
Edit bug report at https://bugs.php.net/bug.php?id=63164&edit=1
-- 
Try a snapshot (PHP 5.4):   
https://bugs.php.net/fix.php?id=63164&r=trysnapshot54
Try a snapshot (PHP 5.3):   
https://bugs.php.net/fix.php?id=63164&r=trysnapshot53
Try a snapshot (trunk):     
https://bugs.php.net/fix.php?id=63164&r=trysnapshottrunk
Fixed in SVN:               https://bugs.php.net/fix.php?id=63164&r=fixed
Fixed in release:           https://bugs.php.net/fix.php?id=63164&r=alreadyfixed
Need backtrace:             https://bugs.php.net/fix.php?id=63164&r=needtrace
Need Reproduce Script:      https://bugs.php.net/fix.php?id=63164&r=needscript
Try newer version:          https://bugs.php.net/fix.php?id=63164&r=oldversion
Not developer issue:        https://bugs.php.net/fix.php?id=63164&r=support
Expected behavior:          https://bugs.php.net/fix.php?id=63164&r=notwrong
Not enough info:            
https://bugs.php.net/fix.php?id=63164&r=notenoughinfo
Submitted twice:            
https://bugs.php.net/fix.php?id=63164&r=submittedtwice
register_globals:           https://bugs.php.net/fix.php?id=63164&r=globals
PHP 4 support discontinued: https://bugs.php.net/fix.php?id=63164&r=php4
Daylight Savings:           https://bugs.php.net/fix.php?id=63164&r=dst
IIS Stability:              https://bugs.php.net/fix.php?id=63164&r=isapi
Install GNU Sed:            https://bugs.php.net/fix.php?id=63164&r=gnused
Floating point limitations: https://bugs.php.net/fix.php?id=63164&r=float
No Zend Extensions:         https://bugs.php.net/fix.php?id=63164&r=nozend
MySQL Configuration Error:  https://bugs.php.net/fix.php?id=63164&r=mysqlcfg

Reply via email to