ImageVerifierCode 换一换
格式:DOC , 页数:28 ,大小:707KB ,
资源ID:4511998      下载积分:5 金币
验证码下载
登录下载
邮箱/手机:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/4511998.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  
声明  |  会员权益     获赠5币     写作写作

1、填表:    下载求助     留言反馈    退款申请
2、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
3、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
4、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
5、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【二***】。
6、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
7、本文档遇到问题,请及时私信或留言给本站上传会员【二***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。

注意事项

本文(VB结合SQL开发学校教务管理系统.doc)为本站上传会员【二***】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4008-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

VB结合SQL开发学校教务管理系统.doc

1、某某学院计算机科学与技术系课程设计报告课 程 名 数据库应用 设计题目 学校教务管理系统 班 级 08本科1班 专 业 计算机科学与技术 姓 名 某某某 指导教师 孙海霞 2010年8月制设计任务1.为系统创建存储过程并设置相应的属性2.创建5个存储过程3.对所创建的存储过程进行调用完成任务的思路、方法与算法: 学会怎样创建存储过程,掌握变量和字符类型的运用,以及怎样调用存储过程,在存储过程中可以按商店编号来查询、按职工编号查询、按会员编号查询、按会员编号和职工编号查询、按商店编号和职工编号查询,为了方便起见过程名要做到见名知意,以便阅读。程序框图:学校教务管理系统功能结构图:学校教务管理系统

2、E-R图核心程序(对主要的语句要加注释)登陆界面截图:登陆界面vb代码:Public stu_flag As IntegerPublic cls_flag As IntegerPublic course_flag As IntegerPublic serverstr As StringPublic ueserstr As StringPublic passstr As StringPublic Function conn() As ADODB.ConnectionOn Error GoTo 1Set conn = New ADODB.Connectionconn.Open Provider=S

3、QLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=教学成绩管理数据库;Data Source=7MZZQCR4HI4IDQVExit Function1: MsgBox Err.Description EndEnd FunctionPrivate Sub Command1_Click()If Trim(Text1.Text) And Trim(Text2.Text) ThenDim rs As New Recordsetrs.Open select username from tb_us

4、er where username = & Me.Text1 & and password = & Me.Text2 & , conn, adOpenKeyset, adLockOptimisticIf Not rs.EOF ThenUnload Me 关闭frm_main.ShowElse MsgBox 用户名或密码不正确, vbCritical End If rs.Close Set rs = Nothing Else MsgBox 请输入用户名和密码, vbCritical End IfEnd SubPrivate Sub Command2_Click() 退出登录界面Unload Me

5、End SubMDI主题窗口截图:MDI主题窗口代码:Private Sub 删除成绩信息_Click(Index As Integer)add_resultinfo.ShowEnd SubPrivate Sub 删除教师信息_Click(Index As Integer)add_teinfo.ShowEnd SubPrivate Sub 删除课程信息_Click(Index As Integer)add_courseinfo.ShowEnd SubPrivate Sub 删除学生信息_Click(Index As Integer)add_stuinfo.ShowEnd SubPrivate

6、Sub 添加成绩信息_Click(Index As Integer)add_resultinfo.ShowEnd SubPrivate Sub 添加教师信息_Click(Index As Integer)add_teinfo.ShowEnd SubPrivate Sub 添加课程信息_Click(Index As Integer)add_courseinfo.ShowEnd SubPrivate Sub 添加学生信息_Click(Index As Integer)add_stuinfo.ShowEnd SubPrivate Sub 退出_Click(Index As Integer)Unloa

