怎样屏蔽系统热键

C++/MFC——一个能截获和屏蔽系统热键的钩子  BOOL installhook()...{    HINSTANCE hins=AfxGetInstanceHandle();    HHOOK Hook = SetWindowsHookEx(WH_KEYBOARD_LL,(HOOKPROC)KeyboardProc,hins,0);     return (BOOL)Hook;}第一句是获得当前应用实例的句柄。第二句是创建钩 阅读详情

怎样屏蔽系统热键

在程序开发过程中,为了达到一些特殊的要求,有时需要屏蔽系统热键。这些系统热键包括 Alt+Tab、Ctrl+Alt+Del、Alt+Esc、Ctrl+Esc、Win 键等。由于屏蔽系统热键涉及到系统的安全,所以微软并不推荐这样做,我们只能在一些未公开的文档中去探究它。下面我们分三种情况来讨论屏蔽系统热键的方法。

一、              在win95/win98操作系统下:

在win95/win98操作系统下屏蔽系统热键可以用一种非常简单的方法做到,就是让系统认为当前处于屏保状态。让系统认为当前处于屏保状态的方法是:

             SystemParametersInfo(SPI_SETSCREENSAVERRUNNING,true,&pOld,SPIF_UPDATEINIFILE);

SPI_SETSCREENSAVERRUNNING 该参数在微软的文档中并不建议使用,是因为在该状态下,系统无法弹出任务列表,一旦某一进程被挂起,只能重新启动,有可能造成数据丢失,但可以达到所需效果,我们仍然使用它。

 

当程序要取消该状态:

      SystemParametersInfo(SPI_SETSCREENSAVERRUNNING,false,&pOld,SPIF_UPDATEINIFILE);

pOld 为我们定义的布尔变量。 

二、         在WinNT 4.0 Service Pack 3或 Win2000下

 也许你认为使用一个键盘钩子WH_KEYBOARD不就解决问题了吗?问题并不是那么简单。这是因为键盘钩子WH_KEYBOARD并不能截取到系统键的输入!幸好在Winnt4.0 Service Pack3或Win2000下系统给我们提供了一个底层系统钩子(Low Level Hook)WH_KEYBOARD_LL。WH_KEYBOARD_LL的工作流程如右图所示:

从右图我们可以看到,底 层键盘钩子存在于用户敲击键盘和系统处理之间,而普通键盘钩子则存在于系统产生WM_KEYxxx之后。很清楚,普通键盘钩子只能截获WM_KEYxxx消息,而不能对系统键进行操作。但是底层键盘钩子有一个致命的弱点,就是如果调用它的进程或线程出现死循环,系统将不能处理任何键盘操作。为了解决这个问题,微软在注册表中给出了一个底层键盘钩子处理的限制时间,如果超出了这个时间,系统将正常处理。这个时间的键值在注册表的HKEY_CURRENT_USER/Control Panel/Desktop/ LowLevelHooksTimeout下给出。

下面我们来讨论底层键盘钩子的用法。首先需要按装钩子,这需要API函数:

         HHOOK SetWindowsHookEx(
    
         int iHookCode,        
    
         HOOKPROC lpfn,     
    
         HINSTANCE hModule,
    
         DWORD dwThreadId
    

);

其中,第一个参数是钩子的类型;第二个参数是钩子函数的地址;第三个参数是包含钩子函数的模块句柄;第四个参数指定监视的线程。如果指定确定的线程,即为线程专用钩子;如果指定为空,即为全局钩子。其中,全局钩子函数必须包含在DLL(动态链接库)中,而线程专用钩子还可以包含在可执行文件中。得到控制权的钩子函数在完成对消息的处理后,如果想要该消息继续传递,那么它必须调用另外一个SDK中的API函数CallNextHookEx来传递它。钩子函数也可以通过直接返回TRUE来丢弃该消息,并阻止该消息的传递。

       下面是实现底层键盘钩子的完整源代码,在VC5.0,VC6.0下调试通过。
  
               #include <Windows.h>
  
 
  
               LRESULT CALLBACK LowLevelKeyboardProc(int nCode, 
  
            WPARAM wParam, LPARAM lParam) {
  
 
  
            BOOL fEatKeystroke = FALSE;
  
 
  
   I        f (nCode == HC_ACTION) {
  
         switch (wParam) {
  
         case WM_KEYDOWN:  case WM_SYSKEYDOWN:
  
         case WM_KEYUP:    case WM_SYSKEYUP: 
  
        PKBDLLHOOKSTRUCT p = (PKBDLLHOOKSTRUCT) lParam;
  
        fEatKeystroke = 
  
            ((p->vkCode == VK_TAB) && ((p->flags & LLKHF_ALTDOWN) != 0)) ||
  
            ((p->vkCode == VK_ESCAPE) && 
  
            ((p->flags & LLKHF_ALTDOWN) != 0)) ||
  
((p->vkCode == VK_ESCAPE) && ((GetKeyState(VK_CONTROL) & 0x8000) != 0));
  
         break;
  
      }
  
   }
  
   return(fEatKeystroke ? 1 : CallNextHookEx(NULL, nCode, wParam, 
  
          lParam));
  
}
  
 
  
