VB.Net
Código:
Public Shared Sub WriteLine(ByVal hDC As Integer, ByVal text As String)
TextOut(hDC, 5, (100 + (lineNum * 15)), text, text.Length)
lineNum += 1
End Sub
lineNum precisarão ser uma variável global. Agora, deixa edite nossa volta principal para atrair algo à tela, em cima de todas as aplicações de corrida. Usar GetDC para adquirir a manivela à tela global e não só uma janela que você passa para esta função 0 como é só parâmetro.
C#
Código:
static void Main()
{
http://Application.Run(new Form1());
Form1 form = new Form1();
form.Show();
while (form.Created)
{
int dc = (int)GetDC(0);
WriteLine(dc,"Drawing Test");
WriteLine(dc,"Line2");
WriteLine(dc,"Line3");
lineNum = 0;
Application.DoEvents();
Thread.Sleep(2);
}
}
VB.Net
Código:
Shared Sub Main()
'Application.Run(new Form1())
Dim form As Form1 = New Form1
form.Show
While form.Created
Dim dc As Integer = CType(GetDC(0), Integer)
WriteLine(dc, "Drawing Test")
WriteLine(dc, "Line2")
WriteLine(dc, "Line3")
lineNum = 0
Application.DoEvents
Thread.Sleep(2)
End While
End Sub
A última coisa que nós precisamos atrair à tela em variáveis. Isto pode ser realizado pelo seguinte.
C#
Código:
public static void WriteLine(int hDC, string text, object[] args)
{
WriteLine(hDC, string.Format(text, args));
}
VB.Net
Código:
Public Shared Sub WriteLine(ByVal hDC As Integer, ByVal text As String, ByVal args As Object())
WriteLine(hDC, String.Format(text, args))
End Sub
Nós usamos esta função criando uma ordem de objeto que segurará nossas variáveis e os formatará em um fio por como alqueives.
C#
Código:
object[] msgHolder = new Object[5];
msgHolder[0] = Cursor.Position.X;
msgHolder[1] = Cursor.Position.Y;
WriteLine(dc, "Mouse At {0}, {1}", msgHolder);
VB.Net
Código:
Dim msgHolder(5) As Object
msgHolder(0) = Cursor.Position.X
msgHolder(1) = Cursor.Position.Y
WriteLine(dc, "Mouse At {0}, {1}", msgHolder)
Pixels de Grabing da tela
Por este ponto deveria entender você por que e como nós usamos DLLImport. Como tal, eu vou agora para para que não as funções das que nós precisaremos para as seções seguintes. Eu não vou revisar cada destes.
C#
Código:
[DllImport("gdi32.dll")]
public static extern int CreateCompatibleDC(int hdc);
[DllImport("gdi32.dll")]
public static extern int CreateCompatibleBitmap(int hdc,int nWidth,int nHeight);
[DllImport("gdi32.dll")]
public static extern int SelectObject(int hdc,int hObject);
[DllImport("gdi32.dll")]
public static extern int SelectObject(int hdc,IntPtr hObject);
[DllImport("gdi32.dll")]
public static extern int BitBlt(int hDestDC,int X,int Y,int nWidth,int nHeight,int hSrcDC,int xSrc,int ySrc,int dwRop);
[DllImport("gdi32.dll")]
public static extern int DeleteDC(int hdc);
[DllImport("gdi32.dll")]
public static extern int DeleteObject(int hObject);
[DllImport("user32.dll")]
public static extern int ReleaseDC(int hWnd,int hdc);
VB.Net
Código:
<DllImport("gdi32.dll")> _
Public Shared Function CreateCompatibleDC(ByVal hdc As Integer) As Integer
End Function
<DllImport("gdi32.dll")> _
Public Shared Function CreateCompatibleBitmap(ByVal hdc As Integer, ByVal nWidth As Integer, ByVal nHeight As Integer) As Integer
End Function
<DllImport("gdi32.dll")> _
Public Shared Function SelectObject(ByVal hdc As Integer, ByVal hObject As Integer) As Integer
End Function
<DllImport("gdi32.dll")> _
Public Shared Function SelectObject(ByVal hdc As Integer, ByVal hObject As IntPtr) As Integer
End Function
<DllImport("gdi32.dll")> _
Public Shared Function BitBlt(ByVal hDestDC As Integer, ByVal X As Integer, ByVal Y As Integer, ByVal nWidth As Integer, ByVal nHeight As Integer, ByVal hSrcDC As Integer, ByVal xSrc As Integer, ByVal ySrc As Integer, ByVal dwRop As Integer) As Integer
End Function
<DllImport("gdi32.dll")> _
Public Shared Function DeleteDC(ByVal hdc As Integer) As Integer
End Function
<DllImport("gdi32.dll")> _
Public Shared Function DeleteObject(ByVal hObject As Integer) As Integer
End Function
<DllImport("user32.dll")> _
Public Shared Function ReleaseDC(ByVal hWnd As Integer, ByVal hdc As Integer) As Integer
End Function
Agora, nós estamos criando um aimbot pixel-baseado e como tal a função principal que nós precisamos poder executar está inspecionando a cor de pixels a tela. Há muitos tutorials que isso lhe mostrará como fazer isto lá fora; assim, eu não vou ir este linha-por-linha entretanto. Se você quer saber o que cada linha está fazendo....
www.google.com.C#
Código:
public static Color PixelColor(int x, int y)
{
int dc = GetDC(0);
int compDC = CreateCompatibleDC(dc);
int compBMP = CreateCompatibleBitmap(dc,1,1);
int obj = SelectObject(compDC, compBMP);
int image = BitBlt(compDC, 0, 0, 1, 1, dc, x, y, 13369376);
int imageObj = SelectObject(compDC, compBMP);
Bitmap bmp = Image.FromHbitmap((IntPtr)imageObj);
DeleteDC(compDC);
DeleteObject(compBMP);
ReleaseDC(0,dc);
return bmp.GetPixel(0,0);
}
VB.Net
Código:
Public Shared Function PixelColor(ByVal x As Integer, ByVal y As Integer) As Color
Dim dc As Integer = GetDC(0)
Dim compDC As Integer = CreateCompatibleDC(dc)
Dim compBMP As Integer = CreateCompatibleBitmap(dc, 1, 1)
Dim obj As Integer = SelectObject(compDC, compBMP)
Dim image As Integer = BitBlt(compDC, 0, 0, 1, 1, dc, x, y, 13369376)
Dim imageObj As Integer = SelectObject(compDC, compBMP)
Dim bmp As Bitmap = Image.FromHbitmap(CType(imageObj, IntPtr))
DeleteDC(compDC)
DeleteObject(compBMP)
ReleaseDC(0, dc)
Return bmp.GetPixel(0, 0)
End Function
Antes de eu entrasse em o que esta função está fazendo que eu gostaria de agradecer gpMaker por me ajudar aperfeiçoe esta chamada. Eu estava fazendo isto um pequeno diferentemente, mas depois que nós trocássemos algum código eu que acabo mudando o meu para ajustar o código dele e eu não olhei atrás.
Nós usaremos esta função para conferir a cor de qualquer determinado X e local de Y. Esta função copiará um pixel da tela para um Bitmap que é 1x1 pixel grande (ou pequeno se você quer olhar para isto que modo). Isto então copys isto para uma variável de Bitmap administrada e lucros a cor daquele pixel. Depois, quando nós precisamos esquadrinhar a tela para procurar os jogadores posição móvel que nós estaremos mudando este código a BitBlt uma porção muito maior da tela para consumir menos tempo de processador.
E último, Exibindo a cor do pixel debaixo do rato,
Agora deixa gravata junto tudo isso. Nós vamos editar nossa volta principal novamente. Este tempo nós vamos exibir a cor do pixel debaixo do rato. De fato, nós vamos exibir a cor do pixel a X - 4 e Y -4. Isto está devido ao fato que se nós usamos o rato X e Y que nós estaremos adquirindo a cor do cursor.
Seguir é nosso final editou versão de nossa volta principal.
C#
Código:
static void Main()
{
http://Application.Run(new Form1());
Form1 form = new Form1();
form.Show();
while (form.Created)
{
int dc = (int)GetDC(0);
WriteLine(dc,"Color Under Mouse");
object[] msgHolder = new Object[5];
msgHolder[0] = Cursor.Position.X -4;
msgHolder[1] = Cursor.Position.Y -4;
WriteLine(dc, "Mouse At {0}, {1}", msgHolder);
msgHolder[0] = PixelColor(Cursor.Position.X-4, Cursor.Position.Y-4);
WriteLine(dc, "{0}", msgHolder);
Application.DoEvents();
Thread.Sleep(2);
}
}
VB.Net
Código:
Shared Sub Main()
Dim form As Form1 = New Form1
form.Show
While form.Created
Dim dc As Integer = CType(GetDC(0), Integer)
WriteLine(dc, "Color Under Mouse")
Dim msgHolder(5) As Object
msgHolder(0) = Cursor.Position.X -4
msgHolder(1) = Cursor.Position.Y -4
WriteLine(dc, "Mouse At {0}, {1}", msgHolder)
msgHolder(0) = PixelColor(Cursor.Position.X -4, Cursor.Position.Y -4)
WriteLine(dc, "{0}", msgHolder)
Application.DoEvents
Thread.Sleep(2)
End While
End Sub