Работа с RAPI без фактической установки ActiveSync
От: Kalinich  
Дата: 21.10.04 12:08
Оценка:
Вопрос: каким образом можно заменить установку ActiveSync (я имею в виду через setup,exe и тому подобное) на копирование нужных файлов в нужныы директории, прописывание параметров в реестра и т.д. (о том что и куда прописывать и копировать просьба подробнее)?

Цель: хочу чтобы пользователю было достаточно установки только моего дистрибутива, дабы не ставить и не возиться с ActiveSync отдельно

Примечание: при работе я использую RAPI

Заранее благодарен...

Калиновский А.И.


22.10.04 21:17: Перенесено модератором из 'C/C++. Прикладные вопросы' — Павел Кузнецов
Re: Работа с RAPI без фактической установки ActiveSync
От: Аноним  
Дата: 21.10.04 13:43
Оценка:
Сомнительно, чтобы это было бы нужным.
Что-то я слабо себе представляю владельца покета,
который бы не поставил бы ActiveSync.
Кроме твоей программы есть еще куча других полезных программ,
которые требуют ActiveSync

Так что если подходить к проблеме прогматично, то проще сказать,
что для твоей программы требуется установленный ActiveSync.
Это "ограничение" практически никого не коснется.
Re[2]: Работа с RAPI без фактической установки ActiveSync
От: Kalinich  
Дата: 21.10.04 13:57
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Сомнительно, чтобы это было бы нужным.

А>Что-то я слабо себе представляю владельца покета,
А>который бы не поставил бы ActiveSync.
А>Кроме твоей программы есть еще куча других полезных программ,
А>которые требуют ActiveSync

А>Так что если подходить к проблеме прогматично, то проще сказать,

А>что для твоей программы требуется установленный ActiveSync.
А>Это "ограничение" практически никого не коснется.


А если подходить к проблеме с точки зрения программиста, то мне требуется максимально упростить процесс внедрения данного продукта и учитывать приходиться разных владельцев покетов... Так что вопрос с повестки дня не снимается, а по прежнему очень актуален...

Да, программа минимум, это хотя бы суметь програмно определить наличие подключения покета к десктопу, в противном случае CeRapiInit() будет пытаться сделать свое дело вплоть до конца света...
Re[3]: Работа с RAPI без фактической установки ActiveSync
От: bkat  
Дата: 21.10.04 14:11
Оценка:
Здравствуйте, Kalinich, Вы писали:

K>Здравствуйте, Аноним, Вы писали:


А>>Сомнительно, чтобы это было бы нужным.

А>>Что-то я слабо себе представляю владельца покета,
А>>который бы не поставил бы ActiveSync.
А>>Кроме твоей программы есть еще куча других полезных программ,
А>>которые требуют ActiveSync

А>>Так что если подходить к проблеме прогматично, то проще сказать,

А>>что для твоей программы требуется установленный ActiveSync.
А>>Это "ограничение" практически никого не коснется.

K>А если подходить к проблеме с точки зрения программиста, то мне требуется максимально упростить процесс внедрения данного продукта и учитывать приходиться разных владельцев покетов... Так что вопрос с повестки дня не снимается, а по прежнему очень актуален...


Ну в таком случае тебе придется реализовывать ActiveSync
и протоколы, который он поддерживает. Технически это конечно же возможно,
но неоправдано для обычных разработчиков...

Если ты будешь просто так таскать с собой какую-нибудь dll'ку от ActiveSync,
то это очевидно будет нарушением авторских прав.

Вообще точка зрения программиста не всегда способствует успеху продукта

K>Да, программа минимум, это хотя бы суметь програмно определить наличие подключения покета к десктопу, в противном случае CeRapiInit() будет пытаться сделать свое дело вплоть до конца света...


Для этих целей лучше пользовать CeRapiInitEx, который позволяет выставлять тайм аут
и не ждать до конца света...

P.S. Прошу прощения. Первый Аноним был я...
Re[4]: Работа с RAPI без фактической установки ActiveSync
От: Kalinich  
Дата: 21.10.04 16:54
Оценка:
Здравствуйте, bkat, Вы писали:

B>Если ты будешь просто так таскать с собой какую-нибудь dll'ку от ActiveSync,

B>то это очевидно будет нарушением авторских прав.

Насчет этого я думаю, что вряд ли, поскольку все необходимые *.lib и *.h файлы можно легко найти в PPC2002 SDK

B>Вообще точка зрения программиста не всегда способствует успеху продукта

А это как раз и не моя точка зрения, мне гораздо проще юзать ActiveSync, просто менеджер проекта предположил, что так будет и проще и красивее, а мое дело маленькое — в его предположение "вдохнуть" жизнь

K>>Да, программа минимум, это хотя бы суметь програмно определить наличие подключения покета к десктопу, в противном случае CeRapiInit() будет пытаться сделать свое дело вплоть до конца света...


B>Для этих целей лучше пользовать CeRapiInitEx, который позволяет выставлять тайм аут

B>и не ждать до конца света...
Если я не ошибаюсь CeRapiInitEx отличается только тем, что возвращает указатель на структуры типа RAPIINIT, как же ей передать таймер?
//
HRESULT CeRapiInitEx(
RAPIINIT *pRapiInit
);
//
typedef struct _RAPIINIT {
DWORD cbSize;
HANDLE heRapiInit;
HRESULT hrRapiInit;
} RAPIINIT;
//
Я не исключаю, что чего-то не понял и даже буду рад, если это так (куда таймер-то пихать)

