Что нового

Как передать BYTE в метод объекта?

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
Мне нужно вызывать следующий метод:

Код:
        virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE SmsSendPdu( 
            /* [in] */ __RPC__in LPCWSTR pduData,
            /* [in] */ BYTE size,
            /* [out] */ __RPC__out ULONG *requestID) = 0;

Метод описал так:

Код:
...
'SmsSendPdu hresult(wstr;byte;ulong*);' & _;
...


Но в я никак не врублюсь как передать BYTE, если я буду писать так:
Код:
Local $iRequestID
$sPdu = '01000D91945157084141F600000120'
$hr = $oIMbnSms.SmsSendPdu($sPdu, 15, $iRequestID)

То ошибок нет, но когда приходит событие OnSmsSendComplete, то в HRESULT я получаю
0x80070057 ;ERROR_INVALID_PARAMETER

Вот какой еще не правильный параметр я передал?

Это же PDU я легко отправляю через терминал...

Хэлп!
 
Автор
inververs

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
Все понял, все правильно я вызывал :smile:
Размер $iSize не должен учитывать длину SMS центра и сам номер SMS центра.
А если без SMS центра отправлять, то нужно к PDU дописывать спереди 00, но в подсчет длины не включать.
Вот правильный PDU.
'0001000D91945157084141F600000120'
Код:
Local $iRequestID
$hr = $oIMbnSms.SmsSendPdu($sPdu, 15, $iRequestID)
 
Верх