2009-06-14 8 views
0

Ich versuche, eine automatische Nachrichtenantwort in Windows Mobile zu haben. Ich verwende MessageInterceptor-Klasse, die zum ersten Mal zu funktionieren scheint. Aber es scheint nicht für Sekunden zu funktionieren! nicht sicher, ob ich eine Endlosschleife haben muss. Ich habe nicht viel Erfahrung mit Windows Mobile-Entwicklung, also bitte schlagen Sie am besten vor.MessageInterceptor tritt nicht zum zweiten Mal mit Windows Mobile-Anwendung

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Text; 
using System.Windows.Forms; 
using Microsoft.WindowsMobile; 
using Microsoft.WindowsMobile.PocketOutlook; 
using Microsoft.WindowsMobile.PocketOutlook.MessageInterception; 


namespace TextMessage3 
{ 
    public partial class Form1 : Form 
    { 

     protected MessageInterceptor smsInterceptor = null; 

     public Form1() 
     { 
      InitializeComponent(); 
      debugTxt.Text = "Calling Form cs"; 
      //Receiving text message 
      MessageInterceptor interceptor = new MessageInterceptor(InterceptionAction.NotifyandDelete); 
      interceptor.MessageReceived += SmsInterceptor_MessageReceived;     
     } 

     public void SmsInterceptor_MessageReceived(object sender, 
     MessageInterceptorEventArgs e) 
     { 
       SmsMessage msg = new SmsMessage(); 
       msg.To.Add(new Recipient("James", "+16044352345")); 
       msg.Body = "Congrats, it works!"; 
       msg.Send(); 
       //Receiving text message 
       MessageInterceptor interceptor = new MessageInterceptor(InterceptionAction.NotifyAndDelete); 
       interceptor.MessageReceived += SmsInterceptor_MessageReceived; 

     } 



    } 
} 

Danke,

Tam

Antwort

5

Es ist wie Ihre MessageInteceptor Klasse sieht angeordnet zu werden, bevor Sie Ihre zweite Nachricht bekommen, weil die einzige Referenz auf das Objekt entfernt wird, sobald Sie den Konstruktor verlassen oder Ihr Ereignishandler. Anstatt jedes Mal, wenn Sie eine Nachricht erhalten, ein neues Objekt zu erstellen, erstellen Sie einfach ein neues Objekt in Ihrem Konstruktor und setzen es auf Ihre Membervariable. Jedes Mal, wenn eine Nachricht empfangen wird, sollte Ihre SmsInterceptor_MessageReceived-Funktion aufgerufen werden.

public partial class Form1 : Form 
    { 

     protected MessageInterceptor smsInterceptor = null; 

     public Form1() 
     { 
      InitializeComponent(); 
      debugTxt.Text = "Calling Form cs"; 
      //Receiving text message 
      this.smsInterceptor = new MessageInterceptor(InterceptionAction.NotifyandDelete); 
      this.smsInterceptor.MessageReceived += this.SmsInterceptor_MessageReceived;     
     } 

     public void SmsInterceptor_MessageReceived(object sender, 
     MessageInterceptorEventArgs e) 
     { 
       SmsMessage msg = new SmsMessage(); 
       msg.To.Add(new Recipient("James", "+16044352345")); 
       msg.Body = "Congrats, it works!"; 
       msg.Send(); 
     } 
    } 
Verwandte Themen