Главная страница
    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.45 MB
Время: 0.014 c
4-1127456496
Grishberg
2005-09-23 10:21
2005.11.27
com порт


14-1130915005
Saruwatari
2005-11-02 10:03
2005.11.27
Кто что знает об ипотеке поделитесь мыслями...


2-1131628594
markers
2005-11-10 16:16
2005.11.27
Выполнить консольную команду и вернуть результат?


2-1131686638
Bradobrei
2005-11-11 08:23
2005.11.27
рисунок с текстом


9-1120840060
Dgt
2005-07-08 20:27
2005.11.27
Привет.Хочу сделать как в контре. Glscene





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский