Эмуляция ALT+TAB на Visual C++

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Ответить
RDLNEO
Сообщения: 12
Зарегистрирован: 03 мар 2015, 00:39

Привет.
У меня есть оболочка Microsoft Visual C++ 6.0
Помогите написать одну очень нужную и очень коротенькую программу.

Она должна запускаться по горячей клавише и совершать комбинацию ALT+TAB случайное число раз
например это случайное число от 3 до 150
будет лучше, чтобы я сам смог изменять максимум для случайного числа при запуске программы

- она может быть резидентной
- может и нет.

Но мне не ясен способ вызова не резидентной программы по горячей клавише (например F12)

Просьба помочь с данной темой
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

Одобрил тему - теперь её все увидят.

Также удалил ссылку. Не нужно никаких "взамен", тем более без исходников проку от этой программы никакой нет (не говоря уже о возможности заражения вирусом).

По поводу самой темы. Советую начать с функции SetWindowsHookEx, которая позволяет повесить хук на системные цепочки сообщений. Генерировать же нажатия клавиш можно с помощью SendInput.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
RDLNEO
Сообщения: 12
Зарегистрирован: 03 мар 2015, 00:39

спс
уже сделал сам
вот:

Код: Выделить всё

#include <windows.h>//API функции
#include <stdio.h>
#include <string.h>
#include <conio.h>   //только для getch();
#include <locale.h>
#include <iostream> 
#include <ctime> 
#include <cstdlib>

void main()
     {
     int a, b, n, i;
     srand((unsigned)time(0));
     a=rand()%280+3;
     keybd_event(VK_MENU, 0, 0, 0);
     for (i=0; i<a; i++)
	 {
         keybd_event(VK_TAB, 0, 0, 0);  
	 }
     keybd_event(VK_MENU, 0, KEYEVENTF_KEYUP, 0);
     keybd_event(VK_TAB, 0, KEYEVENTF_KEYUP, 0);
     return;
     }
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

Функция keybd_event является деприкейтед функцией, начиная с Win2000 и внутри всё равно вызывает SendInput. Но работать конечно же будет.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Ответить