Регистрация Главная Пользователи Все разделы прочитаны
Сообщения за день Справка Регистрация
Навигация
Zhyk.Ru LIVE! Реклама на Zhyk.Ru Доска почета top.zhyk.ru (beta) Премиум-аккаунт

Ответ
 
Опции темы Опции просмотра
Старый 19.08.2019, 00:05   #1
 Разведчик
Аватар для den57
 
den57 никому не известный тип
Регистрация: 24.11.2010
Сообщений: 12
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 2 раз(а) в 2 сообщениях
 
По умолчанию Управление мышью (курсором) в 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.
РЕШЕНИЕ

Передаем в функцию значения на которое хотим сместить курсор (прицел)

Код:
procedure SendInputMouse(x, y: Integer);
var
    arrI: array[0..0] of TInput;
    MI: TMouseInput;
begin
    ZeroMemory(@arrI, SizeOf(TInput) * 1);

    arrI[0].Itype := INPUT_MOUSE;
    arrI[0].MI.dwFlags := MOUSEEVENTF_MOVE;
    arrI[0].MI.dx := x;
    arrI[0].MI.dy := y;

    SendInput(1, arrI[0], SizeOf(TInput));
end;

Последний раз редактировалось den57; 20.08.2019 в 00:55.
  Ответить с цитированием
Старый 19.08.2019, 07:50   #2
Super Moderator
 Командор
Аватар для Тигрь
 
