新手求指教 api调用

问题描述

usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Text;usingSystem.Windows.Forms;usingSystem.Runtime.InteropServices;usingSystem.Reflection;usingSystem.Diagnostics;usingSystem.IO;usingSystem.Text.RegularExpressions;namespacetest{publicpartialclassForm1:Form{//委托publicstructCOPYDATASTRUCT{publicIntPtrdwData;publicintcbData;[MarshalAs(UnmanagedType.LPStr)]publicstringlpData;}publicdelegateintHookProc(intnCode,intwParam,IntPtrlParam);staticinthHook=0;publicconstintWH_KEYBOARD_LL=13;//LowLevel键盘截获,如果是WH_KEYBOARD=2,并不能对系统键盘截取,AcrobatReader会在你截取之前获得键盘。HookProcKeyBoardHookProcedure;//键盘Hook结构函数[StructLayout(LayoutKind.Sequential)]publicclassKeyBoardHookStruct{publicintvkCode;publicintscanCode;publicintflags;publicinttime;publicintdwExtraInfo;}#regionDllImport//设置钩子[DllImport("user32.dll")]publicstaticexternintSetWindowsHookEx(intidHook,HookProclpfn,IntPtrhInstance,intthreadId);//抽掉钩子[DllImport("user32.dll",CharSet=CharSet.Auto,CallingConvention=CallingConvention.StdCall)]publicstaticexternboolUnhookWindowsHookEx(intidHook);//调用下一个钩子[DllImport("user32.dll")]publicstaticexternintCallNextHookEx(intidHook,intnCode,intwParam,IntPtrlParam);[DllImport("kernel32.dll")]publicstaticexternintGetCurrentThreadId();[DllImport("kernel32.dll")]publicstaticexternIntPtrGetModuleHandle(stringname);#endregion#region自定义事件publicvoidHook_Start(){//安装键盘钩子if(hHook==0){KeyBoardHookProcedure=newHookProc(KeyBoardHookProc);//hHook=SetWindowsHookEx(2,//KeyBoardHookProcedure,//GetModuleHandle(Process.GetCurrentProcess().MainModule.ModuleName),GetCurrentThreadId());hHook=SetWindowsHookEx(WH_KEYBOARD_LL,KeyBoardHookProcedure,GetModuleHandle(Process.GetCurrentProcess().MainModule.ModuleName),0);//如果设置钩子失败.if(hHook==0){Hook_Clear();//thrownewException("设置Hook失败!");}}}//取消钩子事件publicvoidHook_Clear(){boolretKeyboard=true;if(hHook!=0){retKeyboard=UnhookWindowsHookEx(hHook);hHook=0;}//如果去掉钩子失败.if(!retKeyboard)thrownewException("UnhookWindowsHookExfailed.");}staticintnum=0;//这里可以添加自己想要的信息处理publicstaticintKeyBoardHookProc(intnCode,intwParam,IntPtrlParam){if(nCode>=0){KeyBoardHookStructkbh=(KeyBoardHookStruct)Marshal.PtrToStructure(lParam,typeof(KeyBoardHookStruct));if(kbh.vkCode!=0){num++;MessageBox.Show(kbh.vkCode+""+num);}return0;}returnCallNextHookEx(hHook,nCode,wParam,lParam);}#endregionpublicForm1(){InitializeComponent();}privatevoidbutton1_Click(objectsender,EventArgse){Hook_Start();}privatevoidbutton2_Click(objectsender,EventArgse){Hook_Clear();}}}vs调试时红色部分调用一次不调试时调用两次

解决方案

解决方案二:
按键消息,keydown,keyup都会触发的,你应该判断一下状态ifGetKeyState(wParam)<0thenGetKeyState原型SHORTGetKeyState(intnVirtKey);
解决方案三:
引用1楼bdmh的回复:

按键消息,keydown,keyup都会触发的,你应该判断一下状态ifGetKeyState(wParam)<0thenGetKeyState原型SHORTGetKeyState(intnVirtKey);http://blog.csdn.net/bdmh/article/details/6124127

那为什么调试时候显示一次啊

时间: 2024-11-03 01:06:55

新手求指教 api调用的相关文章

编程语言 c语言-新手求指教!用c语言 简单学生成绩统计软件 。万分感谢,编好发到邮箱425572938@.

问题描述 新手求指教!用c语言 简单学生成绩统计软件 .万分感谢,编好发到邮箱425572938@. 实现的任务: (1)每个学生记录中包含学号.姓名和C 语言课设成绩等信息: (2)创建学生记录链表: (3)更新学生记录(插入.排序.删除): (4)能统计各分数段的人数,并以分布图显示: (5)输出学生记录到屏幕. 设计内容: 1. 学生记录应该包括学号.姓名.C 语言课设成绩等信息,是本程序的核心数据结构,定 义如下: typedef struct { char num[11]; /*学号*

java-JSP搜索联想框,新手求指教。

问题描述 JSP搜索联想框,新手求指教. 不是用的SSH框架,DAO用JDBC,项目赶工,DAO和Service整合在了一起,我是半路插入的~各位大神先别吐槽--咱先把问题解决再美化~谢谢页面结构如下 <input name=""accountName"" id=""accountName"" class=""yhgl_ser required inputElem"" onkeyu

文件上传-linux curl模拟表单提交不成功,新手求指教

问题描述 linux curl模拟表单提交不成功,新手求指教 以下是upload.jsp页面 <html><head><meta http-equiv=""Content-Type"" content=""text/html; charset=UTF-8""><title>上传文件</title></head><body> <form m

C#webservice 不显示 本人新手 求指教

问题描述 C#webservice 不显示 本人新手 求指教 解决方案 你在本机调试正常么?怎么部署到iis上的,ip和端口以及虚拟目录是否正确.

关于java问题-新手求指教:如何描述项目

问题描述 新手求指教:如何描述项目 才开始学java不久,刚学完核心java,做了一个web服务器模拟的项目.要怎么样去详细的描述啊.求大神指教-- 解决方案 还可以说是这个项目的亮点和难点,你是如何解决的等等. 解决方案二: 新手,求指教.新手求指教---------------------- 解决方案三: 做的什么 叫什么名字 可以达到什么目的 大概使用了什么技术 大概就这些 解决方案四: 同楼上,还有,你有了哪些收获 解决方案五: 介绍项目的开发历程,一些技术点 解决方案六: 做的什么项目

1-cmap错误急求,新手求指教

问题描述 cmap错误急求,新手求指教 BOOL GetMapData(CMap mapfirstCMap &mapnext );GetMapData(m_areaFirstList &mapnext); 不能将参数 2 从"CMap *"转换为"CMap &" 解决方案 那是传引用,不是传指针.

javascript中比较两个数的大小,为什么有的数可以,有的不可以,新手 求指教

问题描述 javascript中比较两个数的大小,为什么有的数可以,有的不可以,新手 求指教 代码:<br> var a=prompt("请输入第一个数",0);<br> var b=prompt("请输入第二个数",0); </p> <p>function Max(c,d)<br> {<br> if(c > d) </p> <p>{ <br> aler

IOS百度地图开发,在实现路线规划后,我想再放大或缩小地图,代码怎样实现的呢?新手求指教

问题描述 IOS百度地图开发,在实现路线规划后,我想再放大或缩小地图,代码怎样实现的呢?新手求指教 我用的Xcode7.3,百度SDK2.10,OC语言的,感谢!

开源-新手求指教类似百度文库模式的代码

问题描述 新手求指教类似百度文库模式的代码 公司想做一个类似百度文库的资料库,想让员工在资料库里上传和下载资料,根据文章的下载量有一定的类似豆豆的奖励机制,想请教一下大家有没有开源的代码或者哪位大神指教一下怎么做 解决方案 类似百度文库源码 http://blog.csdn.net/hsl888/article/details/12944079 解决方案二: 推荐swftools.openofice实现 解决方案三: 有具体的类似代码参考一下吗 解决方案四: http://download.cs