Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.17.150.89] |
|
Сообщ.
#1
,
|
|
|
FAQ по использованию Windows CE/Pocket PC
Q: Что такое экран Today? A: Today Screen - это рабочий стол КПК, который Вы видите при загрузке. На нём обычно видна текущая дата, напоминания (Appointments) и т.п. в зависимости от настроек. Q: Как мне добавить дополнительные элементы на Today Screen? A: Существует программа Spb Pocket Plus (http://www.spbsoftwarehouse.com/products/pocketplus/?ru), которая позволяет разделять Today Screen на закладки, добавлять ярлыки, выводить индикаторы заряда батареи, использования памяти и т.п. Также, программа имеет дополнительные функции, например отключение функции Smart Minimize. Q: Как заставить кнопку закрытия окон действительно закрывать их, а не сворачивать? A: См. предыдущий вопрос. Также, рекомендую установить программу WisBar Advance. Q: Как убрать все или некоторые элементы с "рабочего стола"? A by HPC: Откройте "Пуск -> Настройки -> Сегодня -> Элементы" и снимите галочки напротив тех пунктов, которые не должны отображаться на экране Today. Q: Как синхронизировать ПК и КПК? A: Можно использовать Microsoft Active Sync. Q: Где найти информацию по Wi-Fi? A: http://www.wireless.ru/wireless, http://www.comptek.ru/wireless/ Q: Как синхронизировать ПК и КПК? A: Можно использовать Microsoft Active Sync. Q: Почему в Pocket Word не отображаются таблицы? A: Pocket Word начал поддерживать таблицы только начиная с Windows Mobile 2005. ------------------------------------------------------------------------------------------------------------ Программирование CE/PPC Q: Что нужно для синхронизации ПК и КПК по Bluetooth? A: Bluetooth-адаптер для ПК, поддержка Bluetooth на КПК и Windows XP Service Pack 2. Если нет возможности или желания использовать SP2, иногда работают драйвера сторонних разработчиков, однако на практике такое бывает редко. Q: Что нужно для того, чтобы начать программировать для Windows CE/Pocket PC? A: Выбор среды разработки зависит от языка. В общем случае это Visual Studio .NET или Visual Studio 2005. Для С и С++ можно использовать MS eMbedded Visual C++ (обычно на него необходим Service Pack). В любом случае понадобится SDK на ОС, под которую Вы хотите что-либо написать, и, возможно, эмулятор. Q: Чем вообще отличается пограммирование под Pocket PC от обычного? A: Почти ничем. Немного другие интерфейсы, немного меньше ресурсов. Q: Почему компилятор ругается на строки? A: В Pocket PC используется Unicode. Это удобно тем, что не нужно думать о множестве кодировок при переводе приложения на другой язык. Строки объявляются например так: LPCTSTR lpString = L"hello"; LPCTSTR lpString2 = _T("hello"); Q: Как преобразовать CString в число? atoi() не хочет работать. A by ASMerg: Необходимо использовать функцию _ttoi(). Q: Как программно синхронизировать ПК и КПК? A: Посмотрите здесь: http://msdn.microsoft.com/library/en-us/wc...grammingFAQ.asp Программное включение и выключение Bluetooth и WLAN на HP iPAQ На КПК iPAQ фирмы HP используется Bluetooth-стек от фирмы BROADCOM (WIDCOMM). SDK для него довольно дорог, но в некоторых случаях можно обойтись своими силами. Существуют некоторые особенности работы с беспроводными сервисами на iPAQ. Есть несколько способов включить Bluetooth, работоспособность которых зависит от неизвестных мне факторов. Я опишу способы включения Bluetooth и WLAN с помощью iPAQUtil.dll. Итак, чтобы программно включить WLAN на КПК iPAQ фирмы HP, можно использовать функции библиотеки iPAQUtil.dll. Библиотека включает в себя довольно много сервисных функций, в том числе: Для функций iPAQSetBlueToothRadio() и iPAQSetWLANRadio() переменная status может принимать следующие значения: Примечание: несмотря на то, что во всех доступных мне источниках информации говорится о том, что WLAN включается значением status=1, на моём КПК функция iPAQSetWLANRadio() работала с аргументами 1 - выключить, 0 - включить. Точно такие же значения возвращала функция iPAQGetWLANRadioStatus(). Чтобы получить статус Bluetooth или WLAN, достаточно вызвать iPAQGetBlueToothRadioStatus() или iPAQGetWLANRadioStatus() соответственно. Функции устанавливают значение переменной status. Не путайте с возвращаемым значением. Используются следующие значения: Примечание, данное выше, справедливо и для функции iPAQGetWLANRadioStatus(). Рассмотрим пример использования указанных функций: // Регистрируем тип экспортируемых функций typedef bool (*iPAQUtil)(DWORD *lpdwValue); // Загружаем библиотеку iPAQUtil.dll HANDLE IPAQ_handle = LoadLibrary(L"iPAQUtil.dll"); if (IPAQ_handle == INVALID_HANDLE_VALUE) { MessageBox(NULL, L"Ошибка открытия iPAQUtil.dll. Программа работает только на HP iPAQ.", L"Ошибка", MB_OK | MB_ICONEXCLAMATION); return 1; } // Экспортируем функции iPAQUtil iPAQSetBluetoothRadio = (iPAQUtil)GetProcAddress((HMODULE)IPAQ_handle, L"iPAQSetBlueToothRadio"); iPAQUtil iPAQGetBluetoothRadioStatus= (iPAQUtil)GetProcAddress((HMODULE)IPAQ_handle, L"iPAQGetBlueToothRadioStatus"); iPAQUtil iPAQSetWLANRadio = (iPAQUtil)GetProcAddress((HMODULE)IPAQ_handle, L"iPAQSetWLANRadio"); iPAQUtil iPAQGetWLANRadioStatus = (iPAQUtil)GetProcAddress((HMODULE)IPAQ_handle, L"iPAQGetWLANRadioStatus"); // Проверяем, успешно ли всё экспортировалось if (!iPAQSetBluetoothRadio || !iPAQGetBluetoothRadioStatus || !iPAQSetWLANRadio || !iPAQGetWLANRadioStatus) { MessageBox(NULL, L"Ошибка загрузки iPAQUtil.dll", L"Ошибка", MB_OK | MB_ICONEXCLAMATION); return 1; } DWORD status = 0; iPAQGetBlueToothRadioStatus(&status); if (status) { // Bluetooth включен } else { // Bluetooth выключен } iPAQGetWLANRadioStatus(&status); if (status) { // WLAN включен (в моём случае выключен) } else { // WLAN выключен (в моём случае включен) } // Включаем Bluetooth state = 1; iPAQSetBlueToothRadio(&state); // Выключаем Bluetooth state = 0; iPAQSetBlueToothRadio(&state); // Включаем WLAN (в моём случае - выключаем) state = 1; iPAQSetWLANRadio(&state); // Выключаем WLAN (в моём случае - включаем) state = 0; iPAQSetWLANRadio(&state); // И освобождаем библиотеку FreeLibrary(IPAQ_handle); Есть второй способ включения Bluetooth - методом посылки оконного сообщения программе BTTrayCE.exe. Для этого нужно зарегистрировать два сообщения - WIDCOMM_WM_BTRADIO_ON и WIDCOMM_WM_BTRADIO_OFF. Имя класса окна, которому нужно отправлять сообщения - WCE_BTTRAY. Последовательность действий сводится к следующему: 1. Зарегистрировать указанные сообщения с помощью RegisterWindowMessage() 2. Получить HWND окна BTTrayCE.exe с помощью функции FindWindow() 3. Отправить сообщение WIDCOMM_WM_BTRADIO_ON для включения или WIDCOMM_WM_BTRADIO_OFF для выключения Bluetooth с помощью SendMessage() Пример: // Регистрируем оконные сообщения UINT WIDCOMM_WM_BTRADIO_ON = RegisterWindowMessage(L"WIDCOMM_WM_BTRADIO_ON"); UINT WIDCOMM_WM_BTRADIO_OFF = RegisterWindowMessage(L"WIDCOMM_WM_BTRADIO_OFF"); // Получаем HWND окна BTTrayCE.exe HWND bt_hwnd = FindWindow(L"WCE_BTTRAY", 0); // Включаем Bluetooth SendMessage(bt_hwnd, WIDCOMM_WM_BTRADIO_ON, 0, 0); // Выключаем Bluetooth SendMessage(bt_hwnd, WIDCOMM_WM_BTRADIO_OFF, 0, 0); |
Сообщ.
#2
,
|
|
|
Q: Не могу открыть COM-port.
A: В WCE после названия порта необходимо поставить двоеточие. Пример: CreateFile( _T("COM1:"), GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL ); Добавлено Q: Переношу свою программу, общающуюся с определенным устройством через СОМ-порт, на WCE. Но компилятор почему-то ругается на функцию GetOverlappedResult. A: Дело в том, что Windows CE не поддерживает асинхронную работу с COM-портом. |
Сообщ.
#3
,
|
|
|
Q: Как создать toolbar в Windows CE?
A: Посмотрите пример здесь: http://msdn.microsoft.com/library/default....g_a_Toolbar.asp Q: Как создать меню в Windows CE? A: Например, как часть CommandBar'а. Посмотрите пример здесь: http://msdn.microsoft.com/archive/default...._barbitmaps.asp |
Сообщ.
#4
,
|
|
|
Возможно какаято ошибка но в приведенном выше коде мне не понятно
HANDLE IPAQ_handle = LoadLibrary(L"iPAQUtil.dll"); как так тоже можно грузить библиотеку? Ну может и я чего незнал до сего дня (ладно). Но вот выгружать таким образом FreeLibrary(IPAQ_handle); точно не получается ембеддет ругается . Но если переделать и сделать так: HINSTANCE IPAQ_handle = LoadLibrary(L"iPAQUtil.dll"); тогда все работает и выгружается так: FreeLibrary(IPAQ_handle); но вот у меня на iPAQ HP 5455 замечен такой глюк все включается и работает но вот при выборе выключить вроде на несколько сек выключается а потом лампочка снова загорается и вся машинка жутко начинает тормозить.... мож что не так поясните? |
Сообщ.
#5
,
|
|
|
Q: Как включить курсор ожидания (песочные часы)?
A: Нужно использовать CWaitCursor wait; |
Сообщ.
#6
,
|
|
|
Q: как сделать, чтобы подсветка не выключалась сама?
A: вот: DWORD BacklightACT=0,BacklightDCT=0; void BacklightON() { HKEY key; DWORD dwDesc = REG_OPENED_EXISTING_KEY; if (RegOpenKeyEx(HKEY_CURRENT_USER,TEXT("ControlPanel\\Backlight"), 0,KEY_ALL_ACCESS,&key) == ERROR_SUCCESS) { DWORD dwType = REG_DWORD; DWORD tmpT = 0x7FFFFFFF; DWORD dwS; RegQueryValueEx(key,TEXT("BatteryTimeout"),0,&dwType,(PBYTE)&BacklightDCT,&dwS); RegQueryValueEx(key,TEXT("ACTimeout"),0,&dwType,(PBYTE)&BacklightACT,&dwS); RegSetValueEx(key,TEXT("BatteryTimeout"),0,dwType,(PBYTE)&tmpT,4); RegSetValueEx(key,TEXT("ACTimeout"),0,dwType,(PBYTE)&tmpT,4); RegCloseKey(key); HANDLE hEvent = CreateEvent(NULL, FALSE, FALSE, TEXT("BackLightChangeEvent")); if (hEvent) { SetEvent(hEvent); CloseHandle(hEvent); } } } void BacklightNORMAL() { HKEY key; if (RegOpenKeyEx(HKEY_CURRENT_USER, TEXT("ControlPanel\\Backlight"), 0,KEY_ALL_ACCESS,&key) == ERROR_SUCCESS) { DWORD dwType = REG_DWORD; RegSetValueEx(key,TEXT("BatteryTimeout"),0,dwType,(PBYTE)&BacklightDCT,4); RegSetValueEx(key,TEXT("ACTimeout"),0,dwType,(PBYTE)&BacklightACT,4); RegCloseKey(key); HANDLE hEvent = CreateEvent(NULL, FALSE, FALSE, TEXT("BackLightChangeEvent")); if (hEvent) { SetEvent(hEvent); CloseHandle(hEvent); } } } http://www.handy.ru/board/viewtopic.php?t=54250 |
Сообщ.
#7
,
|
|
|
Цитата EL[michlen] @ использовать Microsoft Active Sync. Q: Active Sync не хочет устанавливаться под Vista, что делать? A: Использовать Microsoft Device Mobile Center. |
Сообщ.
#8
,
|
|
|
Q:
Цитата wandererbk @ Уважаемые, прошу помощи с VS 2008. Нужен как бы мини faq по тому как написать "Hello, world!" для мобильных устройств. A: Цитата Fester @ 1) при инсталляции студии нужно выбрать создание приложений для smart devices 2) нужно скачать SDK нужной операционной системы (в принципе со студией устанавливается SDK для Windows Mobile и PocketPC) 3) Create project -> Smart Devices -> выбираешь тип проекта, например MFC Smart Device Application -> выбираешь платформу -> проходишь все остальные странички визарда -> компилишь и все работает |