学习1:利用C#实现泡泡自动回复

来源:互联网 发布:专业淘宝拍照 编辑:程序博客网 时间:2024/05/01 16:13

1。导入api函数FindWindowEx来查找泡泡聊天窗口,用spy++查到泡泡聊天的类名。

2。导入api函数 ShowWindow来激活查找到的泡泡窗口。

相关代码:

public class NativeWIN32
 {
  [DllImport("user32.dll", CharSet=CharSet.Auto)]
  public static extern IntPtr FindWindowEx(IntPtr parent /*HWND*/,
   IntPtr next /*HWND*/,
   string sClassName, 
   IntPtr sWindowTitle);
  [DllImport("user32.dll", CharSet=CharSet.Auto)]
  public static extern void SetForegroundWindow(int hwnd);

  [DllImport("user32.dll")]
  public static extern bool ShowWindow(int hWnd, nCmdShow nCmdShow);
  public enum nCmdShow:uint
  {
   SW_FORCEMINIMIZE=0x0,
   SW_HIDE=0x1,
   SW_MAXIMIZE=0x2,
   SW_MINIMIZE=0x3,
   SW_RESTORE=0x4,
   SW_SHOW=0x5,
   SW_SHOWDEFAULT=0x6,
   SW_SHOWMAXIMIZED=0x7,
   SW_SHOWMINIMIZED=0x8,
   SW_SHOWMINNOACTIVE=0x9,
   SW_SHOWNA=0xA,
   SW_SHOWNOACTIVATE=0xB,
   SW_SHOWNORMAL=0xC,
  }

 }

3。利用System.Windows.Forms.SendKeys.Send方法发送回复信息到激活的泡泡聊天窗口。

4。利用System.Windows.Forms.SendKeys.Send方法发送ALT+F4到激活的泡泡聊天窗口,关闭该窗口。

 (这个方法不好,容易关闭其他程序,改成 调用API SendMessage,2004-7-26

导入API:  

[DllImport("user32.dll", CharSet=CharSet.Auto)]
  public static extern int SendMessage(IntPtr hWnd, int msg, int wParam, int lParam);

调用:

SendMessage(hNext,0x0010,0,0);//hNext为窗口句柄,0x0010为消息WM_CLOSE的值。)

相关代码:

  private void timer1_Tick(object sender, System.EventArgs e)
  {
   
   IntPtr hParent = IntPtr.Zero;
   
   string sClassNameFilter = "NETEASE POPO UniformMsgWnd"; // 所有POPO聊天窗口的类
   string strMsg;
   strMsg=tbMsg.Text;
   hNext=NativeWIN32.FindWindowEx(hParent,hNext,sClassNameFilter,IntPtr.Zero); //找窗口句柄
   if(hNext.ToInt32()>0)
   {
    NativeWIN32.ShowWindow(hNext.ToInt32(),NativeWIN32.nCmdShow.SW_SHOWMINNOACTIVE); //显示窗口 

    System.Windows.Forms.SendKeys.Send(strMsg+"{ENTER}");
    System.Windows.Forms.SendKeys.Send("{ENTER}{ENTER}{ENTER}{ENTER}{ENTER}{ENTER}{ENTER}");//因为Send方法发送字符时如果开启了输入法,会导致焦点错乱,所以多加几个回车,对于泡泡聊天窗口来说,空回车没有反应。
    System.Windows.Forms.SendKeys.Send("%{F4}");
   
   }
   

   
  }

原创粉丝点击