|
35 / 35 / 6
Регистрация: 29.08.2009
Сообщений: 183
|
|
Имитация клавишь в другом окне19.02.2010, 16:20. Показов 5783. Ответов 16
Метки нет (Все метки)
Какая команда отвечает за вывод из буфера текста в окно другой программы (Блокнот) и имитирует нажатие клавиши "Enter" ?
0
|
|
| 19.02.2010, 16:20 | |
|
Ответы с готовыми решениями:
16
Имитация зажатия клавишь на клаве Выделить текст в RichTextBox в одном окне, сохранив фокус на другом окне Передача данных из listBox в одном окне, в textBox в другом окне |
|
3687 / 964 / 114
Регистрация: 10.01.2010
Сообщений: 2,550
|
|
| 19.02.2010, 16:27 | |
|
Команда? Поправьте если ошибаюсь - это работа для WinAPI (если речь идет о Windows приложении конечно), для этого есть свой раздел...
Как передать нажатие клавиши другому окну? (api в delphi) http://www.cyberguru.ru/progra... age20.html
1
|
|
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
|
| 19.02.2010, 16:27 | |
|
Deimon, что значит "какая команда"? Какая задача стоит?
0
|
|
|
35 / 35 / 6
Регистрация: 29.08.2009
Сообщений: 183
|
||
| 20.02.2010, 16:43 [ТС] | ||
|
Как это реализовать в C++ Builder ? Добавлено через 19 часов 51 минуту Мда... неужели это так сложно или невозможно? ![]() мне казалось это во всех языках программирования можно ...в Delphi точно можно было
0
|
||
|
65 / 71 / 9
Регистрация: 25.06.2009
Сообщений: 244
|
||
| 20.02.2010, 22:12 | ||
сначала нужно получить идентификатор окна, проще всего - найти его функцией FindWindow("Notepad",0); потом поочередно слать туда символы через SendMessage(hwnd,WM_CHAR,'СИМВОЛ',0,0); ENTER точно также, но вместо символа поставить VK_ENTER
1
|
||
|
35 / 35 / 6
Регистрация: 29.08.2009
Сообщений: 183
|
||||||||||||||||||
| 21.02.2010, 01:32 [ТС] | ||||||||||||||||||
|
На эту часть кода у меня С++ не ругается. Окно блокнота должно ставновиться активным после исполнения этой части кода ?
П.С. Блокнот был открыт Добавлено через 33 минуты Вот еще пищя для размышления
П.С. Может гдето галочки поставить или выставить true ?
0
|
||||||||||||||||||
|
35 / 35 / 6
Регистрация: 29.08.2009
Сообщений: 183
|
|
| 26.02.2010, 10:48 [ТС] | |
|
Мне тут подсказали, что раньше это делали через драйверы клавиатуры. через C++ можно управлять драйверами ?
(П.С. НЕ ПИСАТЬ , а управлять)
0
|
|
|
paladin
286 / 187 / 7
Регистрация: 25.02.2009
Сообщений: 589
|
||
| 26.02.2010, 11:16 | ||
|
1
|
||
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
|
||||||
| 26.02.2010, 13:09 | ||||||
|
Драйверы в печку.
А вообще тут что-то не то. Yurii_74, Посмотри мой код. Можно, конечно заполнить строку с клавиатуры или ещё как-то, а потом её считаь. А можно так, как у меня. Но не получается ни фига. Внутренние проверки все проходят на ять, функции возвращают корректные значения. Но в окне notepada ничего не пишется. Сдаётся мне, мало чтобы PostMessage нормально отработала. ПОСЛАТЬ окну сообщение (что она делает и напечатать там что-либот это наверное разные вещи) Но как бы тони было
1
|
||||||
|
paladin
286 / 187 / 7
Регистрация: 25.02.2009
Сообщений: 589
|
|
| 26.02.2010, 13:24 | |
|
Все нормальные программы под винду работают через winApi. Если вы послали сообщение при помощи SendMessage, то для программы это равносильно нажатию на клавиатуре (точно так же системой генерируется SendMessage с теми же параметрами). Нет вменяемой среды под рукой, да и лень, если честно, вспоминать параметры функций. Но скорее всего во всех вышеописанных вариантах что-то неправильно со строкой, по которой вы ищете окно. Попытайтесь сначала выводить в свою программу эту строку активного окна (пощелкайте по разным окнам, создайте лог, и от этого уже надо будет плясать).
Спокойно раньше мышку по экрану гонял при помощи SendMessage. Времени свободного было поболее ![]() Исчерпывающая информация здесь: msdn_FidWindowEx
1
|
|
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
|
||
| 26.02.2010, 13:39 | ||
|
Значение, возвращаемое функцией FindWindow проверяется ДВАЖДЫ. То есть я два раза следую Вашему совету. Первый раз проверяется на неравенство нулю DeskriptorOkna, второй раз выводится его значение. ОБЕ проверки проходят на ять. Впрочем, Вы сами могли бы в этом убедиться (или в обратном), как впрочем и в безошибочности работы PostMessage. Ну, дело Ваше.
0
|
||
|
paladin
286 / 187 / 7
Регистрация: 25.02.2009
Сообщений: 589
|
||
| 26.02.2010, 14:10 | ||
Проверьте GetLastError на 5. Vista на работе тоже не установлена. Возможно для Notepad'а они прописали запрет на прием этого сообщения. Добавлено через 10 минут Либо же не запрет, а проверка сендера на вшивость. ![]() Лучше создать два своих окна и проверить это предположение. Для своей программы хотя бы можно указать те сообщения, которые она соизволит принимать от других прог.
1
|
||
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
|
|
| 26.02.2010, 15:05 | |
|
Нет, это сложно для меня.
А вот скажите мне кто-нибудь, как получить командную строку СТОРОННЕГО процесса и я попытаюсь что-нибудь сделать. План такой: 1) Предполагается, что открыто ОДНО окно notepad (соответственно, запущен иодин экземплярпроцесса, я щас смотрел, сколько окон открыто, столько и экземпляров процесса запущено. Ткой уж он notepad) 2) Ищем командную строку notepad (сперва дескриптор notepad.exe, но это ерунда, я найду) 3) Разбираемся с командной строкой. Тут тонкое место. В идеале хорогшо было бы, чтобы у notepada был всегда один параметр- имя файла, даже если он открыт простым кликом мышки. Тогда имя файла копируем себе, notepad закрываем к матери, открываем сишными методами (к примеру) файл на запись, записывае туда что надо, закрываем и открываем notepad с параметром <имя файла> 4) оформляем всё это дело с помощью батников, главный из которых запускается по первому enter Фигня, конечно, но упражнения ради можно сделать. Но как получить командную строку СТОРОННЕГО процесса, я ума не приложу. Извините.
0
|
|
|
65 / 71 / 9
Регистрация: 25.06.2009
Сообщений: 244
|
|
| 26.02.2010, 21:50 | |
|
Такое впечатление что она хочет создать программу для запугивания ламеров)
А блокнот все таки легче найти по имени класса HWND hwnd = FindWindow("Notepad",0);
0
|
|
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
|
||||||
| 27.02.2010, 02:09 | ||||||
|
Значит, докладываю
1) ВСе наши предыдущие изыскания бесполезны. Нами предполагалось создание и работа с окном, но мы не учитывали одного- программа notepad при запуске создаёт ПЯТЬ окон 2) НАзвание имеет только оджно из них. Фактически это рамка. И все сообщения, посылаемые этому окну в моей предыдущей программе, посылались только рамке, не больше не меньше. То белое поле, где вводятся буквы- отдельное окно. Увы, без названия как и остальные 3 (панель инструментов и ещё что-то там) 3) ТЕм не менее, дескриптор это окно имеет, нам необходимо его найти и можно с ним работать. Автор, задание. Ищешь в сети программу objectviewer (русскоязычный интерфейс), учишься работать с ней и находить с помощью неё дескрипторы окон. Если не найдёшь, я тебе скину на рапиду 4) Ну вот как дескриптор найдёшь запускай мою программу. Обрати внимание, она работает, даже если окно неактивно или вообще свёрнуто- то есть всё равно этому белому полю пошлются соответвующие сообщения и буквы выведутся. 5) Ещё: возможны проблемы с кириллицей по той причине, что в конcоли винды одна кодировка, а notepad использует другую. Для устранения этого самостоятельно изучаешь и пишешь маленькую прожку для ковертации символов из одной кодировки в НУЖНУЮ ТЕБЕ ( ту, которая в notepade) 6) Удачи в твоих начинаниях! И штутдируй всякую фигню типа api-функций, отладчиков и прочей дряни. ВСегда твой.
kravam Сёдня весь день в инете, все челы только и занимаются, что посылают окнам сообщения, инфы много и НИКОМУ НЕВДОМЁК, что окон не одно, а несколько. Мне аж не по себе стало. Парняги, скажите всем и знайте сами! Кажется, что окно одно, на самом деле их несколько! Хэндл каждого искать лучше вручную, (что предпочтительно, имея вышеупомянутую прогу).
2
|
||||||
|
paladin
286 / 187 / 7
Регистрация: 25.02.2009
Сообщений: 589
|
|||
| 27.02.2010, 07:34 | |||
|
Добавлено через 15 минут P.S.: в блокноте можно одновременно открыть несколько файлов в одном окне? Тогда все сталновится понятным. Одно родительское + несколько дочерних. Добавлено через 11 минут
0
|
|||
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
|
||
| 27.02.2010, 11:42 | ||
|
Вот на фотке станет всё ясно. Вверху это окно notepad.exe, где видно, что открыта одна вкладка. А внизу- окно программы objectviewer. В лефом фрейме- проводник. Видно, что открыта как бы папка E:\file.txt - Notepad2 и в неё вложены 4 объекта с РАЗНЫМИ идентификаторами. ВЫделен на данный момент объект "Белое поле" А остальные объекты- панель инструментов, ещё какая-то нижняя полоса окна... Там включаешь режим "Живой курсор" водишь им по окну и высвечиваются данные того элемента, над которым курсор, а когда курсор будет над рамкой, высветятся параметры непосредственно E:\file.txt - Notepad2
0
|
||
| 27.02.2010, 11:42 | |
|
Помогаю со студенческими работами здесь
17
Имитация нажатия клавиш в стороннем окне Имитация нажатия клавиш в свернутом окне Имитация нажатия кнопки мыши в окне Имитация нажатия кнопок в неактивном окне Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога
SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
|
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
|
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога
SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
|
|
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога
Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip"
Извлеките архив и вы увидите. . .
|
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога
Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д.
Сборка примера
Скачайте. . .
|
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net
REST сервисы временно не работают, только через Web.
Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
|