2012-04-05 10 views
0

演技は、その機能の一つは、これらのコード行です(スカイプPWN4G3)と呼ばれる:SkypeのAPIのヘルプと非常に奇妙な

//コントロールの

private void botOn_Click(object sender, EventArgs e) 
     { 
      if (toolStripLabel5.Text == "Not attached") 
      { 
       MessageBox.Show(notAttached, "Skype Pwnage - Info!", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); 
      } 
      else 
      { 
       botStop = false; 
       skype.Attach(7, false); 
       skype.MessageStatus += new _ISkypeEvents_MessageStatusEventHandler(skype_MessageStatus); 
       botOn.Text = "Running"; 
       botOn.Enabled = false; 
       botOff.Enabled = true; 
      } 
     } 

     private void botOff_Click(object sender, EventArgs e) 
     { 
      botStop = true; 
      botOn.Text = "Enable"; 
      botOn.Enabled = true; 
      botOff.Enabled = false; 
     } 

//機能

private void skype_MessageStatus(ChatMessage msg, TChatMessageStatus status) 
{ 
    if (botStop == true) 
    { 
    } 
    else 
    { 
     try 
     { 
      string command = msg.Body.Remove(0, trigger.Length).ToLower(); 
      string[] lines = richTextBox4.Text.Split('\n'); 
      foreach (string ln in lines) 
      { 
       string[] commands = ln.Split(':'); 
       if (radioButton6.Checked == true) 
       { 
        if (command.Contains(commands[0])) 
        { 
         listBox2.Items.Add(DateTime.Now +"> "+ commands[0]); 
         skype.SendMessage(msg.Sender.Handle, string.Format(commands[1])); 
         break; 
        } 
       } 
        if (radioButton4.Checked == true) 
        { 
         if (command == commands[0]) 
         { 
          listBox2.Items.Add(DateTime.Now + "> " + commands[0]); 
          skype.SendMessage(msg.Sender.Handle, string.Format(commands[1])); 
          break; 
         } 
        } 
       } 
      } 
     catch (Exception err0) 
     { 
     } 

    } 
} 

私の問題は、このコードの作業が素晴らしいことです。彼らが特定の単語を言うなら、人に自動返信します。しかし、それは非常に奇妙な演技です。 Skypeのウィンドウを最小化してボットを起動し、その作業をやりなおしたら、停止して起動するかラジオボタンを「完全」から「含む」に変更して次回実行すると2回返信されます

もう1つの非常に奇妙な問題は、いったんSkypeウィンドウを開き、あなたの側からのメッセージを見ると、もう一度それらを再び蘇らせることです。どんな考え?

誰かが知っているなら、私がこれを正しく停止/開始する方法を知っているなら、さらにもう1つは余計です。あなたがそれを作る方法を知っているなら、これはチャットグループからのメッセージを聞くことができず、今PMはチャットに耳を傾け、それを送信するために何か方法を作ることができない限り、メッセージが送信された場所でチャットします。

答えて

1

1)は2、3、より多くの時間を返信 - 問題はあなたがbotOnをクリックするたびに呼び出されているskype.MessageStatus += ...にあるようです。 -=に電話をかけるか、イベント登録が1回だけ行われるようにしてください。

2)再びメッセージを送信:skype_MessageStatusは一つのメッセージのために2回呼び出されている - SKYPE4COMLib.TChatMessageStatus cmsSending/cmsReceivedをチェック - メッセージが配信されたときとcmsSent/cmsReadターゲットユーザーがクリックすると、実際にメッセージを閲覧する - ので、すべてのあなたはあなたのコードで

SKYPE4COMLib.ChatMessage pMessage; 
if (pMessage.Chat.Members.Count == 2) 
{ 
    // process direct messages 
} 
else if(pMessage.Chat.Members.Count > 2) 
{ 
    // do whatever you want to do to process chat messages 
} 
をテストダイレクトメッセージやチャットグループ間で違いを確認するために) SKYPE4COMLib.TChatMessageStatus Status

3の値をチェックすることです行う必要があります

関連する問題