7、d MeEnd SubPrivate Sub 信息查询_Click(Index As Integer)info.ShowEnd SubPrivate Sub 修改查询成绩信息_Click(Index As Integer)add_resultinfo.ShowEnd SubPrivate Sub 修改查询教师信息_Click(Index As Integer)add_teinfo.ShowEnd SubPrivate Sub 修改查询课程信息_Click(Index As Integer)add_courseinfo.ShowEnd SubPrivate Sub 修改查询学生信息_Click(

8、Index As Integer)add_stuinfo.ShowEnd Sub学生信息管理界面:学生信息管理代码:Dim rs As New ADODB.RecordsetDim con As New ADODB.ConnectionPrivate Sub Command1_Click()rs.AddNewrs.Fields(学号) = Text1.Textrs.Fields(姓名) = Text2.Textrs.Fields(性别) = Text3.Textrs.Fields(班级编号) = Text4.Textrs.Fields(民族) = Text5.Textrs.UpdateSet

9、MSHFlexGrid1.DataSource = rsEnd SubPrivate Sub Command2_Click()rs.Closers.Open select * from 学生信息表 where 学号 = + Text1.Text + , con, adOpenKeyset, adLockOptimistic, adCmdTextrs.UpdateSet MSHFlexGrid1.DataSource = rsEnd SubPrivate Sub Command3_Click()rs.Updaters.Fields(姓名) = Text2.Textrs.Fields(性别) =

10、Text3.Textrs.Fields(班级编号) = Text4.Textrs.Fields(民族) = Text5.Textrs.UpdateSet MSHFlexGrid1.DataSource = rsEnd SubPrivate Sub Command4_Click()rs.Closers.Open delete from 学生信息表 where 学号= + Text1.Text + , con, 1, 3, adCmdTextrs.Open select * from 学生信息表, con, adOpenKeyset, adLockOptimistic, adCmdTextrs.U

11、pdateSet MSHFlexGrid1.DataSource = rsEnd SubPrivate Sub Form_Load()con.Open Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=教学成绩管理数据库;Data Source=7MZZQCR4HI4IDQVrs.Open select * from 学生信息表, con, adOpenKeyset, adLockOptimistic, adCmdTextSet MSHFlexGrid1.DataSo

12、urce = rsrs.UpdateEnd Sub教师信息管理界面:教师信息管理界代码:Dim rs As New ADODB.RecordsetDim con As New ADODB.ConnectionPrivate Sub Command1_Click()rs.AddNewrs.Fields(教师号) = Text1.Textrs.Fields(姓名) = Text2.Textrs.Fields(性别) = Text3.Textrs.Fields(所在系) = Text4.Textrs.Fields(登录名) = Text5.Textrs.UpdateSet MSHFlexGrid1.

13、DataSource = rsEnd SubPrivate Sub Command2_Click()rs.Closers.Open select * from 教师信息表 where 教师号= + Text1.Text + , con, adOpenKeyset, adLockOptimistic, adCmdTextrs.UpdateSet MSHFlexGrid1.DataSource = rsEnd SubPrivate Sub Command3_Click()rs.Updaters.Fields(姓名) = Text2.Textrs.Fields(性别) = Text3.Textrs.

14、Fields(所在系) = Text4.Textrs.Fields(登录名) = Text5.Textrs.UpdateSet MSHFlexGrid1.DataSource = rsEnd SubPrivate Sub Command4_Click()rs.Closers.Open delete from 教师信息表 where 教师号= + Text1.Text + , con, 1, 3, adCmdTextrs.Open select * from 教师信息表, con, adOpenKeyset, adLockOptimistic, adCmdTextrs.UpdateSet MSH

15、FlexGrid1.DataSource = rsEnd SubPrivate Sub Form_Load()con.Open Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=教学成绩管理数据库;Data Source=7MZZQCR4HI4IDQVrs.Open select * from 教师信息表, con, adOpenKeyset, adLockOptimistic, adCmdTextSet MSHFlexGrid1.DataSource = rsrs.

16、UpdateEnd Sub课程信息管理界面:课程信息管理代码:Dim rs As New ADODB.RecordsetDim con As New ADODB.ConnectionPrivate Sub Command1_Click()rs.AddNewrs.Fields(课程号) = Text1.Textrs.Fields(课程名称) = Text2.Textrs.Fields(院系编号) = Text3.Textrs.Fields(学时) = Text4.Textrs.Fields(类别) = Text5.Textrs.UpdateSet MSHFlexGrid1.DataSource