B>P.S. Прошу прощения. Первый Аноним был я...
Re[5]: Работа с RAPI без фактической установки ActiveSync
От: Kalinich  
Дата: 21.10.04 17:12
Оценка:
Здравствуйте, Kalinich, Вы писали:

K>Здравствуйте, bkat, Вы писали:


B>>Если ты будешь просто так таскать с собой какую-нибудь dll'ку от ActiveSync,

B>>то это очевидно будет нарушением авторских прав.

K>Насчет этого я думаю, что вряд ли, поскольку все необходимые *.lib и *.h файлы можно легко найти в PPC2002 SDK


B>>Вообще точка зрения программиста не всегда способствует успеху продукта

K>А это как раз и не моя точка зрения, мне гораздо проще юзать ActiveSync, просто менеджер проекта предположил, что так будет и проще и красивее, а мое дело маленькое — в его предположение "вдохнуть" жизнь

K>>>Да, программа минимум, это хотя бы суметь програмно определить наличие подключения покета к десктопу, в противном случае CeRapiInit() будет пытаться сделать свое дело вплоть до конца света...


B>>Для этих целей лучше пользовать CeRapiInitEx, который позволяет выставлять тайм аут

B>>и не ждать до конца света...
K>Если я не ошибаюсь CeRapiInitEx отличается только тем, что возвращает указатель на структуры типа RAPIINIT, как же ей передать таймер?
K>//
K>HRESULT CeRapiInitEx(
K>RAPIINIT *pRapiInit
K>);
K>//
K>typedef struct _RAPIINIT {
K>DWORD cbSize;
K>HANDLE heRapiInit;
K>HRESULT hrRapiInit;
K>} RAPIINIT;
K>//
K>Я не исключаю, что чего-то не понял и даже буду рад, если это так (куда таймер-то пихать)

Да, я понял, что немного неправильно все понял, вернее не совсем четко была сформулирована вот эта фраза "Для этих целей лучше пользовать CeRapiInitEx, который позволяет выставлять тайм аут"...
Речь идет наверное о MsgWaitForMultipleObjects, для которого и нужен HANDLE heRapiInit, который в свою очередь возвращает CeRapiInitEx...

Теперь я правильно понял?

B>>P.S. Прошу прощения. Первый Аноним был я...
Re[6]: Работа с RAPI без фактической установки ActiveSync
От: bkat  
Дата: 21.10.04 17:29
Оценка:
Здравствуйте, Kalinich, Вы писали:

B>>>Для этих целей лучше пользовать CeRapiInitEx, который позволяет выставлять тайм аут

B>>>и не ждать до конца света...
K>>Если я не ошибаюсь CeRapiInitEx отличается только тем, что возвращает указатель на структуры типа RAPIINIT, как же ей передать таймер?
K>>//
K>>HRESULT CeRapiInitEx(
K>>RAPIINIT *pRapiInit
K>>);
K>>//
K>>typedef struct _RAPIINIT {
K>>DWORD cbSize;
K>>HANDLE heRapiInit;
K>>HRESULT hrRapiInit;
K>>} RAPIINIT;
K>>//
K>>Я не исключаю, что чего-то не понял и даже буду рад, если это так (куда таймер-то пихать)

K>Да, я понял, что немного неправильно все понял, вернее не совсем четко была сформулирована вот эта фраза "Для этих целей лучше пользовать CeRapiInitEx, который позволяет выставлять тайм аут"...

K>Речь идет наверное о MsgWaitForMultipleObjects, для которого и нужен HANDLE heRapiInit, который в свою очередь возвращает CeRapiInitEx...

K>Теперь я правильно понял?


Не совсем...

Структуру типа RAPIINIT ты должен сам подготовить.
В ней есть хендл "евента", который позволяет тебе ждать столько сколько тебе нужно
с помощью WaitForSingleObject.
и вв результате ты либо выйдешь по тайм ауту из-за того, что нету коннекта,
либо RAPI выставит твой "евент"

Грубо примерно так:

DWORD timeout=5000; // ждем максимум 5 сек
RAPIINIT rapiInitData = {sizeof(RAPIINIT), 0, 0};

rapiInitData.heRapiInit = CreateEvent(NULL, FALSE, FALSE, NULL);

ResetEvent(m_rapiInitData.heRapiInit);

HRESULT hRes = CeRapiInitEx(&rapiInitData); 

if (S_OK == hRes)
{
  DWORD dwWaitResult = WaitForSingleObject(m_rapiInitData.heRapiInit, timeout);
  if (dwWaitResult==WAIT_OBJECT_0)
  {
    // есть коннект
  }
  else
  {
    // нет коннекта 
  }
 
}
else
{
  //... проблемы с RAPI, скорей всего нету ActiveSync...
}


Прошу прощения что немного сбил с толку...
Re[7]: Работа с RAPI без фактической установки ActiveSync
От: bkat  
Дата: 21.10.04 17:32
Оценка:
И еще...
Мой пример — это только схема
Там ни "евент" ни закрывается, ни многих других вещей не делается
Re[8]: Работа с RAPI без фактической установки ActiveSync
От: Kalinich  
Дата: 21.10.04 19:51
Оценка:
Здравствуйте, bkat, Вы писали:

B>И еще...

B>Мой пример — это только схема
B>Там ни "евент" ни закрывается, ни многих других вещей не делается

Большое спасибо за пример... Скорее всего не буду писать свой ActiveSync , а все-таки буду пользовать "мелкомягкие" решения...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.