/////////////////////////////////////////////////////////////////////////
  
 
  
 
  
int WINAPI WinMain(HINSTANCE hinstExe, HINSTANCE, PTSTR pszCmdLine, int) {
  
 
  
   //按装底层键盘钩子
  
   HHOOK hhkLowLevelKybd  = SetWindowsHookEx(WH_KEYBOARD_LL, 
  
      LowLevelKeyboardProc, hinstExe, 0);
  
 
  
   MessageBox(NULL, 
  
      TEXT("Alt+Esc, Ctrl+Esc, and Alt+Tab are now disabled./n")
  
      TEXT("Click /"Ok/" to terminate this application and re-enable
  
            these keys."),
  
      TEXT("Disable Low-Level Keys"), MB_OK);
  
   UnhookWindowsHookEx(hhkLowLevelKybd);
  
 
  
   return(0);
  

}

 

三、         在低于WinNT 4.0 Service Pack 2 或更低版本的NT操作系统下

很遗憾,在低于WinNT 4.0 Service Pack 2 或更低版本的NT操作系统下我们所能做的并不能屏蔽掉所有的系统热键,而仅仅可以屏蔽Alt+Tab,Alt+Esc。

完成这一功能的方法是使用RegisterHotKey函数。在调用该函数后你的进程会在ALT+TAB按下时比系统先得到通知。你需要处理的消息是WM_HOTKEY,下面是相关代码讲解。

RegisterHotKey函数原型及说明:
  
BOOL RegisterHotKey(
  
  HWND hWnd,         // window to receive hot-key notification
  
  int id,            // identifier of hot key
  
  UINT fsModifiers,  // key-modifier flags
  
  UINT vk            // virtual-key code);
  

参数 id为你自己定义的一个ID值,对一个线程来讲其值必需在0x0000 - 0xBFFF范围之内,对DLL来讲其值必需在0xC000 - 0xFFFF 范围之内,在同一进程内该值必须唯一。

参数 fsModifiers指明与热键联合使用按键,可取值为:MOD_ALT MOD_CONTROL MOD_WIN MOD_SHIFT。

参数 vk指明热键的虚拟键码 。

// 初始化
  
CMainFrame::CMainFrame()
  
{
  
 m_nHotKeyID = 100;
  
 
  
 BOOL m_isKeyRegistered = RegisterHotKey(GetSafeHwnd(), m_nHotKeyID,
  
  MOD_ALT, VK_TAB);
  
 
  
 ASSERT(m_isKeyRegistered != FALSE);
  
}
  
 
  
//取消
  
CMainFrame::~CMainFrame()
  
{
  
 BOOL m_iskeyUnregistered = UnregisterHotKey(GetSafeHwnd(), m_nHotKeyID);
  
 ASSERT(m_isKeyUnregistered != FALSE);
  
}
  
 
  
WM_HOTKEY消息含义:
  
idHotKey = (int) wParam;              // identifier of hot key 
  
fuModifiers = (UINT) LOWORD(lParam);  // key-modifier flags 
  
uVirtKey = (UINT) HIWORD(lParam);     // virtual-key code 
  
这三个值分别和调用RegisterHotKey时的id,fsModifiers,vk对应。
   
最后你需要在文件中定义ON_MESSAGE消息映射。
   
在头文件中:
   
class CMainFrame : public XXXX
  
{
  
         afx_msg LONG OnHotKey(WPARAM wP,LPARAM lP);
  
}
  
在CPP文件中MESSAGE_MAP处添加:
   
ON_MESSAGE(WM_HOTKEY,OnHotKey)
  

该热键在你的进程运行时一直有效,在进程结束后其状态会被系统恢复。

 

通过对以上三种情况的分析,我们基本上涵盖了屏蔽系统热键的所有方法,有什么问题请于zhangyunchao@citiz.net 联系。

 

通用抓取算法AnyGrasp(Graspnet)——本地部署并测试自定义输入数据 背景:GraspNet在数据采集方面,首先将相机固定到机械臂末端,对同一个场景拍摄256个不同的角度,同时场景中的每个物体都会提前采集好3D模型,之后将其投射到仿真环境中,在仿真环境中,对抓取位姿进行打标签,如此完成数据的采集。在运行官方的测试示例时,使用的是路径下的输入数据,可以分析下。color.png(输入):rgb图像(输出):输出的生成抓取位姿的图像depth.png(输入):和当前rgb图像对应的深度图像(保存格式是单通道uint16)meta.mat。 阅读详情

相关推荐

新手如何学习车载底层嵌入式软件开发(AutoSar)

汽车嵌入式开发

ACarSoft的博客 4219

WH_MOUSE_LL钩子函数

LowLevelMouseProcLowLevelMouseProc钩子过程是应用程序或库定义的回调函数,用于SetWindowsHookEx函数。每次一个新的鼠标输入事件将要被发送到一个线程输入队列中时系统调和这个函数。鼠标输入可能来自本地鼠标驱动也可能来自mouse_event函数。如果输入来自mouse_event,这个输入被称为“注入”。LRESULT CALLBACK LowLe

sheks2010的专栏 5659

读书笔记|智能运维系统落地方案

对于互联网公司来说,系统复杂化导致的人工运维成本激增已经是普遍现象,采用智能运维是行之有效的应对策略。智能运维的核心思想是利用算法来处理海量运维数据,积累运维经验,从而代替人工思考判断,以自动化的过程实现风险的预防、发现、定位和处理。而智能运维系统是其中的重中之重,但建设企业应用智能运维系统,不是应用运维部独立规划设计就可以完成的,它需要业务、产品、开发、基础设施运维多部门协同才能顺利实施。 那么,作为运维人员,您是否了解智能运维系统的架构?如果参与规划建设智能运维系统,该怎么着手呢?下面我们立足实际需求

xiaoshuaca的博客 681

低级钩子失灵原因

<br />Windows要求低级钩子必须在限定的时间内完成,如果超时系统就会自动调用钩子链的下一个函数。这个超时值是由HKEY_CURRENT_USER/Control Panel/Desktop下的键LowLevelHooksTimeout决定的。如果没有这个键,系统在一次超时后就会自动卸载钩子,以后钩子函数就再也得不到执行。默认情况下,XP有这个键,其值为5000(五秒钟);Vista和Win7都没有这个键,因而一旦超时钩子就会被卸载。

Matrix_Designer的专栏 2995

【自动驾驶规划】Lattice Planner

Lattice Planner简介 LatticePlanner算法属于一种局部轨迹规划器,输出轨迹将直接输入到控制器,由控制器完成对局部轨迹的跟踪控制。因此,Lattice Planner输出的轨迹是一条光滑无碰撞满足车辆运动学约束和速度约束的平稳安全的局部轨迹。Lattice Planner的输入端主要由三部分组成,感知及障碍物信息、参考线信息及定位信息。局部规划模块的输出是带有速度信息的一系列轨迹点组成的轨迹,其保证了车辆控制器在车辆跟踪控制过程中的平稳性和安全性。 局部规划模块的输出是带有速

uytguytgf的博客 6491

紫光同创FPGA中ADF网表文件的黑匣子封装与PDS环境实战指南

本文详细介绍了在紫光同创FPGA开发环境中使用ADF网表文件进行黑匣子封装的实战指南。通过PDS环境配置、加密ADF生成、黑匣子集成及验证调试等步骤,帮助开发者实现核心IP保护,同时保持设计性能。特别适用于需要模块级代码保护的企业级FPGA开发场景。

weixin_33725239的博客 341

HOOK钩子机制学习笔记(4) - 钩子函数说明

翻译参考自MaybeHelios的blog: http://blog.youkuaiyun.com/maybehelios/        通过SetWindowsHookEx方法安装钩子,该函数指定处理拦截消息的钩子函数(回调函数),可在钩子函数中自定义消息的处理,可修改消息或屏蔽消息。钩子函数的格式是固定为:LRESULT CALLBACK CallBackProc(                I

jiangxinyu的专栏 4051

vcpkg管理OpenCASCADE的5个高效技巧:从多版本共存到离线部署

本文详细介绍了使用vcpkg高效管理OpenCASCADE的5个实用技巧,包括多版本共存、性能优化、团队共享、CI/CD集成和离线部署。通过自动配置和版本控制,vcpkg显著简化了OpenCASCADE的开发环境管理,特别适合工业级CAD开发场景。

rain6的博客 187

键盘钩子 偶尔失效 lowlevelhookstimeout_机械键盘有哪些常见故障 机械键盘常见故障及维护技巧...

  在我们的认知里,不少人觉得买一个机械键盘可以陪伴一生,永远也不会坏的,不仅仅是因为有的机械硬盘使用几十年还在正常使用,更是因为机械键盘5000万次的击键寿命,但在实际使用中却并非如此,机械键盘“中道崩殒”掉链子的现象并不少,机械键盘会出现哪些问题,我们该如何解决呢?下面小编给大家聊聊机械键盘那些事!  机械键盘 图1  机械键盘常见故障维护:  一、卡键:遭遇吃货或老化  在使用机械键盘时,有...

weixin_29558841的博客 1330

64、5G 侧链通信技术详解

本文详细解析了5G侧链通信的关键技术,包括资源感知与选择、UE间协调、混合ARQ、功率控制、信道探测与CSI报告以及侧链同步。资源感知与选择通过周期性或随机方式实现资源分配,UE间协调通过主动或被动方式避免资源冲突。混合ARQ机制确保数据传输可靠性,功率控制和信道探测优化传输质量并减少干扰。侧链同步则通过多种方式确保设备间时间一致性。这些技术相互配合,构建了高效稳定的5G侧链通信体系,适用于智能交通、物联网、应急通信等多个领域,为未来无线通信发展提供强大支撑。

oil88的博客 100

基于simulink的能量管理策略的场景实例:混合动力电动汽车(HEV)的能量回收与分配策略

本文以混合动力电动汽车(HEV)为研究对象,通过Simulink建模详细演示了能量管理策略的设计与实现。内容涵盖HEV系统架构、核心组件工作原理,并分步骤指导搭建车辆动力学模型、动力系统组件模型和基于规则的能量管理策略。重点分析了制动能量回收与功率分配机制,通过仿真验证了逻辑门限策略在提升燃油经济性和维持电池SOC平衡方面的有效性。文章最后展望了更高级控制策略的应用前景,为HEV能量优化提供了完整的仿真研究框架。

xiaoheshang_123的博客 213

低级键盘钩子,在WIN7以上版本的问题

最近在项目用到低级键盘钩子。发现一个很奇怪的事情,在开发环境和测试环境下都正常运行的键盘钩子, 到了现场环境,总是偶发性出现 键盘钩子不能用了,而且退出时产生1404 错误。 后经过阅读MSDN 的Remark An application installs the hook procedure by specifying the WH_KEYBOARD_LL hook ty...

weixin_30354675的博客 531

【异常】OpenClaw总Token超限400报错400 Total tokens of image and text exceed max message tokens. Request id:

摘要: 多模态大模型调用中,图文总Token超限导致的400报错是常见问题。本文分析了该报错的触发原因(文本+图片Token总和超出接口限额),并从技术层面解释了多模态Token的计数规则。解决方案分为三个层次:1)紧急修复(精简文本、压缩图片、拆分请求);2)标准化根治(预校验Token、图片预处理、限额适配);3)进阶兜底(分块处理、模型升级、容错机制)。通过前置管控与源头优化,可有效解决并预防此类问题,提升业务稳定性。