17、= rsEnd SubPrivate Sub Command2_Click()rs.Closers.Open select * from 课程信息表 where 课程名称= + Text1.Text + , con, 1, 3, adCmdTextrs.UpdateSet MSHFlexGrid1.DataSource = rsEnd SubPrivate Sub Command3_Click()rs.Updaters.Fields(课程号) = Text2.Textrs.Fields(院系编号) = Text3.Textrs.Fields(学时) = Text4.Textrs.Fields(

18、类别) = Text5.Textrs.UpdateSet MSHFlexGrid1.DataSource = rsEnd SubPrivate Sub Command4_Click()rs.Closers.Open delete from 课程信息表 where 课程名称= + Text1.Text + , con, 1, 3, adCmdTextrs.Open select * from 课程信息表, con, adOpenKeyset, adLockOptimistic, adCmdTextrs.UpdateSet MSHFlexGrid1.DataSource = rsEnd SubPr

19、ivate Sub Form_Load()con.Open Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=教学成绩管理数据库;Data Source=7MZZQCR4HI4IDQVrs.Open select * from 课程信息表, con, adOpenKeyset, adLockOptimistic, adCmdTextSet MSHFlexGrid1.DataSource = rsrs.UpdateEnd Sub成绩管理信息界面:成绩管理信息代码:Dim

20、 rs As New ADODB.RecordsetDim con As New ADODB.ConnectionPrivate Sub Command1_Click()rs.AddNewrs.Fields(学号) = Text1.Textrs.Fields(课程号) = Text2.Textrs.Fields(教师号) = Text3.Textrs.Fields(分数) = Text4.Textrs.UpdateSet MSHFlexGrid1.DataSource = rsEnd SubPrivate Sub Command2_Click()rs.Closers.Open select *

21、 from 教学成绩表 where 学号= + Text1.Text + , con, adOpenKeyset, adLockOptimistic, adCmdTextrs.UpdateSet MSHFlexGrid1.DataSource = rsEnd SubPrivate Sub Command3_Click()rs.Updaters.Fields(课程号) = Text2.Textrs.Fields(教师号) = Text3.Textrs.Fields(分数) = Text4.Textrs.UpdateSet MSHFlexGrid1.DataSource = rsEnd SubPr

22、ivate Sub Command4_Click()rs.Closers.Open delete from 教学成绩表 where 学号= + Text1.Text + , con, 1, 3, adCmdTextrs.Open select * from 教学成绩表, con, adOpenKeyset, adLockOptimistic, adCmdTextrs.UpdateSet MSHFlexGrid1.DataSource = rsEnd SubPrivate Sub Form_Load()con.Open Provider=SQLOLEDB.1;Integrated Securit

23、y=SSPI;Persist Security Info=False;Initial Catalog=教学成绩管理数据库;Data Source=7MZZQCR4HI4IDQVrs.Open select * from 教学成绩表, con, adOpenKeyset, adLockOptimistic, adCmdTextSet MSHFlexGrid1.DataSource = rsrs.UpdateEnd Sub信息查询界面:信息查询界面代码:Dim rs As New ADODB.RecordsetDim con As New ADODB.ConnectionPrivate Sub C

