应用-C++窗口外获取键盘消息

问题描述

C++窗口外获取键盘消息

如题,就像金山词霸一样,不管应用程序最小化还是位于其他窗口下面,我按一下F4
就能打开取词开关,再按一下关闭取词开关,这个用C++怎么实现呢?或者相关函数

解决方案

HOOK编程,用钩子来监听键盘按键

解决方案二:

hook windows API TExtOut等

解决方案三:

SetWindowsHookExW & CallNextHookEx

SetWindowsHookExW(WH_KEYBOARD_LL, (HOOKPROC)HookKeyBoard, g_hInstance, 0);
LRESULT CALLBACK HookKeyBoard( int nCode,WPARAM wParam,LPARAM lParam )
{
 switch (nCode)
    {
    case HC_ACTION:
        {
            KBDLLHOOKSTRUCT* kHook = (KBDLLHOOKSTRUCT*)lParam;
            if (wParam == WM_KEYDOWN)
            {
                if (kHook->vkCode == VK_F4)
                {
                    //取词开关
                }
            }
        }

        break;
    }
    }

解决方案四:

键盘--字符消息

时间: 2024-11-16 01:44:17

应用-C++窗口外获取键盘消息的相关文章

C#中键盘消息的响应

Windows窗体通过引发键盘事件来处理键盘输入以响应Windows消息,大多数Windows窗体应用程序都通过处理键盘事件来以独占方式处理键盘输入.为了更好的掌握Windows窗体中键盘处理的相关操作,程序开发人员应该了解键盘消息的工作方式,以便实现更高级的键盘输入方案(例如,在按键到达控件之前截获它们等).本节将详细介绍有关Windows窗体中键盘处理操作的相关内容. 1.按键的类型 Windows窗体将键盘输入标识为由按位Keys枚举表示的虚拟键代码.使用Keys枚举,可以综合一系列按键以

模态窗口其实就是在当前窗口调用系统的消息循环,响应用户的操作,将相关的消息发送到对应的窗口(转)

  上周准备在公司内部转岗,面了3个部门windows客户端相关的工作,最终拿到3个Offer,主要涉及C++和Windows两大块内容,C++的题目基本都答上了,Windows一直都是我的弱项,在这里记录一下Windows相关的题目.有些答不上的问题就没列出来,还有些问题忘了,下面的答案有些大部分是我自己的理解,有些是直接从网上copy的,有问题大家可以讨论. 1:GetMessage和PeekMessage的区别? GetMessage:获取消息队列中的一个消息,存入MSG中,并从消息队列中

sendmessage-C# postmessage 键盘消息问题

问题描述 C# postmessage 键盘消息问题 SendMessage(s, CommonConst.WM_LBUTTONDBLCLK, IntPtr.Zero, IntPtr.Zero); PostMessage(s, CommonConst.WM_SYSKEYDOWN, CommonConst.VK_NUMPAD1, 0); 这是两条发消息的代码.s是我定义的获取的记事本的edit的句柄.但第一条sendmessage能够成功执行,第二条postmessage 却没有反应,请问各位大神

消息处理-Win32消息,子窗口如何接受WM_KEYDOWN消息

问题描述 Win32消息,子窗口如何接受WM_KEYDOWN消息 我有一个主窗口,里面创建了一个子窗口.所有的操作其实都是为了对子窗口里的图片进行处理.但是一些控件如Button等放在主窗口.现在我想要这个子窗口处理我的PAGEUP和PAGEDOWN键盘消息,但是在主窗口的消息处理函数中可以接收到WM_KEYDOWN消息,而在子窗口中却不能接收到.我知道可以通过主窗口主动POST消息给子窗口实现,但是我想知道能不能直接在子窗口里接收消息.比如,主窗口放弃处理这个消息,并传递给子窗口.我对Wind

C#向无窗口的进程发送消息_C#教程

注:本文适用.net2.0+的winform程序 一个winform程序,我希望它不能多开,那么在用户启动第二个实例的时候,作为第二个实例来说,大概可以有这么几种做法: 1.弹个窗告知用户[程序已运行]之类,用户点击弹窗后,退出自身 2.什么都不做,默默退出自身 3.让已运行的第一个实例把它的窗体显示出来,完了退出自身 显然第3种做法更地道,实现该效果的核心问题其实是:如何显示指定进程的窗口? 首先想到的是调用ShowWindow.SetForegroundWindow等API,配合使用可以将被

汇编语言学习笔记-接收键盘消息

代码 .386.model flat,stdcall;内存平坦,参数传递约定option casemap:none;大小写敏感 ;;;;;;引用一些必要的数据include D:\masm32\include\windows.incinclude D:\masm32\include\user32.incinclude \masm32\include\gdi32.inc includelib D:\masm32\lib\user32.libinclude D:\masm32\include\ker

ios5 中文键盘高度变高覆盖现有ui问题的解决方案(获取键盘高度的方法)

背景: ios5之前,iphone上的键盘的高度是固定为216.0px高的,中文汉字的选择框是悬浮的,所以不少应用都将此高度来标注键盘的高度(包括米聊也是这么做的). 可是在ios5中,键盘布局变了,尤其是中文输入时,中文汉字选择框就固定在键盘上方,这样就使得原本与键盘紧密贴合的界面视图被中文汉字选择框给覆盖住了.一方面影响了界面的美观,另一方面,如果被覆盖的部分就是文本输入框的话,用户就无法看到输入的内容了.因此这个问题就必须得解决了. 解决方法: 其实在一开始使用216.0px这个固定值来标

用ImessageFilter接口实现截获键盘消息

用ImessageFilter接口实现截获键盘消息 屠恩海(sunhai) IMessageFilter 接口 IMessageFilter 接口允许应用程序在消息被调度到控件或窗体之前捕获它. 可以将实现 IMessageFilter 接口的类添加到应用程序的消息泵中,以在消息被调度到控件或窗体之前将 它筛选出来或执行其他操作.若要将消息筛选器添加到应用程序的消息泵中,请使用 Application 类中的 AddMessageFilter 方法. Application.AddMessage

在SQL Server的try...catch语句中获取错误消息代码的的语句

本文为大家详细介绍下如何在SQL Server的try...catch语句中获取错误消息的代码,具体示例如下,感兴趣的朋友可以参考下哈,希望对大家有所帮助   复制代码 代码如下: BEGIN TRY ... ... END TRY BEGIN CATCH DECLARE @ErrorMessage NVARCHAR(4000); DECLARE @ErrorSeverity INT; DECLARE @ErrorState INT; SELECT @ErrorMessage = ERROR_M