2010-05-19 7 views
2

quelqu'un peut-il poster un exemple comment lire le messagestore sur un appareil mobile Windows 6? Je fait avec « InTheHand »:C# comment lire la banque de messages sur un appareil mobile Windows 6

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

Le problème est que je ne dispose que d'une version d'évaluation de InTheHand. Je voudrais faire cela avec OpenNetCF ou mapidotnet, si possible. Mais je n'ai pas compris comment faire cela avec OpenNetCF et mapitdotnet n'est plus disponible sur le site sourceforge (http://sourceforge.net/projects/mapidotnet/). Je l'ai seulement trouvé dans le répertoire svn, mais il n'y a pas de DLL.

Répondre

1

Aucune des bibliothèques OpenNETCF n'offre cette fonctionnalité. Nous n'avons pas pris la peine d'essayer de l'implémenter car il existe déjà une solution disponible (la bibliothèque InTheHand) et I don't like reinventing the wheel if there's a perfectly good one already available. Si leur prix est trop raide pour vous, vous pouvez toujours regarder this MSDN article on COM Interop in the CF et coupler cela avec certains des online tutorials on MAPI et the MAPI documentation.

The MAPIDotNet project is probably worth investigation too. Vous dites qu'il n'y a pas de binaires, mais qu'importe? Vous avez un compilateur.

MAPI est compliqué et confus, même en C++. Par expérience, je peux vous dire que tout cela fonctionne en C# (je l'ai fait dans les 1,0 jours avant InTheHand avait leur produit) prend au moins une semaine et c'est si vous savez comment travailler avec COM et C++.

1

Ok, je me suis dit, comment faire cela avec 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++; 
        } 
       } 
      } 

En fait, je compilé le projet, mais j'avais une étrange erreur, que je ne pouvais pas ajouter le Mapilib.dll à mon projet. Mais maintenant je le fais fonctionner.

Questions connexes