我不得不將一些軟件從Windows Mobile 6.5移植到Windows CE 5.0,軟件當前檢測到設備在基本單元中時(ActiveSync正在運行)。WIN CE 5.0 ActiveSync連接/斷開?
我需要知道ActiveSync何時在設備上運行,以便我可以準備設備以發送和接收文件。
我發現了一篇關於如何使用PINVOKE方法的文章,比如CeRunAppAtEvent,但我對這種方式的工作無能爲力。
bool terminateDeviceEventThreads = false;
IntPtr handleActiveSyncEndEvent;
while (!terminateDeviceEventThreads)
{
handleActiveSyncEndEvent = NativeMethods.CreateEvent (IntPtr.Zero,
true, false, "EventActiveSync");
if (IntPtr.Zero != handleActiveSyncEndEvent)
{
if (NativeMethods.CeRunAppAtEvent ("\\\\.\\Notifications\\NamedEvents\\EventActiveSync",
(int) NOTIFICATION_EVENT.NOTIFICATION_EVENT_RS232_DETECTED))
{
NativeMethods.WaitForSingleObject (handleActiveSyncEndEvent, 0);
//
NativeMethods.ResetEvent (handleActiveSyncEndEvent);
if (!NativeMethods.CeRunAppAtEvent ("\\\\.\\Notifications\\NamedEvents\\EventActiveSync",
(int) NOTIFICATION_EVENT.NOTIFICATION_EVENT_NONE))
{
break;
}
handleActiveSyncEndEvent = IntPtr.Zero;
}
}
}
那麼,什麼是這裏的問題?您發佈的代碼會在設備處於掛起狀態時設置一個命名事件,因此您大概可以在應用程序的其他地方等待它。 – ctacke 2011-06-03 14:07:41
嗨,這是問題所在,我不明白我找到的代碼,我需要的是一個觸發器,當單元被放入支架並被取出時觸發,非常類似WM6中的SystemState – 2011-06-03 14:15:38