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

Ответ
 
Опции темы Опции просмотра
Старый 18.08.2019, 23:05   #1
 Разведчик
Аватар для den57
 
den57 никому не известный тип
Регистрация: 24.11.2010
Сообщений: 9
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
 
По умолчанию Управление мышью (курсором) в 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; 19.08.2019 в 23:55.
  Ответить с цитированием
Старый 19.08.2019, 06:50   #2
Младший Модератор
 Командор
Аватар для Тигрь
 
Тигрь сломал счётчик популярности :(Тигрь сломал счётчик популярности :(Тигрь сломал счётчик популярности :(Тигрь сломал счётчик популярности :(Тигрь сломал счётчик популярности :(Тигрь сломал счётчик популярности :(Тигрь сломал счётчик популярности :(Тигрь сломал счётчик популярности :(Тигрь сломал счётчик популярности :(Тигрь сломал счётчик популярности :(Тигрь сломал счётчик популярности :(
Регистрация: 05.05.2009
Сообщений: 760
Популярность: 43325
Золото Zhyk.Ru: 850
Сказал(а) спасибо: 137
Поблагодарили 732 раз(а) в 270 сообщениях
 
По умолчанию Re: Управление мышью (курсором) в DirectX приложениях (играх)

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

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

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

Последний раз редактировалось den57; 19.08.2019 в 23:56.
  Ответить с цитированием
Старый 20.08.2019, 01:04   #4
 Сержант
Аватар для ScythLab
 
ScythLab определенно авторитетная личностьScythLab определенно авторитетная личностьScythLab определенно авторитетная личностьScythLab определенно авторитетная личностьScythLab определенно авторитетная личностьScythLab определенно авторитетная личностьScythLab определенно авторитетная личностьScythLab определенно авторитетная личностьScythLab определенно авторитетная личность
Регистрация: 24.10.2014
Сообщений: 168
Популярность: 1129
Сказал(а) спасибо: 2
Поблагодарили 15 раз(а) в 9 сообщениях
 
По умолчанию Re: Управление мышью (курсором) в DirectX приложениях (играх)

Херовый там античит, если такое не палит)
________________
ScythBot: [Ссылки могут видеть только зарегистрированные пользователи. ].
Не забываем кликать "Спасибо", вам бесплатно, а мне приятно
  Ответить с цитированием
Старый 20.08.2019, 04:39   #5
Младший Модератор
 Командор
Аватар для Тигрь
 
Тигрь сломал счётчик популярности :(Тигрь сломал счётчик популярности :(Тигрь сломал счётчик популярности :(Тигрь сломал счётчик популярности :(Тигрь сломал счётчик популярности :(Тигрь сломал счётчик популярности :(Тигрь сломал счётчик популярности :(Тигрь сломал счётчик популярности :(Тигрь сломал счётчик популярности :(Тигрь сломал счётчик популярности :(Тигрь сломал счётчик популярности :(
Регистрация: 05.05.2009
Сообщений: 760
Популярность: 43325
Золото Zhyk.Ru: 850
Сказал(а) спасибо: 137
Поблагодарили 732 раз(а) в 270 сообщениях
 
По умолчанию Re: Управление мышью (курсором) в DirectX приложениях (играх)

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

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

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

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

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

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

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

Последний раз редактировалось den57; 20.08.2019 в 12:46.
  Ответить с цитированием
Старый 22.08.2019, 20:19   #7
 Сержант
Аватар для ScythLab
 
ScythLab определенно авторитетная личностьScythLab определенно авторитетная личностьScythLab определенно авторитетная личностьScythLab определенно авторитетная личностьScythLab определенно авторитетная личностьScythLab определенно авторитетная личностьScythLab определенно авторитетная личностьScythLab определенно авторитетная личностьScythLab определенно авторитетная личность
Регистрация: 24.10.2014
Сообщений: 168
Популярность: 1129
Сказал(а) спасибо: 2
Поблагодарили 15 раз(а) в 9 сообщениях
 
По умолчанию Re: Управление мышью (курсором) в DirectX приложениях (играх)

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

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

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

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

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

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

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

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

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

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

Пишите нам: forum@zhyk.ru
Copyright © 2019 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net