Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2005.11.27;
Скачать: [xml.tar.bz2];

Вниз

Функция CERapiInit   Найти похожие ветки 

 
XGarik   (2005-09-15 14:08) [0]

Помогите!!! Очень срочно!!!
Для синхронизации пк с кпк использую библиотеку RAPI.DLL.
Суть проблемы в проверке состояния подключения кпк к пк. Использую функцию CERapiInit данной библиотеки, которая в случае успеха возвращает 0.

if CERapiInit=0 then
 showmessage("Устройство подключено")
else
 showmessage("Ошибка! Устройство не подключено");


Данный код работает только при подключенном устройстве, а если устройство отсоединить или выключить, то произойдет подвисание программы и происходит ожидание завершения функции... Пробовал использовать try... except (результат тот же)...

Как это обойти? Всю голову поломал, никак не могу с этим справиться (ума не хватает).
Читал MSDN и пробовал разобраться с еще 1-й функцией CERapiInitEX, но безрезультатно. Искал также в Гугле, нашел  множество примеров, но не один не работал!


 
Tonich ©   (2005-09-15 15:16) [1]

а ты на чем пишешь для кпк?


 
Tonich ©   (2005-09-15 15:20) [2]

или не пишешь для него, а лишь хочешь слить данные ?


 
XGarik   (2005-09-27 09:28) [3]

Народ! Все оказалось просто я использовал кривопереведенную с Си версию модуля 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



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2005.11.27;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.015 c
2-1131801001
KostR
2005-11-12 16:10
2005.11.27
Можно ли програмно сравнить две даты?


6-1123138472
The Phantom of The Opera
2005-08-04 10:54
2005.11.27
Скачивание с докачкой


5-1113173273
Бывший студент
2005-04-11 02:47
2005.11.27
Колонки TStringGrid


1-1130902739
Konrads
2005-11-02 06:38
2005.11.27
Масштабирование в Excel


14-1130886861
Ораклиный глаз
2005-11-02 02:14
2005.11.27
Алькаида готовит диверсию?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский