草庐IT

EVT_CHAR_HOOK

全部标签

c++ - Windows 中的 WH_JOURNALRECORD Hook (C++) - 从未调用过回调。

在过去的几个小时里,以下代码一直给我带来一些麻烦。我正在尝试编写一个小程序(基于网络上的一些教程),它使用WH_JOURNALRECORD窗口Hook来记录击键。主要代码:#include"StdAfx.h"#include#include#includeusingstd::cout;usingstd::endl;int_tmain(intargc,_TCHAR*argv[]){HINSTANCEhinst=LoadLibrary(_T("testdll3.dll"));typedefvoid(*Install)();typedefvoid(*Uninstall)();Installi

windows - 注册一个全局钩子(Hook)来检测鼠标是否拖动文件/文本

我知道有可能registerglobalhooksformouse移动、按钮点击、滚动等,但我想知道是否有任何方法可以检测用户是否真的在使用全局Hook拖动文件或文本(或其他一些内容)。似乎找不到任何东西。 最佳答案 它不由Windows消息处理,即使需要消息循环才能使其工作。经典COM要求。从RegisterDragDrop()开始阅读以查看管道。值得注意的是,UAC的UIPI方面会妨碍您,您不能从非提升的进程D+D到提升的进程。ChangeWindowsMessageFilter()是通常的解决方法,它不适用于D+D。没有已知的

c++ - 我可以使用全局系统 Hook 来捕获单击的文件吗?

我是Windows编程的新手,主要完成Java(JavaSE、JavaME、Android、JavaEE),所以要详细而温和。我想捕获“在窗口中单击的文件/路径的名称,就像单击桌面上的文件一样”?进一步研究http://www.codeproject.com/Articles/6362/Global-System-Hooks-in-NET,这是一个使用全局系统Hook的小型c#/c++不错的应用程序,用于捕获坐标、点击等鼠标事件。那么捕获文件图标事件的正确API或全局系统Hook是什么? 最佳答案 没有单一的API可以提供该级别的详

c++ - Windows API 钩子(Hook) C++

我正在学习为WindowsAPI编写Hook,为了练习,我正在为pDeleteFileA函数编写Hook。当调用该函数时,在删除文件之前我想检查文件名是否为“testfile.txt”,如果是,则不会删除它,而是会弹出一条消息,如果它调用了其他内容,则继续删除文件。我已经编写了一些代码并且代码编译没有任何错误,但是当我尝试删除“testfile.txt”时,它只是被删除了。也许有人可以给我提示我做错了什么或没有做什么?到目前为止,这是我的代码:#includestructhook_t{//adatatypetostoreinformationaboutourhookboolisHook

c++ - 安装了全局 Hook 后,我如何知道窗口何时开始移动以及何时停止移动?

有没有简单的方法来解决这个问题?我想我可以使用WM_MOVE通过保持计时器来告诉我它何时开始。如果窗口在最后2秒内没有收到WM_MOVE消息,那么我就知道它刚刚开始移动。然后我又设置了一个定时器,等待他们在一段时间内(2秒)没有消息。如果什么都没有收到,那么我可以确信窗口移动已经完成。这是解决这个问题的正确方法吗? 最佳答案 如果您可以看到WM_MOVE消息,那么您也可以看到WM_ENTERSIZEMOVE和WM_EXITSIZEMOVE消息。 关于c++-安装了全局Hook后,我如何知

c++ - 如何从 IStream 读取到一个 char 数组并将其写入另一个 IStream?

我试图通过套接字连接发送图像,但我遇到了以下代码的问题://streamtochararraySTATSTGmyStreamStats;ULONGbytesSaved;myStream->Stat(&myStreamStats,0);char*streamData=newchar[myStreamStats.cbSize.QuadPart];if(myStream->Read(streamData,myStreamStats.cbSize.QuadPart,&bytesSaved)==S_OK)coutWrite(streamData,myStreamStats.cbSize.Quad

c++ - Windows 函数中的 char* 或 LPCWSTR

我遵循了有关创建Windows的教程-使用标准windows.hheader的窗口。WNDCLASSEXwc;...ec.lpszClassName=applicationName;起初编译时,applicationName是一个char*并且一切正常,但现在我需要重新创建项目(顺便说一下MSVC++),并且在我尝试编译它时,它需要是一个LPCWSTR。我偶然发现了很多,想知道为什么它有时接受char*而有时不接受!?我的项目设置中是否遗漏了什么?顺便说一句:同样的事情发生在D3DX11CreateShaderResourceViewFromFile(d3ddevice,filenam

将十六进制字符串转换为 unsigned char[]

我想将一个字符串,例如“00-00-CA-FE-BA-BE”转换为unsignedcharch[6]数组。我曾尝试使用sscanf,但无论出于何种原因,它都会因变量macAddress后的堆栈损坏而崩溃。我猜格式说明符有问题,但我似乎没弄对。#include#includecharstring1[]="00-00-CA-FE-BA-BE";charseps[]="-";char*token1=NULL;char*next_token1=NULL;intmain(void){unsignedcharmacAddress[6];unsignedcharch;intidx=0;printf(

c# - 系统范围的 Windows CBT Hook 无法正常工作

我正在尝试在Windows操作系统上挂接CBTHook。我目前使用的是Windows7x64。我看过很多帖子讨论这个问题,但没有一个能解决我的问题。应用程序运行良好;Hook已安装,我可以看到一些通知。实际上出现的问题是应用程序没有收到关于同一台机器上运行的其他进程的CBT钩子(Hook)的通知。该应用程序是用C#编写的(使用Microsoft.NET)。这是一个正在运行的示例:usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Diagnostics;usingSyste

windows - 为什么此 QString 到 const char* 的转换会在 Windows 上生成 Debian 标识符?

我试图在Qt中包装libssh2,并具有以下代码:constchar*username=inUsername.toLocal8Bit().data();constchar*password=inPass.toLocal8Bit().data();问题是用户名和密码没有连接到系统。为什么?因为根据调试器,username"5.1p1Debian-6ubuntu2"password"5.1p1Debian-6ubuntu2"这些不是我为用户名或密码提供的值。我试过toAscii、toLatin1和附加(或不附加).data()。尽管如此,我还是得到了这些值,而不是预期值。我在Windows