Доброго времени суток. Есть следующий пример на c++:
void CALLBACK SnapPicRet(LLONG ILoginID, BYTE *pBuf, UINT RevLen, UINT EncodeType, DWORD CmdSerial, LDWORD dwUser)
{
CCapturePictureDlg *pThis = (CCapturePictureDlg*)dwUser;
pThis->OnOnePicture(ILoginID,pBuf,RevLen,EncodeType,CmdSerial);
}
void CCapturePictureDlg::OnOnePicture(LONG ILoginID, BYTE *pBuf, UINT RevLen, UINT EncodeType, UINT CmdSerial)
{
char path[1000];
int filelen = GetModuleFileName(NULL,path,1000);
int i = filelen;
while(path[i]!='\\')
{
i--;
}
path[i + 1] = '\0';
CString filepath(path);
CString filename = "img.JPG";
CString strfile = filepath + filename;
char *pFileName = strfile.GetBuffer(200);
FILE *stream;
if( (stream = fopen((const char*) pFileName, "wb")) != NULL )
{
int numwritten = fwrite( pBuf, sizeof( char ), RevLen, stream );
fclose( stream );
}
}
Я пытаюсь реализовать нечто подобное на Python с использованием dll. При попытке получить значение pBuf я получаю строку вида <__main__.LP_c_ubyte object at 0x03EAE800>, вот мой код:
def SnapRev(lLoginID,pBuf,RevLen,EncodeType,CmdSerial,dwUser):
print(pBuf)
FSETDECCALLBACK = ctypes.CFUNCTYPE(None ,ctypes.c_longlong, ctypes.POINTER(ctypes.c_ubyte), ctypes.c_uint, ctypes.c_uint, ctypes.c_ulong, ctypes.c_ulonglong)
fSetDecCallBack = FSETDECCALLBACK(SnapRev)
dll = ctypes.WinDLL("sdk.dll")
dll.CLIENT_SetSnapRevCallBack(fSetDecCallBack,0)
Как я могу получить значение указателя в виде строки для побайтовой записи в файл?
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Доброго времени суток, как задать 10 млн чисел после запятой в массиве?
Есть демо интернет-магазин на wordpress+woocommerce (на хостинге поддержка php 56) и его полная итоговая копия