Windows API编程

标签 windows winapi api hook

我是维杰..

我正在尝试在运行游戏(反恐精英)时在屏幕上制作十字准线(某种光标)...

所以我这样做了...

#############################

#include<iostream.h>
#include<windows.h>
#include<conio.h>
#include<dos.h>
#include<stdlib.h>
#include<process.h>
#include <time.h>
主函数
{
HANDLE hl = OpenProcess(PROCESS_ALL_ACCESS,TRUE,pid); //这里pid是Game的进程ID...
HDC hDC = GetDC(NULL); //这里我为整个屏幕传递了 NULL...
HBRUSH hb=CreateSolidBrush(RGB(0,255,255)); SelectObject(hDC,hb); POINT p; while(!kbhit())
{
int x=1360/2,y=768/2;
MoveToEx(hDC,x-20,y,&p);
LineTo(hDC,x+20,y);

       SetPixel(hDC,x,y,RGB(255,0,0));
       SetPixel(hDC,x-1,y-1,RGB(255,0,0));
       SetPixel(hDC,x-1,y+1,RGB(255,0,0));
       SetPixel(hDC,x+1,y+1,RGB(255,0,0));
       SetPixel(hDC,x+1,y-1,RGB(255,0,0));

       MoveToEx(hDC,x,y-20,&p);

       LineTo(hDC,x,y+20);                         
}

cin.get();
return 0;

} ####################################

它工作正常......在桌面上我看到十字线......但我的问题是当我运行游戏时......这里的十字消失了......

所以我认为我没有处理游戏的过程......

所以我将 HANDLE 传递给 GetDC(hl)...

但是 GetDC 只接受 HWND(Handle To Window)...

所以我这样打字...

HWND hl = (HWND)OpenProcess(PROCESS_ALL_ACCESS,TRUE,pid);

并将 hl 传递给 GetDC(hl)...

但是它不起作用...代码有什么问题...

请告诉我如何在进程或游戏的屏幕上制作一个简单的形状...

PS : (我的编译器是 DevCPP 和 OS WinXP SP3....)

最佳答案

您正在做的是尝试融入游戏,这本身就是一项壮举。

我不确定 Counter-Strike 是否运行 OpenGL 或 DirectX(可能取决于您的版本,我已经看到使用两者的引用),但您最好的选择是包装整个 OpenGL/DirectX 上下文/设备和处理命令。然后,您可以在将每一帧发送到屏幕之前用光标绘制一个四边形或三 strip 。

这已经做过很多次了,包括合法应用程序(Morrowind Graphics Extender 和 NWShader)和作弊程序(wallhacks 等)。 Google 在包装游戏的基础知识方面提供了大量提示。

编辑:您可能无法通过获取上下文来完成此操作,因为您需要使用 3d API(或它)。很可能您必须创建一个替代的 OpenGL32.dll 或 d3d8/d3d9.dll 文件,专门适合该游戏和您想要执行的操作。包装整个东西,无论是 OpenGL 还是 D3D,都需要一些时间,因此您可能希望四处寻找已经完成它的代码。您将需要知道要包装的内容以及游戏的运行方式,因此 GLIntercept 或 PIX 等程序会有很大帮助。

关于Windows API编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2750650/

相关文章:

c++ - 如何将 WebKit 嵌入到我的 C/C++/Win32 应用程序中?

c++ - GetCurrentThreadId 返回不同的 threadId

android - 有没有办法检查我的应用程序对较低级别的 API 兼容性?

php - 如何在自己的网站上显示Google Analytic仪表板

api - 如何在 flutter 中向 API 服务器发送请求 POST 消息?

python - 在特定核心上使用 python 启动程序

windows - 无法使用 pkcs12 文件连接到 RabbitMq Broker

windows - 为什么在 git bash 中创建的文件在 Windows 资源管理器中不可见?

windows - Imagemagick -subimage-search 命令挂起

C# 检查是否按下了多个键(全局键盘 Hook )