![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| HiVeR |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 44 Регистрация: 30.6.2008 Репутация: нет Всего: нет |
есть окно, в него нужно передать текст, передать его можно насколько я понял посимвольно, последовательно эмулируя нажатие каждой клавиши, но как передать символ? проблема в том, что нужно посылать нажатие клавиши неактивному окну и без использования фокусов, то есть функции SendKeys и keybd_event отпадают, остаётся SendMessage/PostMessage
вот что у меня есть:
таким образом окну успешно отправится и дойдёт Enter а что нужно вписать в SendMessage на месте wparam и lparam чтобы отправить некоторый символ? возможно ли вообще? Enter отправить легко, так как ему соответствует некоторый код, а обычным буквам вроде как ничё не соответствует... можно использовать вместо WM_KEYDOWN и WM_KEYUP - WM_CHAR, но тогда сообщения в окно не доходят(( облазил инет, то что нужно не нашёл(, насколько помню в шарпе с помощью spy++ можно узнать lparam и wparam посланных в окно сообщений и использовать эти значения уже в SendMessage, но в дельфи у меня не получилось также... |
|||
|
||||
| Rennigth |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 21.6.2004 Где: Moscow Репутация: 49 Всего: 76 |
-------------------- (* Honesta mors turpi vita potior *) |
|||
|
||||
| morpheyushka |
|
|||
![]() Зеленый человек ![]() ![]() Профиль Группа: Участник Сообщений: 563 Регистрация: 26.2.2008 Где: Киев Репутация: 3 Всего: 8 |
||||
|
||||
| HiVeR |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 44 Регистрация: 30.6.2008 Репутация: нет Всего: нет |
SetWindowText просто изменит заголовок окна, а нужно чтобы была именно имитация нажатий клавиш, так как по другому, как я понял, текст не запишется...
спасибо, ни разу не слышал, попробую а используя только WM_KEYDOWN и WM_KEYUP, возможно отправить какойнить символ? или может можно WM_COMMAND? |
||||
|
|||||
| Rennigth |
|
||||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 21.6.2004 Где: Moscow Репутация: 49 Всего: 76 |
Смотря для какого типа окна.
Также если ты меняешь текст окна другого приложения нужно использовать
Вот тебе пример с NotePad.
Добавлено через 7 минут и 17 секунд HiVeR, а ты если честно пытаешься изобрести велосипед с квадратными колеса Или тебе по религиозным причинам нужно именно клавиатуру имитировать? Это сообщение отредактировал(а) Rennigth - 13.8.2008, 13:09 -------------------- (* Honesta mors turpi vita potior *) |
||||||||
|
|||||||||
| HiVeR |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 44 Регистрация: 30.6.2008 Репутация: нет Всего: нет |
Rennigth, если бы можно было проще, я бы так не парилсо...
вот смотри, есть окно, просто окно..в нём нет как таковых ни едитов, ни кнопок - ничего, точнее они есть..но они сливаются с окном, как одно целое, при нажатии клавиш при активном этом окне, там в едит записывается текст, но сам едит никоим образом найти не получитсо.. окно - экран/снимок компьютера... надеюсь болеменее понятно объяснил без имитации клавиш в едит ничё не пишется... |
|||
|
||||
| Rennigth |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 21.6.2004 Где: Moscow Репутация: 49 Всего: 76 |
ну вот с этого и надо было начинать Экзешник большой с этим твоим чудо-окном? Если есть возможность выложи его(ну или тестовый какой-нить где не получилось найти) куда-нить, посмотрим. -------------------- (* Honesta mors turpi vita potior *) |
|||
|
||||
| HiVeR |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 44 Регистрация: 30.6.2008 Репутация: нет Всего: нет |
счас, скину в личку
Это сообщение отредактировал(а) HiVeR - 13.8.2008, 19:16 |
|||
|
||||
| Rennigth |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 21.6.2004 Где: Moscow Репутация: 49 Всего: 76 |
HiVeR,
сказал бы что эт у тя что-то вроде р-админа... вопщем вот что пока получилось:
пысы, рейзы убери где нужно сам, для отладки ставил. пысы, если что за оптимальность, ошибки не бейте, делал на скорую руку... -------------------- (* Honesta mors turpi vita potior *) |
|||
|
||||
| HiVeR |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 44 Регистрация: 30.6.2008 Репутация: нет Всего: нет |
большое спасибо Rennight, всё доходит
жалко что приходится использовать сетфокус на окно, изза него как я понял в скрытое окно не доходят сообщения и вылетает ошибка, что неслабый минус в моей проге... потому то и надумал использовать SendMessage, так как она более универсальная, но за код всё равно спасибо, у меня было очень мало сделано)
я не знаю как в радмине, его почти не использовал а можно как то обойти сетфокус или сделать так, чтобы имитация клавиш доходила в скрытое окно? Это сообщение отредактировал(а) HiVeR - 14.8.2008, 12:41 |
|||
|
||||
| Rennigth |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 21.6.2004 Где: Moscow Репутация: 49 Всего: 76 |
HiVeR, дело в том что для имитации клавишь стандартными средствами, окно должно иметь фокус ввода (keyboard focus). Что для
keybd_event, что для WM_KEYUP/WM_KEYDOWN. Можно выйти из ситуации, вызывать после введения пароля SetForegroundWindow для своего окна. SetFocus для hPrevWindow может не стаботать, но попробуй... Добавлено через 4 минуты и 22 секунды п.с. может можно как-то выкрутиться через регистрацию хоткеев, но я в этом ни бум-бум, надо изучать уже более глубоко, а что-то времени нема... -------------------- (* Honesta mors turpi vita potior *) |
|||
|
||||
| HiVeR |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 44 Регистрация: 30.6.2008 Репутация: нет Всего: нет |
интересно как окно получает фокус ввода от WM_KEYUP/WM_KEYDOWN
например если написать так:
вместо VK_RETURN к окну придёт ентер, или же можно написать, например, VK_NUMPAD3 и до окна отлично дойдёт цифра 3), пускай оно даже свернуто..фокуса тут как такогого наверное нету спс за помощь и что откликнулся попробую помудить с wparam и lparam, если не получитсо, почитаю про хоткеи) Это сообщение отредактировал(а) HiVeR - 14.8.2008, 14:14 |
|||
|
||||
| VICTAR |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1108 Регистрация: 6.10.2006 Репутация: 37 Всего: 80 |
||||
|
||||
| HiVeR |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 44 Регистрация: 30.6.2008 Репутация: нет Всего: нет |
уф, почти разобрался
норм отправиться клавиша t так:
а можно как то отправить заглавную букву?, пробовал таким образом:
не знаю почему, но пришла только маленькая буква t, шифт как будто и не нажимался, хотя если отправить подобным образом ctrl+alt+del то всё ок поюзал гугл, он говорит что такой способ не катит, и нужно через стандартные функции с "активацией" окна... хотя я уверен, что через wm_keydown/ keyup тоже можно, но чтото не получается, может кто знает как будет правильно? |
||||
|
|||||
| VICTAR |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1108 Регистрация: 6.10.2006 Репутация: 37 Всего: 80 |
Кто там заминусовал мой пост? Обоснуйте плз
|
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |