![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Функция CERapiInit [D7, WinXP]
XGarik © (2005-09-15 14:08:00)Помогите!!! Очень срочно!!!
Для синхронизации пк с кпк использую библиотеку RAPI.DLL.
Суть проблемы в проверке состояния подключения кпк к пк. Использую функцию CERapiInit данной библиотеки, которая в случае успеха возвращает 0.
if CERapiInit=0 then
showmessage('Устройство подключено')
else
showmessage('Ошибка! Устройство не подключено');
Данный код работает только при подключенном устройстве, а если устройство отсоединить или выключить, то произойдет подвисание программы и происходит ожидание завершения функции... Пробовал использовать try... except (результат тот же)...
Как это обойти? Всю голову поломал, никак не могу с этим справиться (ума не хватает).
Читал MSDN и пробовал разобраться с еще 1-й функцией CERapiInitEX, но безрезультатно. Искал также в Гугле, нашел множество примеров, но не один не работал!
XGarik (2005-09-27 09:28:00) [1]Народ! Все оказалось просто я использовал кривопереведенную с Си версию модуля RAPI.pas. Вот окончательная версия рабочего модуля, который проверяет подключение КПК к компу:
var
ri : TRapiInit;
hRes : HRESULT;
dwRet : DWORD;
flag: boolean;
begin
flag:=true;
repeat
ri.cbSize := sizeof(ri);
hRes := CeRapiInitEx(ri);
dwRet := WaitForSingleObject(ri.heRapiInit, 5000);
if (dwRet WAIT_OBJECT_0) OR (SUCCEEDED(ri.hrRapiInit) = FALSE) then
begin
CeRapiUninit;
if Application.MessageBox('КПК не подключен!!!' + Chr(13) + 'Установите КПК в USB-кредл и нажмите ' + Chr(34) + 'Да' + Chr(34) + ' для продолжения работы или ' + Chr(34) + 'Нет' + Chr(34) + ' для отмены загрузки/выгрузки данных.','Внимание',mb_IconWarning + MB_YESNO)=IDNO then
begin
flag:=false;
Exit;
end;
end;
until ((dwRet WAIT_OBJECT_0) OR (SUCCEEDED(ri.hrRapiInit) = FALSE))=false;
Обновленная (точнее версия в которой все запохало) версия модуля RAPI.PAS:
http://www.modaco.com/index.php?act=Attach&type=post&id=8173
Tonich (2005-09-15 15:20:00) [2]или не пишешь для него, а лишь хочешь слить данные ?
Tonich (2005-09-15 15:16:00) [3]а ты на чем пишешь для кпк?