键盘与鼠标事件过程
- 格式:pptx
- 大小:185.00 KB
- 文档页数:37


C#winform⾃动触发⿏标、键盘事件
要在C#程序中触发⿏标、键盘事件必须要调⽤windows函数。
⼀、⿏标事件的触发
1.引⽤windows函数mouse_event
///
/// ⿏标事件
///
/// 事件类型
/// x坐标值(0~65535)
/// y坐标值(0~65535)
/// 滚动值(120⼀个单位)
/// 不⽀持
[DllImport("user32.dll")]
static extern void mouse_event(MouseEventFlag flags, int dx, int dy, uint data, UIntPtr extraInfo);
MouseEventFlag表⽰⿏标事件的类型,可取多个枚举值组合。注意dx,dy参数,必须是绝对坐标(0,0)~(65535,65535)中的⼀点。
///
/// ⿏标操作标志位集合
///
[Flags]
enum MouseEventFlag : uint
{
///
/// ⿏标移动事件
///
Move = 0x0001,
///
/// ⿏标左键按下事件
///
LeftDown = 0x0002,
LeftUp = 0x0004,
RightDown = 0x0008,
RightUp = 0x0010,
MiddleDown = 0x0020,
MiddleUp = 0x0040,
XDown = 0x0080,
XUp = 0x0100,
Wheel = 0x0800,
VirtualDesk = 0x4000,
///
/// 设置⿏标坐标为绝对位置(dx,dy),否则为距离最后⼀次事件触发的相对位置
///
Absolute = 0x8000
}
2.调⽤mouse_event函数,触发⿏标事件
///
/// 触发⿏标事件
///
///
///
private static void DoMouseClick(int x, int y)
键盘与鼠标事件过程
(总分44,考试时间90分钟)
一、选择题
1. 以下叙述中错误的是______ 。
A. 双击鼠标可以触发DblClick 事件
B. 事件的名称可以由编程人员确定
C. 移动鼠标时,会触发MoussMove 事件
D. 控件的名称可以由编程人员设定
2. 下列与拖放操作无关的是______ 。
A. KeyPress 事件 B. Drag 方法
C. DragOver 事件 D. DragDrop 事件
3. 编写如下事件过程; Private Sub Form_ MouseDown (Button As Integer, Shift As Integer,
X As Single, Y As Single) If Shift = 6 And Button = 1 Then Print "BBBB" End If
End Sub程序运行后,为了在窗体上输出 “BBBB”,应执行的操作为______ 。
A. 同时按下Shift 键和鼠标左键
B. 同时Ctrl、Alt 键和鼠标左键
C. 同时按下Shift 键和鼠标右键
D. 同时按下Ctrl、Alt 键和鼠标左键
4. 以下说法中正确的是______ 。
A. 当MousePointer 属性为1时,将把鼠标的形状设置为Windows 的默认值
B. MouseIcon属性的设置要受到KeyDown事件的影响
C. 自定义鼠标光标通过MouseIcon属性设置
D. 为了定义用户自己的鼠标光标,必须把MousePointer 属性设置为99
5. 拖放要触发两个事件,这两个事件是______ 。
A. Dragover 事件和DragDrop 事件
B. Drag 事件和DragDrop 事件
C. MouseDown 事件和KeyDown 事件
D. MouseUp 事件和KeyUp 事件
#include
#include "SysHook.h"
#include
HINSTANCEhInst = NULL;
JavaVM * jvm = NULL;
jobject hookObj_kb = NULL;
jobject hookObj_ms = NULL;
jobject g_kl = NULL;
jmethodID processKeyID_kb = NULL;
jmethodID processKeyID_ms = NULL;
DWORDhookThreadId = 0;
LONGg_mouseLocX = -1;// x-location of mouse position
LONGg_mouseLocY = -1;// y-location of mouse position
extern"C"
BOOLAPIENTRY DllMain(HINSTANCE_hInst,DWORDreason,LPVOIDreserved)
{
switch(reason)
{
caseDLL_PROCESS_ATTACH:
printf("C++: DllMain - DLL_PROCESS_ATTACH.\n");
hInst = _hInst;
break;
default:
break;
}
returnTRUE;
}
LRESULTCALLBACK MouseTracker(intnCode,WPARAMwParam,LPARAMlParam)
{
JNIEnv * env;
KBDLLHOOKSTRUCT * p = (KBDLLHOOKSTRUCT *)lParam;
if(jvm->AttachCurrentThread((void**)&env, NULL) >= 0)
{
if(nCode==HC_ACTION)
{
MOUSEHOOKSTRUCT* pStruct = (MOUSEHOOKSTRUCT*)lParam;
键盘事件计算机取证过程模型实现论文
摘 要:通过阅读文献,笔者选择法律执行过程模型保证了证据收集过程的严格性、规范性。在该取证模型中利用简化修改过的法律执行过程模型添加了动态及静态取证技术,结合传统证据的过程,完整地实现了获取键盘事件的过程流程图,并已将本流程图转化为实践。
计算机取证[1-3]就是对计算机证据的提取、存储、鉴定和归档的过程,它是为了帮助因计算机、犯罪的受害者采集作为起诉犯罪嫌疑人的证据。
计算机、网络犯罪手法的复杂化给计算机取证带来很大的挑战。连接到互联网的用户一次不经意的鼠标点击就有可能为黑客入侵用户计算机埋下伏笔。当黑客用反取证[4]技术把自己在计算机里留下的痕迹擦除后取证工作难上加难。
1 基于键盘事件的取证过程模型
近年来,键盘记录器盗取用户账户密码事件频有发生,键盘事件取证刻不容缓。
1.1 理论依据
模型指的是所研究的系统、过程、事物或概念的一种表达形式。这里的取证模型主要是指可以概述整个事件的全过程,以便于人们理解的一种表达形式。
法律模型主要包括了:准备阶段、收集阶段(保护与评估现场、对现场记录归档、证据提取)、检验、分析、报告。法律执行过程模型特别强调了法律在电子证据收集过程中的严格规范,进而保证了电子证据的合法性。
计算机取证根据取证时刻潜在证据的特性被分为静态取证和动态取证。当前的取证过程多数基于静态取证,且不论提取证据比较费时,取证人员很难获取到关于案发现场的充分的、真实的、原始的证据。而动态取证恰恰是与静态取证时机相反,它是一种在攻击发生前就已经做好取证准备,当攻击发生时就开始收集证据的过程。
基于键盘事件的取证过程模型选择了较有效法律执行过程模型,结合动态和静态取证技术与常规物证的收集技术,即保证了获取的电子证据的合法性又克服了基于传统的事后取证模型中取证技术的不足。同时使用监督链确保整个取证过程的规范性、合理性、全面性、合法性,为打击计算机犯罪提供准确、有效、合法的电子证据[1-8]。