Тигрь сломал счётчик популярности :(Тигрь сломал счётчик популярности :(Тигрь сломал счётчик популярности :(Тигрь сломал счётчик популярности :(Тигрь сломал счётчик популярности :(Тигрь сломал счётчик популярности :(Тигрь сломал счётчик популярности :(Тигрь сломал счётчик популярности :(Тигрь сломал счётчик популярности :(Тигрь сломал счётчик популярности :(Тигрь сломал счётчик популярности :(
Регистрация: 05.05.2009
Сообщений: 833
Популярность: 47588
Золото Zhyk.Ru: 850
Сказал(а) спасибо: 149
Поблагодарили 739 раз(а) в 274 сообщениях
 
По умолчанию Re: Управление мышью (курсором) в DirectX приложениях (играх)

в варфейсе установлен античит который блокирует эмуляцию клавиатуру.
________________
Продаю приват читы для AION Absolute, desteny 3.5, Legend, Cataclysm, Ru, EU, NA
Продаю многооконку на R2 Пишу читы на заказ под любые игры. Предложения в ЛС.
Все мои читы/программы/статьи тут: http://zhyk.ru/forum/showpost.php?p=38501&postcount=21
  Ответить с цитированием
Старый 19.08.2019, 21:35   #3
 Разведчик
Аватар для den57
 
den57 никому не известный тип
Регистрация: 24.11.2010
Сообщений: 12
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 2 раз(а) в 2 сообщениях
 
По умолчанию Re: Управление мышью (курсором) в DirectX приложениях (играх)

Есть программа [Ссылки могут видеть только зарегистрированные пользователи. ] - она делает то что мне нужно, но очень неудобная.
Нашел решение [Ссылки могут видеть только зарегистрированные пользователи. ], но не знаю как это сделать на Delphi...
Пробовал распаковать (чтобы попробовать дописать код), но при компиляции какая-то ошибка.. в С# вообще не шарю...
Может кто знает как реализовать на Delphi?

РЕШЕНИЕ В ПЕРВОМ ПОСТЕ

Последний раз редактировалось den57; 20.08.2019 в 00:56.
  Ответить с цитированием
Старый 20.08.2019, 02:04   #4
 Старший сержант
Аватар для ScythLab
 
ScythLab гордость нацииScythLab гордость нацииScythLab гордость нацииScythLab гордость нацииScythLab гордость нацииScythLab гордость нацииScythLab гордость нацииScythLab гордость нацииScythLab гордость нацииScythLab гордость нацииScythLab гордость нации
Регистрация: 24.10.2014
Сообщений: 207
Популярность: 2780
Сказал(а) спасибо: 17
Поблагодарили 22 раз(а) в 16 сообщениях
 
По умолчанию Re: Управление мышью (курсором) в DirectX приложениях (играх)

Херовый там античит, если такое не палит)
________________
ScythBot: [Ссылки могут видеть только зарегистрированные пользователи. ].
Не забываем кликать "Спасибо", вам бесплатно, а мне приятно
  Ответить с цитированием
Старый 20.08.2019, 05:39   #5
Super Moderator
 Командор
Аватар для Тигрь
 
Тигрь сломал счётчик популярности :(Тигрь сломал счётчик популярности :(Тигрь сломал счётчик популярности :(Тигрь сломал счётчик популярности :(Тигрь сломал счётчик популярности :(Тигрь сломал счётчик популярности :(Тигрь сломал счётчик популярности :(Тигрь сломал счётчик популярности :(Тигрь сломал счётчик популярности :(Тигрь сломал счётчик популярности :(Тигрь сломал счётчик популярности :(
Регистрация: 05.05.2009
Сообщений: 833
Популярность: 47588
Золото Zhyk.Ru: 850
Сказал(а) спасибо: 149
Поблагодарили 739 раз(а) в 274 сообщениях
 
По умолчанию 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
  Ответить с цитированием
Старый 20.08.2019, 13:40   #6
 Разведчик
Аватар для den57
 
den57 никому не известный тип
Регистрация: 24.11.2010
Сообщений: 12
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 2 раз(а) в 2 сообщениях
 
По умолчанию Re: Управление мышью (курсором) в DirectX приложениях (играх)

Цитата:
Сообщение от ТигрьПосмотреть сообщение
Судя по всему ты и в делфи не шаришь. По той ссылке в примере от силы 5 строчек кода, там не надо шарить в сишарпе что бы немного погуглив перевести этот код на делфи.

Понтоваться иди на улицу, я просил помощи, и как видешь, решение нашел, перевел этот код, если б ты шарил больше чем я наверно бы помог, а раз так же не шаришь остается только поязвить.

Цитата:
Сообщение от ScythLabПосмотреть сообщение
Херовый там античит, если такое не палит)

Античит палит подключение к процессу. Я про него знаю, поэтому нужно было добиться управления мыши (не подключаясь к игре) в приложении которое использует DirectInput. Простые методы работали во многих играх, и на рабочем столе, а в Warface не работали. Только SendInput работает везде.

Последний раз редактировалось den57; 20.08.2019 в 13:46.
  Ответить с цитированием
Старый 22.08.2019, 21:19   #7
 Старший сержант
Аватар для ScythLab
 
ScythLab гордость нацииScythLab гордость нацииScythLab гордость нацииScythLab гордость нацииScythLab гордость нацииScythLab гордость нацииScythLab гордость нацииScythLab гордость нацииScythLab гордость нацииScythLab гордость нацииScythLab гордость нации
Регистрация: 24.10.2014
Сообщений: 207
Популярность: 2780
Сказал(а) спасибо: 17
Поблагодарили 22 раз(а) в 16 сообщениях
 
По умолчанию Re: Управление мышью (курсором) в DirectX приложениях (играх)

Цитата:
Сообщение от den57Посмотреть сообщение
Античит палит подключение к процессу

не знаю что ты под этим подразумеваешь, но не суть важно, главное что ты это обошел
Цитата:
Только SendInput работает везде

Программно можно определить пришло ли событие от хардварной мышки или же было отправлено через SendInput. Есть варианты обхода такой защиты, но в этом античите не удосужились сделать даже элементарной проверки, поэтому и херовый.
________________
ScythBot: [Ссылки могут видеть только зарегистрированные пользователи. ].
Не забываем кликать "Спасибо", вам бесплатно, а мне приятно
  Ответить с цитированием
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Продам] Продаю способ накрутки игровой валюты в играх и приложениях Google Play. Hardvaer Товары/услуги в Сети 2 10.12.2016 17:10
[Статья] Мобильный заработок на играх и приложениях New|2012|Like SPAM 0 12.02.2016 00:44
[Программа] Плавающая картинка за курсором. [ПРИМЕР] kazak555 Pascal/Delphi 0 23.08.2013 17:42
[Помогите!] Как сделать управление меню мышью? Igroman28 Общение разработчиков 2 10.08.2012 22:34
[Подсказка] корабль летит за курсором и кнопку держать необязательно Mach nambe Dark Orbit 7 16.07.2010 12:12

www.webmoney.ru
Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 16:40.

Пишите нам: [email protected]
Copyright © 2021 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net