Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/25: Рейтинг темы: голосов - 25, средняя оценка - 4.88
 Аватар для Dim1One
44 / 44 / 4
Регистрация: 30.04.2011
Сообщений: 283

Эмуляция нажатия клавиш в полноэкранных приложениях

19.02.2012, 18:11. Показов 4912. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Эмулирую нажатие клавиши так:
VB.NET
1
2
3
4
Dim kb As New Devices.Keyboard
...
kb.SendKeys("q")
kb.SendKeys("Q")
Когда фокус находится на текстовых полях(тестовый редактор, окна чата и т.д), то все работает, но в полноэкранных приложениях эмуляция не срабатывает(напрмер, в играх). Почему?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.02.2012, 18:11
Ответы с готовыми решениями:

Эмуляция нажатия клавиш: GetAsyncKeyState вызывает ошибку
Почему не работает этот метод: Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer Const...

Эмуляция нажатия клавиш в приложении под управлением DirectX
Доброго времени. Перелопатил кучу инфы, и слегка запутался. Задача - клацнуть клавишей в приложении под управлением DirectX ...

Эмуляция нажатия кнопки в WebBrowser
Чет затупил, не могу эмулировать нажатия кнопки <input type="button" class="edcbtn btn btn130" value="Редактировать"...

11
525 / 487 / 99
Регистрация: 25.12.2011
Сообщений: 1,176
19.02.2012, 18:18
VB.NET
1
SendKeys.Send("A")
Так попробуй.

Добавлено через 5 минут
без кб и т.п. просто:
VB.NET
1
SendKeys.Send("A")
0
 Аватар для Dim1One
44 / 44 / 4
Регистрация: 30.04.2011
Сообщений: 283
19.02.2012, 19:05  [ТС]
Hennasy, тоже самое - не работает.
0
525 / 487 / 99
Регистрация: 25.12.2011
Сообщений: 1,176
19.02.2012, 19:29
Не работает, то есть что надо сделать:?

Добавлено через 27 секунд
Надо послать определенную клавишу приложению:?

Добавлено через 3 минуты
К примеру:
VB.NET
1
2
3
4
5
6
7
8
9
<Runtime.InteropServices.DllImport("user32.dll")> _
    Public Shared Function GetAsyncKeyState(ByVal vKey As System.Windows.Forms.Keys) As Short
    End Function
 
'В таймер (интервал 50, и не забудь включить).
If GetAsyncKeyState(Keys.A) Then
SendKeys.Send("Q")
End If
'Конец.
Если ты нажмешь А в приложении то он должен нажать Q.
0
 Аватар для Dim1One
44 / 44 / 4
Регистрация: 30.04.2011
Сообщений: 283
19.02.2012, 19:37  [ТС]
Hennasy, я же в первом сообщении все написал. Эмуляция работает только когда имеет фокус какое-нибудь текстовое поле. Например, при эмуляции нажатия клавиши в полноэкранном приложении ни чего не срабатывает, а если в этом полноэкранном приложении открыть текстовое поле(чат, например), то эмуляция работает.
0
525 / 487 / 99
Регистрация: 25.12.2011
Сообщений: 1,176
19.02.2012, 19:38
Хм... у меня работает в играх.
0
13 / 13 / 2
Регистрация: 22.04.2010
Сообщений: 658
19.02.2012, 22:31
Цитата Сообщение от Hennasy Посмотреть сообщение
Хм... у меня работает в играх.
В играх зачастую идет считывание непосредственно с клавы, а не с команд на эмуляцию нажатий.
0
525 / 487 / 99
Регистрация: 25.12.2011
Сообщений: 1,176
19.02.2012, 22:55
В варкрафте идет я пробовал.
0
13 / 13 / 2
Регистрация: 22.04.2010
Сообщений: 658
19.02.2012, 22:57
Цитата Сообщение от koc94ok Посмотреть сообщение
В играх зачастую идет считывание непосредственно с клавы, а не с команд на эмуляцию нажатий.
Не значит что во всех.
0
 Аватар для edward_freedom
1569 / 1448 / 303
Регистрация: 01.10.2011
Сообщений: 2,636
20.02.2012, 00:14
VB.NET
1
2
3
4
Public Sub SendKey(ByVal k As Keys)
            PostMessage(hWnd, WM_KEYDOWN, New IntPtr(CInt(k)), IntPtr.Zero)
            PostMessage(hWnd, WM_KEYUP, New IntPtr(CInt(k)), IntPtr.Zero)
        End Sub
0
 Аватар для Dim1One
44 / 44 / 4
Регистрация: 30.04.2011
Сообщений: 283
20.02.2012, 15:34  [ТС]
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    
    <DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
Private Shared Function PostMessage(ByVal hWnd As IntPtr, ByVal Msg As UInteger, ByVal wParam As IntPtr, ByVal lParam As IntPtr) As Boolean
    End Function
 
    Private Declare Function FindWindow Lib "user32" _
              Alias "FindWindowA" (ByVal lpClassName As String, _
                    ByVal lpWindowName As String) As Long
Public Sub SendKey(ByVal k As Keys)
        Dim hWnd As Long
        hWnd = FindWindow(vbNullString, "Безымянный - Блокнот" & Chr(0))
        PostMessage(hWnd, &H12, New IntPtr(CInt(k)), IntPtr.Zero)
        '  PostMessage(hWnd, WM_KEYUP, New IntPtr(CInt(k)), IntPtr.Zero)
    End Sub
...
SendKey(Keys.L)
Что-то не хочет работать. Пишет: "Переполнение в результате выполнения арифметической операции.", показывая на на 4-ый аргумент функции PostMessage (IntPtr.Zero).
0
 Аватар для kler2008
6 / 5 / 0
Регистрация: 22.01.2012
Сообщений: 38
05.05.2012, 15:01
Некоторые игры используют DirectInput для нажатий клавиш. Поэтому чтобы им передать нажатие клавиши, то нужно это делать через DirectInput. Вот статейка как этим пользоваться.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.05.2012, 15:01
Помогаю со студенческими работами здесь

Эмуляция нажатия Enter в окно программы
Нужно написать программу, которая бы при запуске активировала окно указанной сторонней программы и каждую 0,1 секунды нажимала в него...

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

Как имитировать нажатия клавиш
Вот например программа должна нажимать клавиши например: Q и подержать сек 5 потом W с подержать сек 8 и так далее

Отлов нажатия клавиш на форме
Отлавливались нажатия на клавиши на форме (Handles Me.KeyDown). После добавления на форму текстового поля и кнопки, отлов прекратился. Куда...

Отлавливание нажатия клавиш за пределами формы
Я могу захватывать клавиши и записывать их в текст бокс. Но как например за пределами формы их захватывать? Например в блокноте пишешь и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru