Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Имитация нажатия цифровых клавиш в ДОС-программе 
:(
    Опции темы
Voldemar2004
Дата 19.11.2005, 21:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1650
Регистрация: 25.12.2004

Репутация: 7
Всего: 23



Имитация нажатия цифровых клавиш для командной строки нормально работает, но для старой ДОС-программы - не хочет! Хотя то же выводится в окне командной строки - заголовок окна указан верно. В чем проблема, может, кто сталкивался?
Код
Option Explicit

Private Declare Function SendMessage Lib "user32" _
Alias "SendMessageA" _
(ByVal hwnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
ByVal lParam As Long) As Long
Private Declare Function FindWindow& Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String)
Private Declare Function FindWindowEx& Lib "user32" Alias "FindWindowExA" (ByVal hWndParrent As Long, ByValhWndChildren As Long, ByVal lpClassName As String, ByVal lpWindowName As String)

'-----------------------------------------------
Private Declare Function SetForegroundWindow _
Lib "user32" (ByVal hwnd As Long) As Long

Private Declare Function GetDesktopWindow _
Lib "user32" () As Long

Dim hw As Long

Private Declare Function PostMessage Lib "user32" _
         Alias "PostMessageA" (ByVal hwnd As Long, _
               ByVal wMsg As Long, ByVal wParam As Long, _
                    ByVal lParam As Long) As Long

Private Sub Command1_Click()
Dim sCaption As String

'sCaption = "ДОС-программа"
sCaption = "Командная строка"

hw = FindWindow(vbNullString, sCaption)

MySub

Const WM_KEYDOWN = &H100
Const VK_NUMPAD1 = &H61

Call PostMessage(hw, WM_KEYDOWN, VK_NUMPAD1, 1)

End Sub

Sub MySub()
Dim deskhw As Long
deskhw = hw
SetForegroundWindow deskhw
End Sub



--------------------
i_i 
(';') 
(V)

user posted image
PM MAIL   Вверх
BorisVorontsov
Дата 19.11.2005, 22:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Thinker
**


Профиль
Группа: Комодератор
Сообщений: 714
Регистрация: 3.11.2005
Где: Молдавия, г. Киши нёв

Репутация: 5
Всего: 10



Цитата(Voldemar2004 @ 19.11.2005, 21:49)
В чем проблема


В том, что это DOS программа?


--------------------
[code=cpp]
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;
[/code]
PM MAIL ICQ GTalk   Вверх
Voldemar2004
Дата 19.11.2005, 22:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1650
Регистрация: 25.12.2004

Репутация: 7
Всего: 23



Нет, она открывается в стандартном окне командной строки - почему не работает имитация нажатия клавиш не понятно.


--------------------
i_i 
(';') 
(V)

user posted image
PM MAIL   Вверх
BorisVorontsov
Дата 19.11.2005, 22:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Thinker
**


Профиль
Группа: Комодератор
Сообщений: 714
Регистрация: 3.11.2005
Где: Молдавия, г. Киши нёв

Репутация: 5
Всего: 10



Цитата(Voldemar2004 @ 19.11.2005, 22:15)
Нет, она открывается в стандартном окне командной строки - почему не работает имитация нажатия клавиш не понятно.


Прочитай мой пост выше.


--------------------
[code=cpp]
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;
[/code]
PM MAIL ICQ GTalk   Вверх
Exception
Дата 20.11.2005, 01:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 7
Всего: 186



На др. клавиши реагирует?
PM   Вверх
Voldemar2004
Дата 20.11.2005, 11:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1650
Регистрация: 25.12.2004

Репутация: 7
Всего: 23



Цитата(Run @ 20.11.2005, 01:36)
На др. клавиши реагирует?
ДоС - программа не реагирует на нажатия вообще никаких клавиш, хотя если я пальцем физически щелкну по клавише - то работает.



--------------------
i_i 
(';') 
(V)

user posted image
PM MAIL   Вверх
Exception
Дата 20.11.2005, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 7
Всего: 186



Попробуй заюзать ф-цию keybd_event. Должна сработать
PM   Вверх
Voldemar2004
Дата 20.11.2005, 19:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1650
Регистрация: 25.12.2004

Репутация: 7
Всего: 23



Нет, все равно не работает. Наверно для DOS-приложений это не работает.


--------------------
i_i 
(';') 
(V)

user posted image
PM MAIL   Вверх
Voldemar2004
Дата 26.11.2005, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1650
Регистрация: 25.12.2004

Репутация: 7
Всего: 23



Я кажется понял, как вставить в ДОС-окно какое-то число, пробовал через Shift+Insert (аналог ctrl+V) - не работает.

Но если щелкнуть по заголовку окна в меню "Изменить" - > "вставить" - то все работает!

Вот только не знаю, как сымитировать правый клик мыши по заголовку окна, выбрать меню "Изменить" и сымитировать нажатие "вставить".

P.S. Проблемы с кодировкой меня не касаются - работаю только с числами.


--------------------
i_i 
(';') 
(V)

user posted image
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.0485 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.