我的Vijay ..
我试图做一个CrossHair(某种游标)在屏幕上运行游戏(反恐精英)…
所以我做了这个…
#############################
#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是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;
} ####################################
它工作正常….在桌面上,我看到十字线…但我的问题是,当我运行游戏…十字架在这里得到消失….
所以我想我没有处理游戏的过程…
所以我把句柄传给GetDC(hl)…
但是GetDC只取HWND(Handle To Window)…
所以我把它像这样…
HWND hl =(HWND)OpenProcess(PROCESS_ALL_ACCESS,TRUE,pid);
并将hl传递给GetDC(hl)…
但它不工作…什么是错的代码…
PLZ告诉我,我怎么做一个简单的形状在屏幕上的过程或游戏…
PS :(我的编译器是DevCPP和OS WinXP SP3 ….)
你正在做的是试图把一个游戏,这本身就是一个壮举。
我不确定Counter-Strike是否运行OpenGL或DirectX(可能取决于你的版本,我已经看到了它的引用),但最好的办法是包装整个OpenGL / DirectX上下文/设备和处理命令。 然后,您可以在将每个帧发送到屏幕之前用光标绘制四边形或三角形。
这已经做了很多次,既合法的应用程序(Morrowind图形扩展和NWShader)和作弊(wallhacks等)。 Google有很多关于包装游戏的基础知识。
编辑:你可能无法通过抓取上下文来完成,因为你需要使用3d API(或者它的2D部分)来绘制游戏。 机会是你将不得不创建一个替代的OpenGL32.dll或d3d8 / d3d9.dll文件,特别适合这个游戏,你想做什么。 包装整个事情,不管是OpenGL还是D3D,都需要一些时间,所以你可能想要四处寻找代码。 你将需要知道你在包装什么,以及游戏是如何工作的,所以像GLIntercept或PIX这样的程序将会有所帮助。
好,停下来 现在停下来 Valve对于网络游戏的吸引力非常强,因为它允许使用诸如wallhacks等作弊手段。 因此,他们难以做到这样的事情,你甚至可能会被禁止甚至试图这样做。
只要改变一个十字准线的纹理并使用它就会容易得多 – 这将花费更少的时间,更容易做,不会被禁止。
注意:有一种技术可以用你自己的文件替代opengl32.dll(被peachykeen所暗示),这个技巧被广泛用于反恐精英1.6。 但是,Valve明智地禁止了所有使用它的人。
恐怕这并不是那么简单,Windows GDI不会为此工作,但它非常适合像Gunbound这样的2D游戏。
计算机游戏如Counter-Strike使用3D图形API来绘制图形,通常是OpenGL(例如用于Mac OS X的CS Source)或DirectX(用于Windows的CS Source)。 这意味着你必须使用其中的一个才能在游戏中绘制十字准线。
为了教育目的,我建议阅读: http : //www.associatepublisher.com/e/w/wa/wallhacking.htm
有一堆教程可以帮助你实现你在找什么。