Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
刘韬
/
HZH_Controls
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit fed1749f
由
HZH
编写于
2019-09-23 09:31:00 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
滚动条
1 个父辈
26249d36
全部展开
隐藏空白字符变更
内嵌
并排
正在显示
15 个修改的文件
包含
324 行增加
和
97 行删除
HZH_Controls/HZH_Controls/Controls/KeyBord/UCKeyBorderAll.Designer.cs
HZH_Controls/HZH_Controls/Controls/ScrollBar/ScrollbarComponent.cs
HZH_Controls/HZH_Controls/Controls/ScrollBar/ScrollbarControlDesigner.cs
HZH_Controls/HZH_Controls/Controls/ScrollBar/UCHScrollbar.cs
HZH_Controls/HZH_Controls/Controls/ScrollBar/UCVScrollbar.cs
HZH_Controls/HZH_Controls/HZH_Controls.csproj
HZH_Controls/HZH_Controls/HZH_Controls.nuspec
HZH_Controls/HZH_Controls/Helpers/ControlHelper.cs
HZH_Controls/HZH_Controls/Helpers/MouseHook.cs
HZH_Controls/HZH_Controls/Helpers/WindowsHook.cs
HZH_Controls/Test/Program.cs
HZH_Controls/Test/UC/UCTestBtns.Designer.cs
HZH_Controls/Test/UC/UCTestBtns.resx
HZH_Controls/Test/UC/UCTestScrollbar.Designer.cs
HZH_Controls/Test/UC/UCTestScrollbar.resx
HZH_Controls/HZH_Controls/Controls/KeyBord/UCKeyBorderAll.Designer.cs
查看文件 @
fed1749
...
...
@@ -1383,7 +1383,7 @@ namespace HZH_Controls.Controls
this
.
label10
.
Size
=
new
System
.
Drawing
.
Size
(
65
,
66
);
this
.
label10
.
TabIndex
=
2
;
this
.
label10
.
Tag
=
"@"
;
this
.
label10
.
Text
=
"
r
"
;
this
.
label10
.
Text
=
"
t
"
;
this
.
label10
.
TextAlign
=
System
.
Drawing
.
ContentAlignment
.
MiddleCenter
;
this
.
label10
.
MouseDown
+=
new
System
.
Windows
.
Forms
.
MouseEventHandler
(
this
.
KeyDown_MouseDown
);
//
...
...
@@ -1432,7 +1432,7 @@ namespace HZH_Controls.Controls
this
.
label9
.
Size
=
new
System
.
Drawing
.
Size
(
65
,
66
);
this
.
label9
.
TabIndex
=
2
;
this
.
label9
.
Tag
=
"9"
;
this
.
label9
.
Text
=
"
t
"
;
this
.
label9
.
Text
=
"
r
"
;
this
.
label9
.
TextAlign
=
System
.
Drawing
.
ContentAlignment
.
MiddleCenter
;
this
.
label9
.
MouseDown
+=
new
System
.
Windows
.
Forms
.
MouseEventHandler
(
this
.
KeyDown_MouseDown
);
//
...
...
HZH_Controls/HZH_Controls/Controls/ScrollBar/ScrollbarComponent.cs
查看文件 @
fed1749
此文件的差异被折叠,
点击展开。
HZH_Controls/HZH_Controls/Controls/ScrollBar/ScrollbarControlDesigner.cs
0 → 100644
查看文件 @
fed1749
using
System
;
using
System.Collections.Generic
;
using
System.ComponentModel
;
using
System.Linq
;
using
System.Text
;
using
System.Windows.Forms.Design
;
namespace
HZH_Controls.Controls
{
/// <summary>
/// Class ScrollbarControlDesigner.
/// Implements the <see cref="System.Windows.Forms.Design.ControlDesigner" />
/// </summary>
/// <seealso cref="System.Windows.Forms.Design.ControlDesigner" />
internal
class
ScrollbarControlDesigner
:
System
.
Windows
.
Forms
.
Design
.
ControlDesigner
{
/// <summary>
/// 获取指示组件的移动功能的选择规则。
/// </summary>
/// <value>The selection rules.</value>
public
override
SelectionRules
SelectionRules
{
get
{
SelectionRules
selectionRules
=
base
.
SelectionRules
;
PropertyDescriptor
propDescriptor
=
TypeDescriptor
.
GetProperties
(
this
.
Component
)[
"AutoSize"
];
if
(
propDescriptor
!=
null
)
{
bool
autoSize
=
(
bool
)
propDescriptor
.
GetValue
(
this
.
Component
);
if
(
autoSize
)
{
selectionRules
=
SelectionRules
.
Visible
|
SelectionRules
.
Moveable
|
SelectionRules
.
BottomSizeable
|
SelectionRules
.
TopSizeable
;
}
else
{
selectionRules
=
SelectionRules
.
Visible
|
SelectionRules
.
AllSizeable
|
SelectionRules
.
Moveable
;
}
}
return
selectionRules
;
}
}
}
}
HZH_Controls/HZH_Controls/Controls/ScrollBar/UCHScrollbar.cs
0 → 100644
查看文件 @
fed1749
此文件的差异被折叠,
点击展开。
HZH_Controls/HZH_Controls/Controls/ScrollBar/UCVScrollbar.cs
查看文件 @
fed1749
此文件的差异被折叠,
点击展开。
HZH_Controls/HZH_Controls/HZH_Controls.csproj
查看文件 @
fed1749
...
...
@@ -61,6 +61,10 @@
<Compile Include="Controls\ScrollBar\ScrollbarComponent.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="Controls\ScrollBar\ScrollbarControlDesigner.cs" />
<Compile Include="Controls\ScrollBar\UCHScrollbar.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="Helpers\GraphDirection.cs" />
<Compile Include="Controls\Charts\UCBarChart.cs">
<SubType>UserControl</SubType>
...
...
@@ -302,6 +306,7 @@
<Compile Include="Controls\TrackBar\UCTrackBar.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="Helpers\WindowsHook.cs" />
<Compile Include="UIEditor\FrmSelectImage.cs">
<SubType>Form</SubType>
</Compile>
...
...
HZH_Controls/HZH_Controls/HZH_Controls.nuspec
查看文件 @
fed1749
...
...
@@ -2,7 +2,7 @@
<package
>
<metadata>
<id>
$id$
</id>
<version>
1.0.
4
</version>
<version>
1.0.
5
</version>
<title>
HZHControls
</title>
<authors>
HuangZhengHui
</authors>
<owners>
HuangZhengHui
</owners>
...
...
HZH_Controls/HZH_Controls/Helpers/ControlHelper.cs
查看文件 @
fed1749
...
...
@@ -1312,5 +1312,62 @@ namespace HZH_Controls
return
returnFlag
;
}
#
region
滚动条
English
:
scroll
bar
static
uint
SB_HORZ
=
0x0
;
static
uint
SB_VERT
=
0x1
;
static
uint
SB_CTL
=
0x2
;
static
uint
SB_BOTH
=
0x3
;
[
DllImport
(
"user32.dll"
,
SetLastError
=
true
,
EntryPoint
=
"GetScrollInfo"
)]
private
static
extern
int
GetScrollInfo
(
IntPtr
hWnd
,
uint
idObject
,
ref
SCROLLINFO
psbi
);
/// <summary>
///获取水平滚动条信息
/// </summary>
/// <param name="hWnd">The h WND.</param>
/// <returns>Scrollbarinfo.</returns>
public
static
SCROLLINFO
GetHScrollBarInfo
(
IntPtr
hWnd
)
{
SCROLLINFO
info
=
new
SCROLLINFO
();
info
.
cbSize
=
(
uint
)
Marshal
.
SizeOf
(
info
);
info
.
fMask
=
(
int
)
ScrollInfoMask
.
SIF_ALL
;
int
intRef
=
GetScrollInfo
(
hWnd
,
SB_HORZ
,
ref
info
);
return
info
;
}
/// <summary>
/// 获取垂直滚动条信息
/// </summary>
/// <param name="hWnd">The h WND.</param>
/// <returns>Scrollbarinfo.</returns>
public
static
SCROLLINFO
GetVScrollBarInfo
(
IntPtr
hWnd
)
{
SCROLLINFO
info
=
new
SCROLLINFO
();
info
.
cbSize
=
(
uint
)
Marshal
.
SizeOf
(
info
);
info
.
fMask
=
(
int
)
ScrollInfoMask
.
SIF_ALL
;
int
intRef
=
GetScrollInfo
(
hWnd
,
SB_VERT
,
ref
info
);
return
info
;
}
public
struct
SCROLLINFO
{
public
uint
cbSize
;
public
uint
fMask
;
public
int
nMin
;
public
int
nMax
;
public
uint
nPage
;
public
int
nPos
;
public
int
nTrackPos
;
}
public
enum
ScrollInfoMask
:
uint
{
SIF_RANGE
=
0x1
,
SIF_PAGE
=
0x2
,
SIF_POS
=
0x4
,
SIF_DISABLENOSCROLL
=
0x8
,
SIF_TRACKPOS
=
0x10
,
SIF_ALL
=
(
SIF_RANGE
|
SIF_PAGE
|
SIF_POS
|
SIF_TRACKPOS
),
}
#
endregion
}
}
HZH_Controls/HZH_Controls/Helpers/MouseHook.cs
查看文件 @
fed1749
...
...
@@ -107,44 +107,7 @@ namespace HZH_Controls
/// </summary>
public
int
dwExtraInfo
;
}
/// <summary>
/// The wh mouse ll
/// </summary>
public
const
int
WH_MOUSE_LL
=
14
;
// mouse hook constant
// 装置钩子的函数
/// <summary>
/// Sets the windows hook ex.
/// </summary>
/// <param name="idHook">The identifier hook.</param>
/// <param name="lpfn">The LPFN.</param>
/// <param name="hInstance">The h instance.</param>
/// <param name="threadId">The thread identifier.</param>
/// <returns>System.Int32.</returns>
[
DllImport
(
"user32.dll"
,
CharSet
=
CharSet
.
Auto
,
CallingConvention
=
CallingConvention
.
StdCall
)]
public
static
extern
int
SetWindowsHookEx
(
int
idHook
,
HookProc
lpfn
,
IntPtr
hInstance
,
int
threadId
);
// 卸下钩子的函数
/// <summary>
/// Unhooks the windows hook ex.
/// </summary>
/// <param name="idHook">The identifier hook.</param>
/// <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns>
[
DllImport
(
"user32.dll"
,
CharSet
=
CharSet
.
Auto
,
CallingConvention
=
CallingConvention
.
StdCall
)]
public
static
extern
bool
UnhookWindowsHookEx
(
int
idHook
);
// 下一个钩挂的函数
/// <summary>
/// Calls the next hook ex.
/// </summary>
/// <param name="idHook">The identifier hook.</param>
/// <param name="nCode">The n code.</param>
/// <param name="wParam">The w parameter.</param>
/// <param name="lParam">The l parameter.</param>
/// <returns>System.Int32.</returns>
[
DllImport
(
"user32.dll"
,
CharSet
=
CharSet
.
Auto
,
CallingConvention
=
CallingConvention
.
StdCall
)]
public
static
extern
int
CallNextHookEx
(
int
idHook
,
int
nCode
,
Int32
wParam
,
IntPtr
lParam
);
// 全局的鼠标事件
/// <summary>
...
...
@@ -152,21 +115,7 @@ namespace HZH_Controls
/// </summary>
public
static
event
MouseEventHandler
OnMouseActivity
;
// 钩子回调函数
/// <summary>
/// Delegate HookProc
/// </summary>
/// <param name="nCode">The n code.</param>
/// <param name="wParam">The w parameter.</param>
/// <param name="lParam">The l parameter.</param>
/// <returns>System.Int32.</returns>
public
delegate
int
HookProc
(
int
nCode
,
Int32
wParam
,
IntPtr
lParam
);
// 声明鼠标钩子事件类型
/// <summary>
/// The mouse hook procedure
/// </summary>
private
static
HookProc
_mouseHookProcedure
;
/// <summary>
/// The h mouse hook
/// </summary>
...
...
@@ -184,54 +133,25 @@ namespace HZH_Controls
Stop
();
}
// 生成一个HookProc的实例.
_mouseHookProcedure
=
new
HookProc
(
MouseHookProc
);
_hMouseHook
=
SetWindowsHookEx
(
WH_MOUSE_LL
,
_mouseHookProcedure
,
Marshal
.
GetHINSTANCE
(
System
.
Reflection
.
Assembly
.
GetEntryAssembly
().
GetModules
()[
0
]),
0
);
WindowsHook
.
HookMsgChanged
+=
WindowsHook_HookMsgChanged
;
_hMouseHook
=
WindowsHook
.
StartHook
(
HookType
.
WH_MOUSE_LL
);
//假设装置失败停止钩子
if
(
_hMouseHook
==
0
)
{
Stop
();
throw
new
Exception
(
"SetWindowsHookEx failed."
);
}
}
/// <summary>
/// 停止全局钩子
/// </summary>
/// <exception cref="System.Exception">UnhookWindowsHookEx failed.</exception>
/// <exception cref="Exception">UnhookWindowsHookEx failed.</exception>
public
static
void
Stop
()
{
bool
retMouse
=
true
;
if
(
_hMouseHook
!=
0
)
{
retMouse
=
UnhookWindowsHookEx
(
_hMouseHook
);
_hMouseHook
=
0
;
}
// 假设卸下钩子失败
if
(!(
retMouse
))
throw
new
Exception
(
"UnhookWindowsHookEx failed."
);
}
/// <summary>
/// 鼠标钩子回调函数
/// </summary>
/// <param name="nCode">The n code.</param>
/// <param name="wParam">The w parameter.</param>
/// <param name="lParam">The l parameter.</param>
/// <returns>System.Int32.</returns>
private
static
int
MouseHookProc
(
int
nCode
,
Int32
wParam
,
IntPtr
lParam
)
static
void
WindowsHook_HookMsgChanged
(
string
strHookName
,
int
nCode
,
IntPtr
msg
,
IntPtr
lParam
)
{
// 假设正常执行而且用户要监听鼠标的消息
if
(
(
nCode
>=
0
)
&&
(
OnMouseActivity
!=
null
)
)
if
(
nCode
>=
0
&&
OnMouseActivity
!=
null
)
{
MouseButtons
button
=
MouseButtons
.
None
;
int
clickCount
=
0
;
switch
(
wParam
)
switch
(
(
int
)
msg
)
{
case
WM_LBUTTONDOWN
:
button
=
MouseButtons
.
Left
;
...
...
@@ -266,10 +186,28 @@ namespace HZH_Controls
OnMouseActivity
(
null
,
e
);
}
}
}
// 启动下一次钩子
int
inext
=
CallNextHookEx
(
_hMouseHook
,
nCode
,
wParam
,
lParam
);
return
inext
;
/// <summary>
/// 停止全局钩子
/// </summary>
/// <exception cref="System.Exception">UnhookWindowsHookEx failed.</exception>
/// <exception cref="Exception">UnhookWindowsHookEx failed.</exception>
public
static
void
Stop
()
{
bool
retMouse
=
true
;
if
(
_hMouseHook
!=
0
)
{
retMouse
=
WindowsHook
.
StopHook
(
_hMouseHook
);
_hMouseHook
=
0
;
}
// 假设卸下钩子失败
if
(!(
retMouse
))
throw
new
Exception
(
"UnhookWindowsHookEx failed."
);
}
}
}
HZH_Controls/HZH_Controls/Helpers/WindowsHook.cs
0 → 100644
查看文件 @
fed1749
using
System
;
using
System.Collections.Generic
;
using
System.Linq
;
using
System.Runtime.InteropServices
;
using
System.Text
;
namespace
HZH_Controls
{
/// <summary>
/// 钩子类型
/// </summary>
public
enum
HookType
:
int
{
/// <summary>
/// 安装一个钩子过程,该过程监视由于对话框,消息框,菜单或滚动条中的输入事件而生成的消息。
/// 有关更多信息,请参阅MessageProc(https://docs.microsoft.com/previous-versions/windows/desktop/legacy/ms644987(v=vs.85))挂接过程。
/// </summary>
WH_MSGFILTER
=
-
1
,
/// <summary>
/// 安装一个钩子过程,记录发布到系统消息队列的输入消息。 此挂钩对于录制宏非常有用。
/// 有关更多信息,请参阅JournalRecordProc(https://docs.microsoft.com/previous-versions/windows/desktop/legacy/ms644983(v=vs.85))挂钩过程。
/// </summary>
WH_JOURNALRECORD
=
0
,
/// <summary>
/// 安装一个挂钩过程,该过程发布先前由WH_JOURNALRECORD挂钩过程记录的消息。
/// 有关更多信息,请参阅JournalPlaybackProc(https://docs.microsoft.com/previous-versions/windows/desktop/legacy/ms644982(v=vs.85))挂钩过程。
/// </summary>
WH_JOURNALPLAYBACK
=
1
,
/// <summary>
/// 安装一个监视击键消息的钩子程序。
/// 有关更多信息,请参阅KeyboardProc(https://docs.microsoft.com/previous-versions/windows/desktop/legacy/ms644984(v=vs.85))挂钩过程。
/// </summary>
WH_KEYBOARD
=
2
,
/// <summary>
/// 安装一个钩子过程来监视发布到消息队列的消息。
/// 有关更多信息,请参阅GetMsgProc(https://docs.microsoft.com/previous-versions/windows/desktop/legacy/ms644981(v=vs.85))挂接过程。
/// </summary>
WH_GETMESSAGE
=
3
,
/// <summary>
/// 安装一个钩子过程,在系统将消息发送到目标窗口过程之前监视消息。
/// 有关更多信息,请参阅CallWndProc(https://docs.microsoft.com/previous-versions/windows/desktop/legacy/ms644975(v=vs.85))挂接过程。
/// </summary>
WH_CALLWNDPROC
=
4
,
/// <summary>
/// 安装一个钩子程序,接收对CBT应用程序有用的通知。
/// 有关更多信息,请参阅CBTProc(https://docs.microsoft.com/previous-versions/windows/desktop/legacy/ms644977(v=vs.85))挂钩过程。
/// </summary>
WH_CBT
=
5
,
/// <summary>
/// 安装一个钩子过程,该过程监视由于对话框,消息框,菜单或滚动条中的输入事件而生成的消息。
/// 钩子过程监视与调用线程在同一桌面中的所有应用程序的这些消息。
/// 有关更多信息,请参阅SysMsgProc(https://docs.microsoft.com/previous-versions/windows/desktop/legacy/ms644992(v=vs.85))挂接过程。
/// </summary>
WH_SYSMSGFILTER
=
6
,
/// <summary>
/// 安装监视鼠标消息的钩子过程。
/// 有关更多信息,请参阅MouseProc(https://docs.microsoft.com/previous-versions/windows/desktop/legacy/ms644988(v=vs.85))挂钩过程。
/// </summary>
WH_MOUSE
=
7
,
/// <summary>
/// 安装一个用于调试其他钩子过程的钩子过程。
/// 有关更多信息,请参阅DebugProc(https://docs.microsoft.com/previous-versions/windows/desktop/legacy/ms644978(v=vs.85))挂接过程。
/// </summary>
WH_DEBUG
=
9
,
/// <summary>
/// 安装一个钩子过程,接收对shell应用程序有用的通知。
/// 有关更多信息,请参阅ShellProc(https://docs.microsoft.com/previous-versions/windows/desktop/legacy/ms644991(v=vs.85))挂钩过程。
/// </summary>
WH_SHELL
=
10
,
/// <summary>
/// 安装一个钩子过程,当应用程序的前台线程即将变为空闲时将调用该过程。
/// 此挂钩对于在空闲时执行低优先级任务非常有用。
/// 有关更多信息,请参阅ForegroundIdleProc(https://docs.microsoft.com/previous-versions/windows/desktop/legacy/ms644980(v=vs.85))挂钩过程。
/// </summary>
WH_FOREGROUNDIDLE
=
11
,
/// <summary>
/// 安装一个钩子过程,该过程在目标窗口过程处理完消息后对其进行监视。
/// 有关更多信息,请参阅CallWndRetProc(https://docs.microsoft.com/windows/desktop/api/winuser/nc-winuser-hookproc)挂接过程。
/// </summary>
WH_CALLWNDPROCRET
=
12
,
/// <summary>
/// 安装一个监视低级键盘输入事件的钩子过程。 有关更多信息,
/// 请参阅LowLevelKeyboardProc(https://docs.microsoft.com/previous-versions/windows/desktop/legacy/ms644985(v=vs.85))挂接过程。
/// </summary>
WH_KEYBOARD_LL
=
13
,
/// <summary>
/// 安装一个监视低级鼠标输入事件的钩子过程。 有关更多信息,
/// 请参阅LowLevelMouseProc(https://docs.microsoft.com/previous-versions/windows/desktop/legacy/ms644986(v=vs.85))挂接过程。
/// </summary>
WH_MOUSE_LL
=
14
,
}
public
class
WindowsHook
{
public
delegate
int
HookProc
(
int
nCode
,
IntPtr
wParam
,
IntPtr
lParam
);
// 装置钩子的函数
[
DllImport
(
"user32.dll"
,
CharSet
=
CharSet
.
Auto
,
CallingConvention
=
CallingConvention
.
StdCall
)]
public
static
extern
int
SetWindowsHookEx
(
int
idHook
,
HookProc
lpfn
,
int
hInstance
,
int
threadId
);
// 卸下钩子的函数
[
DllImport
(
"user32.dll"
,
CharSet
=
CharSet
.
Auto
,
CallingConvention
=
CallingConvention
.
StdCall
)]
public
static
extern
bool
UnhookWindowsHookEx
(
int
idHook
);
// 下一个钩挂的函数
[
DllImport
(
"user32.dll"
,
CharSet
=
CharSet
.
Auto
,
CallingConvention
=
CallingConvention
.
StdCall
)]
public
static
extern
int
CallNextHookEx
(
int
idHook
,
int
nCode
,
IntPtr
wParam
,
IntPtr
lParam
);
[
DllImport
(
"User32.dll"
,
CharSet
=
CharSet
.
Auto
)]
public
static
extern
int
GetClassName
(
IntPtr
hWnd
,
StringBuilder
lpClassName
,
int
nMaxCount
);
/// <summary>
/// Delegate HookMsgHandler
/// </summary>
/// <param name="strHookName">钩子名称</param>
/// <param name="msg">消息值</param>
public
delegate
void
HookMsgHandler
(
string
strHookName
,
int
nCode
,
IntPtr
msg
,
IntPtr
lParam
);
/// <summary>
/// 钩子消息事件
/// </summary>
public
static
event
HookMsgHandler
HookMsgChanged
;
/// <summary>
/// 启动一个钩子
/// </summary>
/// <param name="hookType">钩子类型</param>
/// <param name="wParam">模块句柄,为空则为当前模块</param>
/// <param name="pid">进程句柄,默认为0则表示当前进程</param>
/// <param name="strHookName">钩子名称</param>
/// <returns>钩子句柄(消耗钩子时需要使用)</returns>
/// <exception cref="Exception">SetWindowsHookEx failed.</exception>
public
static
int
StartHook
(
HookType
hookType
,
int
wParam
=
0
,
int
pid
=
0
,
string
strHookName
=
""
)
{
int
_hHook
=
0
;
// 生成一个HookProc的实例.
var
_hookProcedure
=
new
HookProc
((
nCode
,
msg
,
lParam
)
=>
{
if
(
HookMsgChanged
!=
null
)
{
try
{
HookMsgChanged
(
strHookName
,
nCode
,
msg
,
lParam
);
}
catch
{
}
}
int
inext
=
CallNextHookEx
(
_hHook
,
nCode
,
msg
,
lParam
);
return
inext
;
});
if
(
pid
==
0
)
pid
=
AppDomain
.
GetCurrentThreadId
();
_hHook
=
SetWindowsHookEx
((
int
)
hookType
,
_hookProcedure
,
wParam
,
pid
);
//假设装置失败停止钩子
if
(
_hHook
==
0
)
{
StopHook
(
_hHook
);
}
return
_hHook
;
}
/// <summary>
/// 停止钩子
/// </summary>
/// <param name="_hHook">StartHook函数返回的钩子句柄</param>
/// <returns><c>true</c> if 停止成功, <c>false</c> 否则.</returns>
public
static
bool
StopHook
(
int
_hHook
)
{
bool
ret
=
true
;
if
(
_hHook
!=
0
)
{
ret
=
UnhookWindowsHookEx
(
_hHook
);
}
// 假设卸下钩子失败
if
(!
ret
)
return
false
;
return
true
;
}
}
}
HZH_Controls/Test/Program.cs
查看文件 @
fed1749
...
...
@@ -7,6 +7,7 @@ namespace Test
{
static
class
Program
{
static
int
hookID
;
/// <summary>
/// 应用程序的主入口点。
/// </summary>
...
...
@@ -16,10 +17,12 @@ namespace Test
Application
.
EnableVisualStyles
();
Application
.
SetCompatibleTextRenderingDefault
(
false
);
Application
.
ThreadException
+=
Application_ThreadException
;
AppDomain
.
CurrentDomain
.
UnhandledException
+=
CurrentDomain_UnhandledException
;
AppDomain
.
CurrentDomain
.
UnhandledException
+=
CurrentDomain_UnhandledException
;
Application
.
Run
(
new
FrmMain
());
}
static
void
Application_ThreadException
(
object
sender
,
System
.
Threading
.
ThreadExceptionEventArgs
e
)
{
MessageBox
.
Show
(
e
.
Exception
.
Message
);
...
...
@@ -27,8 +30,8 @@ namespace Test
static
void
CurrentDomain_UnhandledException
(
object
sender
,
UnhandledExceptionEventArgs
e
)
{
MessageBox
.
Show
(((
Exception
)
e
.
ExceptionObject
).
Message
);
MessageBox
.
Show
(((
Exception
)
e
.
ExceptionObject
).
Message
);
}
}
}
HZH_Controls/Test/UC/UCTestBtns.Designer.cs
查看文件 @
fed1749
...
...
@@ -2016,7 +2016,7 @@
this
.
Controls
.
Add
(
this
.
groupBox2
);
this
.
Controls
.
Add
(
this
.
groupBox1
);
this
.
Name
=
"UCTestBtns"
;
this
.
Size
=
new
System
.
Drawing
.
Size
(
63
1
,
793
);
this
.
Size
=
new
System
.
Drawing
.
Size
(
63
5
,
793
);
this
.
Load
+=
new
System
.
EventHandler
(
this
.
UCTestBtns_Load
);
this
.
ucControlBase1
.
ResumeLayout
(
false
);
this
.
groupBox1
.
ResumeLayout
(
false
);
...
...
HZH_Controls/Test/UC/UCTestBtns.resx
查看文件 @
fed1749
此文件的差异被折叠,
点击展开。
HZH_Controls/Test/UC/UCTestScrollbar.Designer.cs
查看文件 @
fed1749
此文件的差异被折叠,
点击展开。
HZH_Controls/Test/UC/UCTestScrollbar.resx
查看文件 @
fed1749
...
...
@@ -120,4 +120,7 @@
<metadata name="scrollbarComponent1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<metadata name="scrollbarComponent1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
</root>
\ No newline at end of file
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论