首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Windows API编程

Windows API编程
EN

Stack Overflow用户
提问于 2010-05-02 00:17:06
回答 3查看 709关注 0票数 1

是我Vijay..

我试着在运行游戏时在屏幕上制作一个CrossHair(某种光标)...

所以我做了这个..。

代码语言:javascript
复制
#############################

#include<iostream.h>

#include<windows.h>

#include<conio.h>

#include<dos.h>

#include<stdlib.h>

#include<process.h>

#include <time.h>

int main()

{

HANDLE hl = OpenProcess(PROCESS_ALL_ACCESS,TRUE,pid); //其中pid是游戏的进程ID ...

HDC hDC = GetDC(NULL); //在这里我为整个屏幕传递了NULL ...

HBRUSH hb=CreateSolidBrush(RGB(0,255,255)); SelectObject(hDC,hb); POINT p; while(!kbhit())

代码语言:javascript
复制
 {

int x=1360/2,y=768/2;

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

LineTo(hDC,x+20,y);

代码语言:javascript
复制
       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;

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

它在桌面上工作,我看到crosshair...but,我的问题是,当我运行game...the cross时,这里消失了……

所以我想我没有处理好游戏的过程。

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

但是GetDC只接受HWND(窗口句柄)...

所以我把它排成这样...

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

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

但它没有work...Whats错误的代码...

请告诉我如何在进程或游戏的屏幕上创建一个简单的形状。

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

EN

回答 3

Stack Overflow用户

发布于 2010-05-02 00:21:36

你所做的就是试图与游戏挂钩,这本身就是一项壮举。

我不确定Counter-Strike运行的是OpenGL还是DirectX (可能取决于您的版本,我在两个版本中都看到过对它的引用),但最好的方法是包装整个OpenGL/DirectX上下文/设备和进程命令。然后,您可以在将每个帧发送到屏幕之前,使用光标绘制一个四元组或三元组。

这之前已经做过很多次了,无论是对于合法的应用程序(Morrowind Graphics Extender和NWShader)还是作弊程序(wallhacks等等)。谷歌有很多关于包装游戏的基本技巧。

编辑:,你可能不能通过获取上下文来完成,因为你需要使用3DAPI(或者它的2d部分)来绘制游戏。很有可能你必须创建一个替代OpenGL32.dll或d3d8/d3d9.dll文件,专门适合这个游戏和你想要做的事情。包装整个东西,无论是OpenGL还是D3D,都需要一些时间,所以您可能需要查找已经完成此操作的代码。你需要知道你包装的是什么,以及游戏是如何工作的,所以像GLIntercept或PIX这样的程序将会有相当大的帮助。

票数 3
EN

Stack Overflow用户

发布于 2010-05-02 02:19:39

好了,别说了。马上停下来。Valve对人们沉迷于他们的在线游戏非常恼火,因为它允许使用诸如wallhack之类的作弊手段。因此,他们使得实际做这样的事情变得困难,你甚至可能会因为尝试这样做而被禁止。

只需更改十字准线的纹理并使用它会容易得多-它将花费更少的时间,更容易做,并且不会让你被禁止。

注意:有一种技术可以让你用你自己的文件替换opengl32.dll (peachykeen提到的),这在反恐1.6中得到了广泛的应用。然而,Valve变得聪明起来,禁止了所有使用它的人。

票数 0
EN

Stack Overflow用户

发布于 2010-07-21 01:31:43

恐怕这不是那么容易实现的,Windows GDI不会为此工作,但它对于像Gunbound这样的2D游戏来说是完美的。

像《反恐精英》这样的电脑游戏使用3D图形应用程序接口来绘制图形,通常是OpenGL (如Mac的CS Source )或DirectX (Windows的CS Source )。这意味着你必须使用它们中的一个才能在游戏中画出你的十字准线。

出于教育目的,我建议阅读以下内容:http://www.associatepublisher.com/e/w/wa/wallhacking.htm

有一堆教程可以帮助你实现你想要的东西。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2750650

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档