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