奶爸的编程之路,也就一周冷个三天 831

屏蔽系统热键的方法总结

在编写程序的过程中,我们有时需要实现屏蔽操作系统一些热键的功能,如(ctrl+delete+alt,ctrl+shift+esc等)。网络上有很多关于这方面的资料,总结了一下,一般有如下两个方法:    1. 通过加载低级键盘钩子(WH_KEYBOARD_LL)截获大部分的系统热键,并屏蔽它。这个方法比较简单,但有个缺陷,那就是对ctrl+alt+delete没有办法。    2. 通过远

首席技术执行官CTO(Chief Technology Officer)|技术总监--邓斌博客 1624

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

C# 屏蔽系统热键

一般来说会用到hook(钩子),即获取系统的按键或者鼠标动作,然后在系统响应之前执行自定义动作,或者直接截断这个消息, 这就是屏蔽系统热键的原理了。 首先要调用操作系统的dll文件,先引入命名空间 using System.Runtime.InteropServices; 调用操作系统动态链接库的方法 [DllImport("user32.dll", CharSet = CharSet.Auto,

曾智的专栏 834

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

HOOk 系统热键屏蔽

Ctr+Alt+Del是Winlogon的热键,WinlogoN是SYSTEM的进程,它不在当前用户的会话中,机制不一样的啦。

fysy0000的专栏 3454

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

VC开发屏蔽系统热键F10

项目中开发的一个多文档程序中用到了快键键F10,发现当按F10快键键时,软件焦点会跳到菜单栏上面,网上查到许多的资料都讲的不太准确,下面介绍一种最简单的屏蔽方法,不需要去注册注销热键消息, 1、在CMainFrm添加虚函数PreTranslateMessage。 2、在虚函数中添加对系统热键VK_F10的消息进行屏蔽。 代码如下: virtual BOOL PreTranslateMes...

Wolf的专栏 878

Windows屏蔽系统热键的方法总结

  在编写程序的过程中,我们有时需要实现屏蔽操作系统一些热键的功能,如(ctrl+delete+alt,ctrl+shift+esc等)。网络上有很多关于这方面的资料,总结了一下,一般有如下两个方法:     1. 通过加载低级键盘钩子(WH_KEYBOARD_LL)截获大部分的系统热键,并屏蔽它。这个方法比较简单,但有个缺陷,那就是对ctrl+alt+delete没有办法。     2. 通...

xinghuah的专栏 5139

屏蔽系统热键

在编写程序的过程中,我们有时需要实现屏蔽操作系统一些热键的功能,如(ctrl+delete+alt,ctrl+shift+esc等)。网络上有很多关于这方面的资料,总结了一下,一般有如下两个方法:     1. 通过加载低级键盘钩子(WH_KEYBOARD_LL)截获大部分的系统热键,并屏蔽它。这个方法比较简单,但有个缺陷,那就是对ctrl+alt+delete没有办法。     2.

云中雁012345之成长 1087

Java运用JNI调用dll实现屏蔽系统热键

【前言】 这几天用Java做个锁屏软件需要屏蔽系统热键,就是Win+D,Ctrl+Alt+Del等, 网上找了好多,发现这篇文章: java运用jni调用dll(含源码)实现屏蔽系统热键和任务栏 http://hi.baidu.com/nowgame/blog/item/4530e11f20f289fee1fe0ba1.html 但是对于只懂Java的人无疑是一种折磨, 好不容易跟着文

uikoo9的专栏 6757

屏幕锁定源程序(屏蔽一般的系统热键以及键盘上任何你想要屏蔽的按键)

功能:可以屏蔽系统热键,如ctrl+alt+del、ctrl+esc以及屏蔽掉一些软件的热键 void CLockScreenDlg::Onlock() { // TODO: Add your control notification handler code here CString str_password,str_confirm; GetDlgItemText(IDC_EDIT1,s

linker2008的专栏 2054

45. Java运用JNI调用dll实现屏蔽系统热键

1. 首先,屏蔽系统热键 1、建一个java包 shieldHK (把类建在包里,目的是为了其他的类方便的调用)2、建一个类 ShieldHotKey 代码如下: package shieldHK; import java.util.logging.Level; import java.util.logging.Logger; /** * * @author Administr...

577
下一篇: 可执行文件的绑定
tide
博客等级 码龄27年 3粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值