草庐IT

c++ - 在 64 位 Windows 中 Hook 32 位进程

我在window764位上使用键盘钩子(Hook)时遇到问题。我做这些事情:1.创建一个32位的dll2.加载到应用程序并设置WindowHookEx我已经成功连接到32位应用程序(Y!M、Skype...),但是当我连接到我的桌面或任何64位应用程序(记事本)时,该应用程序会卡住,直到我停止我的连接应用程序。我创建64位dll,在上面做同样的事情,并在32位进程中遇到同样的问题。所以,我认为问题出在我的32位dll中,无法注入(inject)到64位进程中。但是我不知道如何在窗口关注它时注入(inject)64位dll来处理。我想知道有什么方法可以做到,以及如何去做。或者我可以只Ho

c++ - 如何创建跨平台窗口处理程序?

我可能不会搜索正确的术语,但我会尝试解释我正在寻找的内容(可能很常见)。在Windows中创建一个窗口你通常会经过WinMain(),但并非所有平台(Linux、OSX等)都使用此函数作为程序的入口点。虽然我知道那里有很多库,但出于教育原因我对实现更好奇,而不是寻找第3方库来为我处理这个问题。这个实现我敢肯定是巨大的,但我很好奇在更抽象的层面上,你会如何编写你的入口点来处理多个平台上的窗口创建。 最佳答案 I'mcuriousonamoreabstractlevel,howwouldyouwriteyourentrypointtob

c++ - 在 ubuntu 中编译 vowpal-wabbit 以便在 windows 7 中使用

我有一台Windows7笔记本电脑,在同一台机器上安装了Ubuntu12.04。我正在尝试从源代码(VowPalWabbit)编译一个程序。我尝试使用Cygwin但没有成功。我最终安装了Ubuntu12.04以获得正常运行的编译器。它在Ubuntu端工作,但我很好奇是否有办法将编译后的文件带到Windows上,因为那是我实际做大部分工作的地方.更具体地说,用Ubuntu编译的程序可以在Windows机器上运行吗?有什么建议吗? 最佳答案 你应该看看MinGW:MinGW,acontractionof"MinimalistGNUfor

c++ - 如何获取流程描述?

我想在Windows中使用C++获取进程的描述(在任务管理器中看到的描述)。 最佳答案 您很可能想从程序的主要.exe文件的版本资源中获取FileDesription字段,使用VerQueryValue()API调用。这是该文档中的示例:ThefollowingexampleshowshowtoenumeratetheavailableversionlanguagesandretrievetheFileDescriptionstring-valueforeachlanguage.BesuretocalltheGetFileVersi

C++堆状态差异

有一个用C++编写的大项目。某些gui操作(单击按钮)分配2MB内存。这不是内存泄漏,当然内存稍后会被释放。但我需要调查分配了哪些对象以尝试减少内存分配大小。所以我尝试使用debugcrtOnBtnClick(){//breakpoint1_CrtMemStates1;_CrtMemCheckpoint(&s1);//Thelogicitself_CrtMemDumpAllObjectsSince(&s1);_CrtMemStates2;_CrtMemCheckpoint(&s2);_CrtMemStates3;if(_CrtMemDifference(&s3,&s1,&s2))_Cr

c++ - 使用 SendInput 函数模拟输入

下面的程序没有做任何事情,尽管预计会模拟每秒按“a”和“b”。为什么它不起作用?#include#includeusingnamespacestd;constintINPUTS=4;intmain(){INPUTinputArray[INPUTS];INPUTinput;input.type=INPUT_KEYBOARD;//Press'a'keyinput.ki.wVk=0x41;input.ki.wScan=MapVirtualKey(0x41,MAPVK_VK_TO_VSC);inputArray[0]=input;//Release'a'keyinput.ki.dwFlags=

c++ - 如何将 Windows SDK 添加到 Eclipse C 工具?

我使用面向Java开发人员的EclipseJuno,我想向其中添加C/C++功能。我下载了WindowsSDK并尝试创建HelloWorldC++项目。但似乎Eclipse没有看到WindowsSDK,所以我无法编译我的项目。 最佳答案 用微软编译器编译和构建一个C++项目是一些繁琐的工作。但是如果你已经安装了某个版本的windowssdk,就完成了将近一半的工作......好吧,我认为您不需要设置MS开发环境,它已经在您的路径中。我可以用eclipseneon版本向您展示这个过程。我还假设您通过市场安装了eclipsecdt。您应

c++ - 在 Release模式下调试 shell 扩展

我有一个在Release模式下构建的shell扩展,我还生成调试符号和.pdb文件。我将构建上下文菜单扩展.dll文件的visualstudio程序附加到正在运行的explorer.exe进程,当程序附加到explorer进程事件时,我可以在输出窗口中看到,如下所示:'explorer.exe':Unloaded'C:\Windows\System32\mydocs.dll''explorer.exe':Unloaded'C:\Windows\System32\sendmail.dll''explorer.exe':Unloaded'C:\Windows\System32\zipfld

c++ - 如何编写 C++ 控制台窗口程序

我想编写一个C++程序,以便根据配置文件可以是控制台应用程序或窗口应用程序。对于GUI,我使用的是WxWidget。我应该分别在Windows和Linux(Buntu)中做什么。有人可以提供一些简单的例子吗? 最佳答案 要在编译阶段执行此操作,使用条件编译很简单。您的配置文件将包含您想要的预处理器定义。例如#defineGUI或#defineCONSOLE然后在每个要编译的文件中包含配置文件#include"gui_or_console.h"最后,您使用条件编译告诉编译器要处理哪些代码#idfefGUI//someGUIcode#e

c++ - 如何检查用户是否是 Windows 7 中的管理员?

我找到了这个link在msdn中检查用户是否是管理员。当进程提升(以管理员身份运行)时,它在某些win7机器上工作正常,但我发现一些机器(一些win2008)无法正常工作!这是解决问题的正确方法吗??BOOLIsUserAdmin(VOID){BOOLb;SID_IDENTIFIER_AUTHORITYNtAuthority=SECURITY_NT_AUTHORITY;PSIDAdministratorsGroup;b=AllocateAndInitializeSid(&NtAuthority,2,SECURITY_BUILTIN_DOMAIN_RID,DOMAIN_ALIAS_RID