24、ommand1_Click()rs.Closers.Open select * from 课程信息表 where 课程号 in (select 课程号 from 教学成绩表 where 教师号 in (select 教师号 from 教师信息表 where 姓名= + Text1.Text + ) , con, adOpenKeyset, adLockOptimistic, adCmdTextrs.UpdateSet MSHFlexGrid1.DataSource = rsEnd SubPrivate Sub Command2_Click()rs.Closers.Open select * f

25、rom 教师信息表 where 教师号 in (select 教师号 from 教学成绩表 where 课程号 in (select 课程号 from 课程信息表 where 课程名称= + Text2.Text + ), con, adOpenKeyset, adLockOptimistic, adCmdTextrs.UpdateSet MSHFlexGrid1.DataSource = rsEnd SubPrivate Sub Command3_Click()rs.Closers.Open select * from 课程信息表 where 课程号 in (select 课程号 from

26、教学成绩表 where 学号 in (select 学号 from 学生信息表 where 姓名= + Text3.Text + ), con, adOpenKeyset, adLockOptimistic, adCmdTextrs.UpdateSet MSHFlexGrid1.DataSource = rsEnd SubPrivate Sub Form_Load()con.Open Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=教学成绩管理数据库;Data So

27、urce=7MZZQCR4HI4IDQVrs.Open select * from 课程信息表, con, adOpenKeyset, adLockOptimistic, adCmdTextSet MSHFlexGrid1.DataSource = rsrs.UpdateEnd Sub解题结果及对结果的分析:总结:这次课程设计由王斌画商店职工会员的E-R图并将E-R图转化为关系模式,并一起讨论,增加了彼此之间的友谊,并熟练掌握了存储过程以及调用,弄清楚了以前未弄懂的知识点。还了解了怎样创建数据库、创建表和对表的修改插入数据、创建视图以及对完整性的约束的知识点。老师评语: 老师签名 年 月 日注

28、:成绩分为优、良、中、及格、不及格五级附录资料:不需要的可以自行删除VB HOOK(钩子)超级无敌详细用法(介绍)hook是WINDOWS提供的一种消息处理机制,它使得程序员可以使用子过程来监视系统消息,并在消息到达目标过程前得到处理。 下面将介绍WINNDOWS HOOKS并且说明如何在WINDOWS 程序中使用它。关于HOOKS 使用HOOK 将会降低系统效率,因为它增加了系统处量消息的工作量。建议在必要时才使用HOOK,并在消息处理完成后立即移去该HOOK。HOOK链 WINDOWS提供了几种不同类型的HOOKS;不同的HOOK可以处理不同的消息。例如,WH_MOUSE HOOK用来监视

29、鼠标消息。 WINDOWS为这几种HOOKS维护着各自的HOOK链。HOOK链是一个由应用程序定义的回调函数队列,当某种类型的消息发生时,WINDOWS向此种类型的HOOK链的第一个函数发送该消息,在第一函数处理完该消息后由该函数向链表中的下一个函数传递消息,依次向下。如果链中某个函数没有向下传送该消息,那么链表中后面的函数将得不到此消息。(对于某些类型的HOOK,不管HOOK链中的函数是否向下传递消息,与此类型HOOK联系的所有HOOK函数都会收到系统发送的消息)HOOK过程 为了拦截特定的消息,你可以使用SetWindowsHookEx函数在该类型的HOOK链中安装你自己的HOOK函数。该

30、函数语法如下: public function MyHook(nCode,wParam,iParam) as long 加入代码 end function 其中MyHook可以随便命名,其它不能变。该函数必须放在模块段。nCode指定HOOK类型。wParam,iParam的取值随nCode不同而不同,它代表了某种类型的HOOK的某个特定的动作。 SetWindowsHookEx总是将你的HOOK函数放置在HOOK链的顶端。你可以使用CallNextHookEx函数将系统消息传递给HOOK链中的下一个函数。 注释对于某些类型的HOOK,系统将向该类的所有HOOK函数发送消息,这时,HOOK函数

31、中的CallNextHookEx语句将被忽略。 全局HOOK函数可以拦截系统中所有线程的某个特定的消息(此时该HOOK函数必须放置在DLL中),局部HOOK函数可以拦截指定线程的某特定消息(此时该HOOK函数可以放置在DLL中,也可以放置在应用程序的模块段)。 注释 建议只在调试时使用全局HOOK函数。全局HOOK函数将降低系统效率,并且会同其它使用该类HOOK的应用程序产生冲突。HOOK类型 WH_CALLWNDPROC 和 WH_CALLWNDPROCRET HOOK WH_C ALLWNDPROC 和WH_CALLWNDPROCRET HOOK可以监视SendMessage发送的消息。系

32、统在向窗体过程发送消息前,将调用WH_CALLWNDPROC;在窗体过程处理完该消息后系统将调用WH_CALLWNDPROCRET。 WH_CALLWNDPROCRET HOOK会向HOOK过程传送一个CWPRETSTRUCT结构的地址。该结构包含了窗体过程处理系统消息后的一些信息。 WH_CBT Hook 系统在激活,创建,消毁,最小化,最大化,移动,改变窗体前;在完成一条系统命令前;在从系统消息队列中移去鼠标或键盘事件前;在设置输入焦点前,或同步系统消息队列前,将调用WH_CBT HOOK。你可以在你的HOOK 过程拦截该类HOOK,并返回一个值,告诉系统,是否继续执行上面的操作。 WH_

33、DEBUG HOOK 系统在调用与某种HOOK类型联系的HOOK过程前,将调用WH_DEBUG ,应用程序可以使用该HOOK决定是否让系统执行某种类型的HOOK。 WH_FOREGROUNDIDLE Hook 系统在空闲时调用该HOOK,在后台执行优先权较低的应用程序。 WH_GETMESSAGE Hook WH_GETMESSAGE Hook使应用程序可以拦截GetMessage 或 PeekMessage的消息。应用程序使用WH_GETMESSAGE HOOK监视鼠标、键盘输入和发送到队列中的其它消息。 WH_JOURNALRECORD Hook WH_JOURNALRECORD Hook

34、使应用程序可以监视输入事件。典型地,应用程序使用该HOOK记录鼠标、键盘输入事件以供以后回放。该HOOK是全局HOOK,并且不能在指定线程中使用。 WH_JOURNALPLAYBACK Hook WH_JOURNALPLAYBACK Hook使应用程序可以向系统消息队列中插入消息。该HOOK可以回放以前由WH_JOURNALRECORD HOOK录制的鼠标、键盘输入事件。在WH_JOURNALPLAYBACK Hook安装到系统时,鼠标、键盘输入事件将被屏蔽。该HOOK同样是一个全局HOOK,不能在指定线程中使用。 WH_JOURNALPLAYBACK Hook返回一个时间暂停值,它告诉系统,

35、在处理当前回放的消息时,系统等待百分之几秒。这使得此HOOK可以控制在回放时的时间事件。 WH_KEYBOARD Hook WH_KEYBOARD Hook使应用程序可以监视由GetMessage和PeekMessage返回的WM_KEYDOWN 及WM_KEYUP消息。应用程序使用该HOOK监视发送到消息队列中的键盘输入。 WH_MOUSE Hook WH_MOUSE Hook 使应用程序可以监视由GetMessage和PeekMessage返回的消息。应用程序使用该HOOK监视发送到消息队列中的鼠标输入。 WH_MSGFILTER and WH_SYSMSGFILTER Hooks WH_

36、MSGFILTER 和WH_SYSMSGFILTER Hooks使应用程序可以监视菜单、滚动条、消息框、对话框,当用户使用ALT+TAB或ALT+ESC来切换窗体时,该HOOK也可以拦截到消息。WH_MSGFILTER仅在应用程序内部监视菜单、滚动条、消息框、对话框,而WH_SYSMSGFILTER则可以在系统内监视所有应用程序的这些事件。 WH_SHELL Hook 一个SHELL程序可以使用WH_SHELL Hook来接收重要的信息。当一个SHELL程序被激活前或当前窗体被创建、消毁时,系统会调用WH_SHELL Hook过程。 使用HOOK 安装、销毁HOOK过程 监视系统事件安装、销毁

37、HOOK过程 使用SetWindowsHookEx函数,指定一个HOOK类型,自己的HOOK过程是全局还是局部HOOK,同时给出HOOK过程的进入点,就可以轻松的安装你自己的HOOK过程。Declare Function SetWindowsHookEx Lib user32 Alias SetWindowsHookExA _ (ByVal idHook As Long, _ ByVal lpfn As Long, _ ByVal hmod As Long, _ ByVal dwThreadId As Long) As LongidHook代表是何种Hook,有以下几种 Public Cons

38、t WH_CALLWNDPROC = 4 Public Const WH_CALLWNDPROCRET = 12 Public Const WH_CBT = 5 Public Const WH_DEBUG = 9 Public Const WH_FOREGROUNDIDLE = 11 Public Const WH_GETMESSAGE = 3 Public Const WH_HARDWARE = 8 Public Const WH_JOURNALPLAYBACK = 1 Public Const WH_JOURNALRECORD = 0 Public Const WH_KEYBOARD =

39、2 Public Const WH_MOUSE = 7 Public Const WH_MSGFILTER = (-1) Public Const WH_SHELL = 10 Public Const WH_SYSMSGFILTER = 6lpfn代表Hook Function所在的Address,这是一个CallBack Fucnction,当挂上某个Hook时,我们便得定义一个Function来当作某个讯息产生时,来处理它的Function,这个Hook Function有一定的叁数格式 Private Function HookFunc(ByVal nCode As Long, _ By

40、Val wParam As Long, _ ByVal lParam As Long ) As Long nCode 代表是什麽请况之下所产生的Hook,随Hook的不同而有不同组的可能值。 wParam lParam 传回值则随Hook的种类和nCode的值之不同而不同。 因这个叁数是一个 Function的Address所以我们固定将Hook Function放在.Bas中,并以AddressOf HookFunc传入。至於Hook Function的名称我们可以任意给定,不一定叫 HookFunchmod 代表.DLL的hInstance,如果是Local Hook,该值可以是Null(

41、VB中可传0进去),而如果是Remote Hook,则可以使用GetModuleHandle(.dll名称)来传入。dwThreadId 代表执行这个Hook的ThreadId,如果不设定是那个Thread来做,则传0(所以一般来说,Remote Hook传0进去),而VB的Local Hook一般可传App.ThreadId进去。值回值 如果SetWindowsHookEx()成功,它会传回一个值,代表目前的Hook的Handle,这个值要记录下来。因为A程式可以有一个System Hook(Remote Hook),如KeyBoard Hook,而B程式也来设一个Remote的KeyBoa

42、rd Hook,那麽到底KeyBoard的讯息谁所拦截?答案是,最後的那一个所拦截,也就是说A先做keyboard Hook,而後B才做,那讯息被B拦截,那A呢?就看B的Hook Function如何做。如果B想让A的Hook Function也得这个讯息,那B就得呼叫CallNextHookEx()将这讯息Pass给A,於是产生Hook的一个连线。如果B中不想Pass这讯息给A,那就不要呼叫CallNextHookEx()。Declare Function CallNextHookEx Lib user32 Alias CallNextHookEx _ (ByVal hHook As Lon

43、g, _ ByVal ncode As Long, _ ByVal wParam As Long, _ lParam As Any) As LonghHook值是SetWindowsHookEx()的传回值,nCode, wParam, lParam则是Hook Procedure中的三个叁数。最後是将这Hook去除掉,请呼叫UnHookWindowHookEx()Declare Function UnhookWindowsHookEx Lib user32 Alias UnhookWindowsHookEx _ (ByVal hHook As Long) As LonghHook便是SetWindowsHookEx()的传回值。此时,以上例来说,B程式结束Hook,则换A可以直接拦截讯息。KeyBoard Hook的范例Hook Function的三个叁数nCode wParam lParam 传回值HC_ACTION表按键Virtual Key与WM_KEYDOWN同若讯息要被处理传0或 反之传1HC_NOREMOVEPublic hHoo

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服