捕捉消息框中的文字

把桌面上弹出的消息框中的文字取出来

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

            
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();
            }

        }

    }

}
 
原文地址:https://www.cnblogs.com/cl1024cl/p/6204990.html