|
1 / 1 / 0
Регистрация: 26.10.2014
Сообщений: 74
|
|
Встраивание окна внешнего приложения в форму10.11.2014, 18:21. Показов 9351. Ответов 19
Привет всем! Проблема такая, требуется встроить стороннее приложение в форму моей программы, причем это встроенное окно должно быть определенного размера и занимать фиксированное место на форме.
Я пришел к выводу, что нужно делать импорт dll-ки user32.dll [DllImport("user32.dll")] и каким-то образом использовать встроенную функцию SetWindowPos. Нагуглил такую страницу с описанием функции: http://msdn.microsoft.com/ru-r... s.85).aspx Но синтаксис там описан на С++, к тому же мне, как новичку, непонятно, как вызывать такую функцию, что за аргументы _In_ HWND hWnd, _In_opt_ HWND hWndInsertAfter и т.д.? Или нужно действовать другим образом? Подскажите, пожалуйста
0
|
|
| 10.11.2014, 18:21 | |
|
Ответы с готовыми решениями:
19
Получить форму из внешнего окна
Встраивание программы в окно приложения |
|
8951 / 4863 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
|
|||||||||||
| 10.11.2014, 19:02 | |||||||||||
Сообщение было отмечено ctakah3112 как решение
Решение
Так встроить:
Каким образом можно открыть приложение в форме так, чтобы оно являлось дочерним окном? А задать ещё и положение и размер чуть сложнее:
Вспомогательный класс WinAPI
1
|
|||||||||||
|
1 / 1 / 0
Регистрация: 26.10.2014
Сообщений: 74
|
|
| 10.11.2014, 21:15 [ТС] | |
|
Спасибо большое, работает! )
Но что если ситуация такая, что если это внешнее приложение вообще не поддерживает изменения размера своего окна? (даже когда просто его запускаешь, нельзя ни расширить, ни сузить). Соответственно этот код применительно к нему не работает. Тут уже ничего поделать нельзя?
0
|
|
|
8951 / 4863 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
|
|
| 10.11.2014, 21:18 | |
|
Ну вот калькулятор из примера тоже нельзя ни расширить ни сузить, но с ним работает
0
|
|
|
1 / 1 / 0
Регистрация: 26.10.2014
Сообщений: 74
|
|
| 10.11.2014, 21:36 [ТС] | |
|
да, с калькулятором работает. Ну, значит приложение такое(
0
|
|
|
8951 / 4863 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
|
|
| 10.11.2014, 23:48 | |
|
Ну что ты расстраиваешьс . Я же не сказал, что нельзя. Можно через SetWindowLong. Но сначала надо бы через spy++ посмотреть стиль твоего окна, чтобы знать что менять
0
|
|
|
1 / 1 / 0
Регистрация: 26.10.2014
Сообщений: 74
|
|
| 11.11.2014, 14:19 [ТС] | |
|
Что я должен сделать? я запустил Spy++ и кажется нашел то самое окно. В раскрывающемся списке видно, что оно состоит из нескольких подокон как бы. Какая именно информация нужна?
0
|
|
|
8951 / 4863 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
|
|
| 12.11.2014, 06:57 | |
|
Открыть поиск окна:
Найти окно и нажать ОК. Появятся свойства окна, в которых нас интересует вкладка Styles: Если ты нашёл окно в основном дереве программы, то ПКМ→Properties
0
|
|
|
1 / 1 / 0
Регистрация: 26.10.2014
Сообщений: 74
|
|
| 12.11.2014, 14:07 [ТС] | |
|
0
|
|
|
8951 / 4863 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
|
|||||||||||
| 13.11.2014, 19:29 | |||||||||||
|
А дальше нужно получить стиль окна и изменить его, чтобы окно могло менять свой размер.
Вспомогательный класс WinAPI
В результате окно калькулятора встроено в форму и может менять свой размер
0
|
|||||||||||
|
1 / 1 / 0
Регистрация: 26.10.2014
Сообщений: 74
|
|
| 13.11.2014, 20:42 [ТС] | |
|
Спасибо, вот какую программу не попробую, для всех работает. А для моего долбаного приложения - нет
.Что в прошлой попытке, что в этой, результат такой: вместо захваченного окна конкретного размера, появляется кусок рабочего стола в рамке этого размера, а мое приложение так и остается незахваченным и, соответственно, так и не управляется по размеру.
0
|
|
|
8951 / 4863 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
|
|
| 14.11.2014, 18:34 | |
|
На этом мои знания заканчиваются и начинаются догадки. Нужно пробовать применить различные стили к окну, которых оно ещё не имеет. Попробуй включить стиль WS_MAXIMIZEBOX
0
|
|
|
0 / 0 / 2
Регистрация: 09.01.2014
Сообщений: 36
|
|
| 15.09.2015, 19:59 | |
|
Win 7 64
Пытаюсь загрузить стороннее приложение к себе на форму при помощи этого кода. Да калькулятор загружается, но нужная программа загружается не в моей форме, а сама по себе. На winxp sp 3 все работает. Где копать?
0
|
|
|
8951 / 4863 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
|
|
| 16.09.2015, 02:03 | |
|
Попробуй вместо int поставить int64
0
|
|
|
0 / 0 / 2
Регистрация: 09.01.2014
Сообщений: 36
|
|
| 16.09.2015, 08:19 | |
|
Сегодня пришел на работу, проверил на нескольких компах с windows 7 ultimate везде работает. Похоже проблема в моем софте.
0
|
|
|
0 / 0 / 0
Регистрация: 10.06.2015
Сообщений: 86
|
|
| 05.06.2016, 12:08 | |
|
ViterAlex, сделала так же как у вас, но показывает p.WaitForInputIdle();-здесь ошибку(
Добавлено через 17 часов 0 минут ctakah3112, Здравствуйте, а вы решили эту проблему?
0
|
|
|
8951 / 4863 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
|
|
| 05.06.2016, 22:03 | |
|
0
|
|
|
0 / 0 / 0
Регистрация: 10.06.2015
Сообщений: 86
|
|
| 06.06.2016, 00:16 | |
|
ViterAlex, А нет уже не показывает, до этого выводило что не возможно так.
0
|
|
|
0 / 0 / 0
Регистрация: 10.06.2015
Сообщений: 86
|
|
| 06.06.2016, 01:04 | |
|
ViterAlex, а вы не знаете как это исправить?
0
|
|
|
0 / 0 / 0
Регистрация: 10.06.2015
Сообщений: 86
|
|
| 06.06.2016, 01:10 | |
|
ViterAlex, или как поменять MainWindowHandle на EnumThreadWindows- написано если с main не работает то с enam может будет, я новичок, совсем не знаю как
0
|
|
| 06.06.2016, 01:10 | |
|
Помогаю со студенческими работами здесь
20
Встраивание программы в окно приложения qt Встраивание своих элементов в системные приложения Открыть форму внешнего отчета Вид внешнего окна формы Настройка внешнего вида окна Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
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. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|
|
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога
Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
|
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога
Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|