Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.74/19: Рейтинг темы: голосов - 19, средняя оценка - 4.74
1 / 1 / 0
Регистрация: 19.10.2011
Сообщений: 14

Управление окном чужого приложения

24.10.2011, 16:38. Показов 4055. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Расскажу как есть.
Есть приложение, окном которого нужно управлять через свою прогу.
C++
1
2
3
4
5
6
7
8
9
10
11
12
void __fastcall TForm3::Button2Click(TObject *Sender)
{
     if (HWND h1 = FindWindow(  L"L2UnrealWWindowsViewportWindow", NULL)) //класс окна
     {
         SendMessage (h1, WM_KEYDOWN,VK_F1,NULL);  
         SendMessage (h1,WM_KEYUP,VK_F1,NULL);
     }
     else
     {
         ShowMessage ("Окно не найдено");
     }
}
Все находит, опеределяет, F1 тоже нажимается. Но проблема в том, что у меня на ПК будут запускаться множество окон этого приложения. И, соответственно, нажатие F1 будет эмулироваться только на последнем активном. Если окна переключить, то приоритеты поменяются. Все работает даже со свернутым окном, но с одним! Хотелось бы сделать так, чтобы программа эмулировала нажатие клавиш только на 1вом запущенном окне, а остальные запущенные после окна, не трогала.

Просьба сильно не пинать, опыт работы в си 1 неделя)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.10.2011, 16:38
Ответы с готовыми решениями:

Управление чужим окном
Прошу помочь... Мне нужно взять текст из ЧужоеОкно->Memo задать текст я могу HWND hWnd; hWnd = FindWindow("TForm1",...

Чтение информации с чужого приложения
нажатием кнопки вызываю внешнее приложениеShellExecute(0,"open","test.exe",NULL,0,SW_SHOW);во внешнем приложении есть ListView. там...

Как изменить TRichViewEdit у чужого приложения.
Подскажите возможно ли изменить текст у чужой формы в поле TRichViewEdit?

5
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
24.10.2011, 17:12
Ну так кепшен напиши вот здесь

C++
1
FindWindow(  L"L2UnrealWWindowsViewportWindow", кепшен))
1
return (true);
 Аватар для mimicria
1977 / 1112 / 221
Регистрация: 19.04.2011
Сообщений: 2,346
24.10.2011, 17:26
Цитата Сообщение от AHAPX Посмотреть сообщение
Хотелось бы сделать так, чтобы программа эмулировала нажатие клавиш только на 1вом запущенном окне, а остальные запущенные после окна, не трогала.
Тогда FindWindow надо сделать 1 раз при запуске приложения, запомнить хэндл и все действия применять к нему.
1
1 / 1 / 0
Регистрация: 19.10.2011
Сообщений: 14
24.10.2011, 17:45  [ТС]
Цитата Сообщение от mimicria Посмотреть сообщение
Тогда FindWindow надо сделать 1 раз при запуске приложения, запомнить хэндл и все действия применять к нему.
Ок, т.е. можно, например, создать 2 кнопки, 1на из которых будет находить окно 1н раз, 2я посылать команды. Ток вот как мне запомнить хендл?)
Кусочек кода бы выложить)
0
return (true);
 Аватар для mimicria
1977 / 1112 / 221
Регистрация: 19.04.2011
Сообщений: 2,346
24.10.2011, 18:04
C++
1
HWND h1; // в глобальных переменных
На 1 кнопку
C++
1
2
3
h1 = FindWindow(  L"L2UnrealWWindowsViewportWindow", NULL);
     if (!h1)
         ShowMessage ("Окно не найдено");
На 2:
C++
1
2
SendMessage (h1, WM_KEYDOWN,VK_F1,NULL);  
         SendMessage (h1,WM_KEYUP,VK_F1,NULL);
1
1 / 1 / 0
Регистрация: 19.10.2011
Сообщений: 14
24.10.2011, 18:20  [ТС]
Цитата Сообщение от mimicria Посмотреть сообщение
C++
1
HWND h1; // в глобальных переменных
На 1 кнопку
C++
1
2
3
h1 = FindWindow(  L"L2UnrealWWindowsViewportWindow", NULL);
     if (!h1)
         ShowMessage ("Окно не найдено");
На 2:
C++
1
2
SendMessage (h1, WM_KEYDOWN,VK_F1,NULL);  
         SendMessage (h1,WM_KEYUP,VK_F1,NULL);
Во, я тупой=) Спасибо большое, выручили. Делал так, но не совсем и удивлялся почему не получается))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.10.2011, 18:20
Помогаю со студенческими работами здесь

Скрыть кнопку чужого приложения на панели задач
Как скрыть кнопку чужого приложения на панели задач?

Как нажать клавишу у чужого приложения,если в данный момент активно другое окно?
Подскажите как нажать клавишу у чужого приложения, если активно другое окно? Пробовал сделать вот так if (HWND h1 =...

Управление Outlook из своего приложения
Народ, может кому-нибудь приходилось из своего приложения допустим, проверять почту посредством outlook, создавать заметки контакты, ну...

Управление сокетом чужого приложения, как в WPE PRO
Доброго времени суток! Пытаюсь написать программу для отправки пакетов на сервер "от имени" игры (а точнее её socket'а). ...

Управление сторонним окном
Знаю, вопрос заезженный, но так и не смог выполнить нажатие на кнопкy. x:=339; y:=241; SearchHandle := 0; SearchHandle :=...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru