2010-05-19 78 views
2

任何人都可以發佈示例如何閱讀Windows移動設備上的消息存儲6? 我做到了這一點與「InTheHand」:c#如何讀取Windows移動設備上的消息存儲6

foreach (InTheHand.WindowsMobile.PocketOutlook.SmsMessage mess in sess.SmsAccount.SentItems) 
       { 
        if (mess.Received.Year == thisYear && mess.Received.Month == thisMonth) 
        { 
         smsThisMonth++; 
        } 
       } 

的問題是,我只有InTheHand的評估版本。 我想用OpenNetCF或mapidotnet來做到這一點,如果可能的話。 但我沒有弄清楚如何用OpenNetCF做到這一點,並且mapitdotnet在sourceforge站點(http://sourceforge.net/projects/mapidotnet/)上不再可用。 我只在svn目錄中找到它,但沒有dll。

回答

1

沒有一個OpenNETCF庫提供此功能。我們沒有試圖實現它,因爲已經有一個可用的解決方案(InTheHand的庫)和I don't like reinventing the wheel if there's a perfectly good one already available

如果他們的價格對您來說太陡,您可以隨時查看this MSDN article on COM Interop in the CF,並將其與online tutorials on MAPIthe MAPI documentation中的一些配對。

The MAPIDotNet project is probably worth investigation too。你說沒有二進制文件,但那有什麼關係?你有一個編譯器。

即使在C++中,MAPI也很複雜且令人困惑。從經驗中我可以告訴你,所有使用C#的工作(我在InTheHand擁有產品之前的1.0天內完成)需要至少一週時間,這就是如果你知道如何使用COM和C++。

1

好吧,我想通了,如何與mapidotnet做到這一點:

MAPI mapi = new MAPI(); 
IMAPIMsgStore[] stores = mapi.MessageStores; 

     for (int i = 0; i < stores.Length; i++) 
     { 
      if (stores[i].DisplayName == @"SMS") 
      { 
       IMAPIFolder smsSentFolder = stores[i].SentMailFolder.OpenFolder(); 
       smsSentFolder.SortMessagesByDeliveryTime(TableSortOrder.TABLE_SORT_DESCEND); 
       IMAPIMessage[] messages = smsSentFolder.GetNextMessages(999); 
       for (int n = 0; n < messages.Length; n++) 
       { 
        if (messages[n].LocalDeliveryTime.Month == monat && messages[n].LocalDeliveryTime.Year == jahr) 
        { 
         smsDiesenMonat++; 
        } 
       } 
      } 

其實我編制的項目,但我做了一個奇怪的錯誤,我不能在Mapilib.dll添加到我的項目。 但現在我得到它的工作。