把桌面上弹出的消息框中的文字取出来 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(); } } } }