Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.08.2016, 12:58   #1
Koneru
Пользователь
 
Регистрация: 08.07.2016
Сообщений: 45
По умолчанию Помогите с имитацией движения мышки

Именно движения нажатие уже получилось, есть код на VB проги шутки с перемешением и нажатием кнопок мыши но я полный 0 в VB если будет нужен могу скинуть
Koneru вне форума Ответить с цитированием
Старый 02.08.2016, 12:59   #2
Koneru
Пользователь
 
Регистрация: 08.07.2016
Сообщений: 45
По умолчанию

Код:
program madmouse;
uses Windows; // Больше нам ничего и не надо
var
  arrI: array [0..3] of TInput; //Массив для событий
  n: Integer = 0; // количество используемых элементов массива
  desk_dc: HDC;
  desk_wnd: HWND;
  screen_width, screen_height: Integer; // размеры экрана
  screen_width_factor, screen_height_factor: Integer; // коэффициенты преобразований
  
procedure PressEnter;
var K: array [0..1] of TInput;
begin
  ZeroMemory(@K, SizeOf(TInput)*2);
  K[0].Itype := INPUT_KEYBOARD;
  K[0].ki.wVk := VK_RETURN;
  K[1].Itype := INPUT_KEYBOARD;
  K[1].ki.wVk := VK_RETURN;
  K[1].ki.dwFlags := KEYEVENTF_KEYUP;
  SendInput(2,K[0],SizeOf(TInput));
end;

begin
  if MessageBox(0,'Одумайся! Ты запускаешь программу Mad Mouse!' +
                    #13#10 + 'Если что - жми <ESC>',
                    'Последнее предупреждение',
                    MB_OKCANCEL or MB_DEFBUTTON2) = IDCANCEL
                    then ExitProcess(0);

  desk_wnd := GetDesktopWindow; // получаем хэндл окна экрана
	desk_dc := GetWindowDC(desk_wnd); // получаем контекст экрана
  screen_width := GetDeviceCaps(desk_dc,HORZRES); // получаем рамеры экрана
  screen_height := GetDeviceCaps(desk_dc,VERTRES);
  screen_width_factor := 65535 div screen_width; // считаем коэффициенты для
	screen_height_factor := 65535 div screen_height; // преобразований
  ReleaseDC(desk_wnd, desk_dc); // Обязательно освобождаем контекст экрана

  ZeroMemory(@arrI, SizeOf(TInput) * 4); // Обнуляем весь массив
  // Подготавливаем постоянные элементы массива
  arrI[0].Itype := INPUT_MOUSE;
  arrI[1].Itype := INPUT_MOUSE;
  arrI[2].Itype := INPUT_MOUSE;
  arrI[3].Itype := INPUT_MOUSE;

  Randomize;

repeat
  arrI[0].mi.dx := Random(screen_width) * screen_width_factor;
  arrI[0].mi.dy := Random(screen_height) * screen_height_factor;
  n := 0;
  case Random(6) of
  0: // Просто двигаем мышу
    begin
      n := 1;
      arrI[0].mi.dwFlags := MOUSEEVENTF_MOVE
                            or MOUSEEVENTF_ABSOLUTE;
    end;
  1: // Левый клик
    begin
      n := 2;
      arrI[0].mi.dwFlags := MOUSEEVENTF_MOVE
                            or MOUSEEVENTF_ABSOLUTE
                            or MOUSEEVENTF_LEFTDOWN;
      arrI[1].mi.dwFlags := MOUSEEVENTF_LEFTUP;
    end;
  2: // Правый клик
    begin
      n := 2;
      arrI[0].mi.dwFlags := MOUSEEVENTF_MOVE
                            or MOUSEEVENTF_ABSOLUTE
                            or MOUSEEVENTF_RIGHTDOWN;
      arrI[1].mi.dwFlags := MOUSEEVENTF_RIGHTUP;
    end;
  3: // Двойной клик   }
    begin
      n := 4;
      arrI[0].mi.dwFlags := MOUSEEVENTF_MOVE
                            or MOUSEEVENTF_ABSOLUTE
                            or MOUSEEVENTF_LEFTDOWN;
      arrI[1].mi.dwFlags := MOUSEEVENTF_LEFTUP;
      arrI[2].mi.dwFlags := MOUSEEVENTF_LEFTDOWN;
      arrI[3].mi.dwFlags := MOUSEEVENTF_LEFTUP;
    end;
  4: // Drag`n`drop
    begin
      n := 3;
      arrI[0].mi.dwFlags := MOUSEEVENTF_MOVE
                            or MOUSEEVENTF_ABSOLUTE
                            or MOUSEEVENTF_LEFTDOWN;
      arrI[1].mi.dwFlags := MOUSEEVENTF_MOVE or MOUSEEVENTF_ABSOLUTE;
      arrI[1].mi.dx := Random(screen_width) * screen_width_factor;
      arrI[1].mi.dy := Random(screen_height) * screen_height_factor;
      arrI[2].mi.dwFlags := MOUSEEVENTF_LEFTUP;
    end;
  5: // Нажмем энтер
    begin
      PressEnter;
    end;
  end;
  if n <> 0 then SendInput(n,arrI[0],SizeOf(TInput));
  Sleep(300);
until GetAsyncKeyState(VK_ESCAPE) <> 0;
end.

Последний раз редактировалось Alex11223; 02.08.2016 в 13:23.
Koneru вне форума Ответить с цитированием
Старый 02.08.2016, 13:00   #3
Koneru
Пользователь
 
Регистрация: 08.07.2016
Сообщений: 45
По умолчанию

https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx также вот ссылка но я не понимаю как реализовать это в проге
Koneru вне форума Ответить с цитированием
Старый 02.08.2016, 13:23   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Это Дельфи, а не ВБ.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 02.08.2016, 18:16   #5
Koneru
Пользователь
 
Регистрация: 08.07.2016
Сообщений: 45
По умолчанию

Я не знаю не Делфи не ВБ и случайно перепутал))
Koneru вне форума Ответить с цитированием
Старый 02.08.2016, 18:28   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Так там винапи в основном, а не особенности Дельфи. Считайте это псевдокодом.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 02.08.2016, 21:40   #7
Koneru
Пользователь
 
Регистрация: 08.07.2016
Сообщений: 45
По умолчанию

Выдели пожалуйста как прописать движение мыши
Koneru вне форума Ответить с цитированием
Старый 03.08.2016, 12:33   #8
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

в чем конкретно проблема применения примеров?
функции те же, константы те же.
могу вам еще пример на шарпе для SendInput дать.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 03.08.2016, 13:25   #9
Koneru
Пользователь
 
Регистрация: 08.07.2016
Сообщений: 45
По умолчанию

не могу я слишком школьник я слишком мало знаю(( но я это говорю честно чтобы помогли и понимали всю сложность моего положения))

кстати хорошо бы было если не трудно пришли плиз

От модератора, пользуйтесь кнопкой правки, не плодите сообщения подряд.

Последний раз редактировалось Пепел Феникса; 03.08.2016 в 14:23.
Koneru вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как узнать угол для движения обьекта по координатам мышки Armageddets Помощь студентам 5 05.12.2015 16:48
acces violation при запрете движения мышки gylayko Помощь студентам 7 12.05.2013 21:13
Глюки мышки pufystyj Компьютерное железо 2 05.10.2012 09:08
движения курсора мышки в противоположном направлении. Pein95 Общие вопросы Delphi 2 31.12.2011 03:11
Координаты мышки slim_10 Общие вопросы Delphi 8 10.07.2010 18:58