zoukankan
html css js c++ java
捕捉消息框中的文字
把桌面上弹出的消息框中的文字取出来
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();
}
}
}
}
查看全文
相关阅读:
【BIRT】报表数据导出为PDF显示不全
【BIRT】报表显示不全
【BIRT】02_开发一张简单的报表
【BIRT】01_在win10上安装BIRT
【漫画解读银行业务】
【FinancialKnowledge】拨备
虚拟机“锁定文件失败”、“打不开磁盘”或者“它所依赖的某个快照磁盘”的解决办法
【DB2】DbVisualizer编译存储过程
【DB2】If 'db2' is not a typo you can run the following command to lookup the package that contains the binary: command-not-found db2 bash: db2: command not found
【Linux】配置JAVA_HOME环境变量
原文地址:https://www.cnblogs.com/cl1024cl/p/6204990.html
最新文章
Python 的mock模拟测试介绍
Swagger2 (3) 集成easymock 生成mock 测试数据
RPC接口mock测试
rpc接口mock平台
质量平台建设之Mock平台
基于Wiremock创建Mock Service平台
mock平台架构及实现
Mockito图书馆
Mockito 库、powermock扩展
Mockito 如何 mock 返回值为 void 的方法
热门文章
729
扑克牌型
UVa11205 The Broken Pedometer
Uva 10167
7.5.3 八数码问题
康托展开
7-3 倒水问题
排列生成算法注意事项
7.3 子集生成
7.2 枚举排列
Copyright © 2011-2022 走看看