程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> 捕捉消息框中的文字

捕捉消息框中的文字

編輯:關於.NET

把桌面上彈出的消息框中的文字取出來

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Reflection;
using System.Xml;
using System.Runtime.InteropServices;
namespace WindowsApplication26
...{
  public partial class Form1 : Form
  ...{
    public class HookMsg
    ...{
      Win32 API functions#region Win32 API functions
      private const int WH_CBT = 0x5;
      private const int IDC_OK = 0x1;
      private const int IDC_Text = 0xFFFF;
      [DllImport("user32.dll")]
      protected static extern IntPtr SetWindowsHookEx(int code, HookProc func, IntPtr hInstance, int threadID);
      [DllImport("user32.dll")]
      protected static extern int UnhookWindowsHookEx(IntPtr hhook);
      [DllImport("user32.dll")]
      protected static extern int CallNextHookEx(IntPtr hhook, int code, IntPtr wParam, IntPtr lParam);
      [DllImport("user32.dll")]
      protected static extern int GetWindowText(IntPtr hwnd, [Out]StringBuilder lpString, int nMaxCount);
      [DllImport("user32.dll")]
      protected static extern int GetClassName(IntPtr hwnd, [Out]StringBuilder lpString, int nMaxCount);
      [DllImport("user32.dll")]
      protected static extern int SetWindowText(IntPtr hWnd, string lpString);
      [DllImport("user32.dll")]
      protected static extern IntPtr GetDlgItem(IntPtr hwnd, int id);
      [DllImport("User32")]
      protected static extern int SetDlgItemText(IntPtr hDlg, int nIDDlgItem, string lpString);
      [DllImport("user32.dll")]
      protected static extern int GetDlgItemText(IntPtr hDlg, int nIDDlgItem, [Out] StringBuilder lpString, int nMaxCount);
      [DllImport("user32.dll", EntryPoint = "MessageBox")]
      protected static extern int _MessageBox(IntPtr hwnd, string text, string caption,
        int options);
      [DllImport("user32.dll")]
      protected static extern IntPtr GetActiveWindow();
      [DllImport("user32.dll")]
      protected static extern void DestroyWindow(IntPtr hwnd);
      #endregion
      private static System.IntPtr m_hhook;
      public delegate int HookProc(int code, IntPtr wParam, IntPtr lParam);
      protected static HookProc m_filterFunc;
      static HookMsg()
      ...{
        if (m_filterFunc == null)
          m_filterFunc = new HookProc(CoreHookProc);
      }
      public static void Install()
      ...{
        m_hhook = SetWindowsHookEx(WH_CBT, m_filterFunc, IntPtr.Zero, AppDomain.GetCurrentThreadId());
      }
      public static void Uninstall()
      ...{
        UnhookWindowsHookEx(m_hhook);
      }
      //CallBack
      protected static int CoreHookProc(int code, IntPtr wParam, IntPtr lParam)
      ...{
        if (code == 5)
        ...{
          StringBuilder sb = new StringBuilder();
          sb.Capacity = 255;
          //Title
          GetWindowText(wParam, sb, 255);
          string strTitle = "jinjazz看到了:" + sb.ToString();
          //Text
          GetDlgItemText(wParam, IDC_Text, sb, 255);
          string strText = "jinjazz看到了:" + sb.ToString();
          //獲取按鈕
          int style = 0;
          for (int i = 0; i <= 5; i++)
          ...{
            if (GetDlgItem(wParam, i) != IntPtr.Zero)
              style += i;
          }
          SetDlgItemText(wParam, IDC_Text, strText);
          SetWindowText(wParam, strTitle);
          SetWindowText(GetDlgItem(wParam, (int)DialogResult.No), "jinjazzOK");
          SetWindowText(GetDlgItem(wParam, (int)DialogResult.Cancel), "jinjazzCancel");
          SetWindowText(GetDlgItem(wParam, (int)DialogResult.Abort), "jinjazzAbort");
          SetWindowText(GetDlgItem(wParam, (int)DialogResult.Ignore), "jinjazzIgnore");
          SetWindowText(GetDlgItem(wParam, (int)DialogResult.None), "jinjazzNone");
          SetWindowText(GetDlgItem(wParam, (int)DialogResult.OK), "jinjazzOK");
          SetWindowText(GetDlgItem(wParam, (int)DialogResult.Retry), "jinjazzRetry");
          SetWindowText(GetDlgItem(wParam, (int)DialogResult.Yes), "jinjazzYes");
        }
        //  return CallNextHookEx(this.m_hhook, code, wParam, lParam);
        return 0;
      }
    }
    public Form1()
    ...{
      InitializeComponent();
    }
    private void Form1_Load(object sender, EventArgs e)
    ...{
    }
    private void button1_Click(object sender, EventArgs e)
    ...{
      MessageBox.Show(this,"確定按鈕                  ","標題");
    }
    private void button2_Click(object sender, EventArgs e)
    ...{
      MessageBox.Show(this, "確定按鈕                  ", "標題", MessageBoxButtons.YesNoCancel);
    }
    private void button3_Click(object sender, EventArgs e)
    ...{
      MessageBox.Show(this, "確定按鈕                  ", "標題", MessageBoxButtons.AbortRetryIgnore);
    }
    private void checkBox1_CheckedChanged(object sender, EventArgs e)
    ...{
      if (this.checkBox1.Checked)
      ...{
        HookMsg.Install();
      }
      else
      ...{
        HookMsg.Uninstall();
      }
    }
  }
}
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved