Управление мышью (курсором) в DirectX приложениях (играх)
Добрый день!
Написал программку которая, по координатам премещает курсор.
Проблема следующая:
- На рабочем столе и и некоторых играх все работает, но в стрелялке (Warface) не работает, просто ноль реакции. Читал что если игра использует DirectInput, то у нее нет такого понятия как курсор, или просто игра занимает курсор, и он недоступен.
Подскажите что можно сделать чтобы курсор (в моем случае прицел) перемещался и в игре. (Такая программа уже есть, в ней все работает.)
Хочу написать программу чтобы по типу MacrosEffect, как OscarEditor для мышек X7 чтобы гасить отдачу на оружие.
Код:
unit _main;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes,
Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ComCtrls,
Vcl.ExtCtrls;
const
KEY_ID = 123456;
type
TForm1 = class(TForm)
Memo1: TMemo;
HotKey1: THotKey;
Label1: TLabel;
Button1: TButton;
Timer1: TTimer;
procedure Button1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Timer1Timer(Sender: TObject);
private
procedure WMHotKey(var Msg: TWMHotKey); message WM_HOTKEY;
{ Private declarations }
public
procedure Macros;
{ Public declarations }
end;
var
Form1: TForm1;
TrackingMacros: Boolean = False;
implementation
{$R *.dfm}
procedure TForm1.WMHotKey(var Msg: TWMHotKey);
begin
//ВКЛ
if (Msg.HotKey = KEY_ID) then
if TrackingMacros = False then
begin
TrackingMacros := True;
Timer1.Enabled := True;
end
else
begin
TrackingMacros := False;
Timer1.Enabled := False;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
RegisterHotKey(Self.Handle, KEY_ID, 0, HotKey1.HotKey);
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
UnRegisterHotKey(Handle, KEY_ID);
end;
procedure TForm1.Macros;
var
i, j: Integer;
T_, _T: Integer;
buf: string;
x_buf, y_buf, delay_buf: string;
x, y, delay: Integer;
foo: TPoint;
begin
GetCursorPos(foo);
for i := 0 to Form1.Memo1.Lines.Count - 1 do
begin
GetCursorPos(foo);
x_buf := '';
y_buf := '';
delay_buf := '';
buf := Form1.Memo1.Lines[i];
if Pos('MoveR', buf) > 0 then
begin
T_ := Pos(' ', buf);
Delete(buf, 1, T_);
_T := T_ + Pos(' ', buf);
for j := T_ to _T do
x_buf := x_buf + Form1.Memo1.Lines[i][j];
x := StrToInt(Trim(x_buf));
for j := _T to Length(Form1.Memo1.Lines[i]) do
y_buf := y_buf + Form1.Memo1.Lines[i][j];
y := StrToInt(Trim(y_buf));
SetCursorPos(foo.X + x, foo.Y + y);
end;
if Pos('Delay', buf) > 0 then
begin
T_ := Pos(' ', buf);
Delete(buf, 1, T_);
_T := T_ + Pos(' ', buf);
for j := T_ to _T do
delay_buf := delay_buf + Form1.Memo1.Lines[i][j];
delay := StrToInt(Trim(delay_buf));
if delay < 3000 then
Sleep(delay);
end;
end;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Form1.Caption := IntToStr(GetKeyState(01));
if GetKeyState(01) < 0 then //Если < 0 то нажата, если 0 или 1 то отпущена.
Macros;
// Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_MOVE, Screen.Width div 2, Screen.Height div 2, 0, 0);
end;
end.
РЕШЕНИЕ
Передаем в функцию значения на которое хотим сместить курсор (прицел)
Re: Управление мышью (курсором) в DirectX приложениях (играх)
в варфейсе установлен античит который блокирует эмуляцию клавиатуру.
________________ Продаю приват читы для AION Absolute, desteny 3.5, Legend, Cataclysm, Ru, EU, NA Продаю многооконку на R2 Пишу читы на заказ под любые игры. Предложения в ЛС. Все мои читы/программы/статьи тут:http://zhyk.ru/forum/showpost.php?p=38501&postcount=21
Re: Управление мышью (курсором) в DirectX приложениях (играх)
Есть программа [Ссылки могут видеть только зарегистрированные пользователи. ] - она делает то что мне нужно, но очень неудобная.
Нашел решение [Ссылки могут видеть только зарегистрированные пользователи. ], но не знаю как это сделать на Delphi...
Пробовал распаковать (чтобы попробовать дописать код), но при компиляции какая-то ошибка.. в С# вообще не шарю...
Может кто знает как реализовать на Delphi?
РЕШЕНИЕ В ПЕРВОМ ПОСТЕ
Последний раз редактировалось den57; 20.08.2019 в 00:56.
Re: Управление мышью (курсором) в DirectX приложениях (играх)
Цитата:
Сообщение от den57
Есть программа [Ссылки могут видеть только зарегистрированные пользователи. ] - она делает то что мне нужно, но очень неудобная.
Нашел решение [Ссылки могут видеть только зарегистрированные пользователи. ], но не знаю как это сделать на Delphi...
Пробовал распаковать (чтобы попробовать дописать код), но при компиляции какая-то ошибка.. в С# вообще не шарю...
Может кто знает как реализовать на Delphi?
РЕШЕНИЕ В ПЕРВОМ ПОСТЕ
Судя по всему ты и в делфи не шаришь. По той ссылке в примере от силы 5 строчек кода, там не надо шарить в сишарпе что бы немного погуглив перевести этот код на делфи.
________________ Продаю приват читы для AION Absolute, desteny 3.5, Legend, Cataclysm, Ru, EU, NA Продаю многооконку на R2 Пишу читы на заказ под любые игры. Предложения в ЛС. Все мои читы/программы/статьи тут:http://zhyk.ru/forum/showpost.php?p=38501&postcount=21
Re: Управление мышью (курсором) в DirectX приложениях (играх)
Цитата:
Сообщение от Тигрь
Судя по всему ты и в делфи не шаришь. По той ссылке в примере от силы 5 строчек кода, там не надо шарить в сишарпе что бы немного погуглив перевести этот код на делфи.
Понтоваться иди на улицу, я просил помощи, и как видешь, решение нашел, перевел этот код, если б ты шарил больше чем я наверно бы помог, а раз так же не шаришь остается только поязвить.
Цитата:
Сообщение от ScythLab
Херовый там античит, если такое не палит)
Античит палит подключение к процессу. Я про него знаю, поэтому нужно было добиться управления мыши (не подключаясь к игре) в приложении которое использует DirectInput. Простые методы работали во многих играх, и на рабочем столе, а в Warface не работали. Только SendInput работает везде.
Последний раз редактировалось den57; 20.08.2019 в 13:46.
Re: Управление мышью (курсором) в DirectX приложениях (играх)
Цитата:
Сообщение от den57
Античит палит подключение к процессу
не знаю что ты под этим подразумеваешь, но не суть важно, главное что ты это обошел
Цитата:
Только SendInput работает везде
Программно можно определить пришло ли событие от хардварной мышки или же было отправлено через SendInput. Есть варианты обхода такой защиты, но в этом античите не удосужились сделать даже элементарной проверки, поэтому и херовый.
________________
ScythBot: [Ссылки могут видеть только зарегистрированные пользователи. ].
Не забываем кликать "Спасибо", вам бесплатно, а мне приятно