Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/18: Рейтинг темы: голосов - 18, средняя оценка - 4.94
39 / 39 / 8
Регистрация: 15.08.2014
Сообщений: 634

Позиционирование размера/положения окна чужого процесса

29.01.2017, 18:25. Показов 3555. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!
Постоянно администрирую маленький сервер..
При загрузке сервера на рабочем столе присутсвуют порядка 7-8 окон. из которых 4 упорно не запоминают расположение и размер.
Задался целью написать программу которая бы при нахождении окна (по тимеру), автоматически изменяла его размеры и положение.

Отсюда задачи три:
1. определить по заголовку окна "окно" есть или нет... тут все просто.
2. определить размер и положение окна, если оно загружено (НЕ ЗНАЮ КАК...)
3. установить размер и положение окна, если оно загружено (НЕ ЗНАЮ КАК..)

Пробовал разные соффтины. Ни одна корректно не работает на Win10/WIn2012Server
Буду признателен за помощь с п. №2, 3.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.01.2017, 18:25
Ответы с готовыми решениями:

ChangerSizeWindows Позиционирование размера / положения окна чужого процесса
Всем привет! Постоянно администрирую маленький сервер.. При загрузке сервера на рабочем столе присутствуют порядка 7-8 окон. из которых...

Заполнить control в окне чужого процесса?
Есть скомпилированное приложение, написанное на Дельфи, которое позволяет настроить команды для запуска другого, совершенно постороннего...

Прочитать параметры запуска чужого процесса
Здравствуйте, коллеги! Требуется подсказка вот в каком вопросе. Запускается процесс с именем "msaccess.exe" и ему при запуске...

8
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
29.01.2017, 19:43
Лучший ответ Сообщение было отмечено kreotodr как решение

Решение

Цитата Сообщение от kreotodr Посмотреть сообщение
определить размер и положение окна, если оно загружено (НЕ ЗНАЮ КАК...)
Зачем это надо, если собираетесь всё равно менять размеры и положение?
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Private Type RECT
        Left As Long
        Top As Long
        Right As Long
        Bottom As Long
End Type
Private Declare Function CopyRect Lib "user32" (lpDestRect As RECT, lpSourceRect As RECT) As Long
Private Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long
Private Sub Form_Load()
   Dim rectWindow As RECT
       GetWindowRect Me.hwnd, rectWindow
      MsgBox "Координаты: X=" & Str$(rectWindow.Left) & " Y = " & Str$(rectWindow.Top)
End Sub
Цитата Сообщение от kreotodr Посмотреть сообщение
3. установить размер и положение окна, если оно загружено (НЕ ЗНАЮ КАК..)
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Private Declare Function IsWindowEnabled Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function MoveWindow Lib "user32" (ByVal hwnd As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal bRepaint As Long) As Long
Private Sub Form_Load()
     Dim bl As Boolean
    'Is the window enabled?
    bl = IsWindowEnabled(Me.hwnd)
      'Move the window
   If bl = True Then
          MoveWindow Me.hwnd, 0, 0, 200, 200, 1
    End If
End Sub
1
39 / 39 / 8
Регистрация: 15.08.2014
Сообщений: 634
30.01.2017, 07:10  [ТС]
Спасибо!
Буду пробовать...

Добавлено через 8 часов 42 минуты
Добрый день!
Все работает..

А вот тут не подсобите...
код ищет 100% совпадение по названию окна.
Visual Basic
1
2
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
hwnd = FindWindow(vbNullString, "Командная строка")
как подправить, на предмет не равно, а содержит в заголовке название?

Добавлено через 1 час 15 минут
Криво как то написал...
Суть вопроса, чтобы поиск был не по точному совпадению названия заголовка окна, а содержал в заголовке окна.
Пример:

Искомое окно "WinWord - Doc1.doc"
Поиск должен увенчаться успехом если ищем "WinWord" или "Doc1.doc" или "Doc1"....
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
30.01.2017, 07:50
Цитата Сообщение от kreotodr Посмотреть сообщение
код ищет 100% совпадение по названию окна.
Пробуйте по классу окна. У документа Word класс вроде "OpusApp", по крайней мере в 2007-м
Visual Basic
1
hwnd = FindWindow("OpusApp", vbNullString)
класс любого окна можно найти в утилите SPYXX.EXE.
0
39 / 39 / 8
Регистрация: 15.08.2014
Сообщений: 634
31.01.2017, 09:44  [ТС]
Цитата Сообщение от Pro_grammer Посмотреть сообщение
по классу окна.
Простите, а Вам не трудно скрин кинуть, где именно этот класс в Спу++ смотреть?
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
31.01.2017, 10:24
Цитата Сообщение от kreotodr Посмотреть сообщение
где именно этот класс
После запуска Spy++ выдаст полный список всех окон. Ищите своё по его заголовку
Например у меня Документ1- Microsoft Word

Сразу в этой же строчке имя класса окна OpusApp
1
39 / 39 / 8
Регистрация: 15.08.2014
Сообщений: 634
31.01.2017, 12:21  [ТС]
В целом все получилось..
Но как быть с окнами в заголовках которых Юникод???
0
39 / 39 / 8
Регистрация: 15.08.2014
Сообщений: 634
31.10.2017, 14:27  [ТС]
Коллеги еще разок нужна помощь...
Как программно развернуть свернутое на панель задач окно?

Добавлено через 6 минут
спасибо, нашел....
Visual Basic
1
Private Declare Function ShowWindow Lib "user32.dll" (ByVal hWnd As Long, ByVal nCmdShow As Long) As Long
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18031 / 7734 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
31.10.2017, 21:50
Цитата Сообщение от kreotodr Посмотреть сообщение
Но как быть с окнами в заголовках которых Юникод???
1. Объявить юникодную версию функции FindWindow
2. Задать имя окна, прочитав символы из внешнего файла либо через ChrW.
или
Как было сказано, искать по имени класса.

Цитата Сообщение от kreotodr Посмотреть сообщение
Суть вопроса, чтобы поиск был не по точному совпадению названия заголовка окна, а содержал в заголовке окна.
EnumWindows. Вы уже такой пользовались. Ну, можете ещё из моей проги вытащить пример.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
31.10.2017, 21:50
Помогаю со студенческими работами здесь

Перехват любого сообщения чужого окна на компьютере
Всем привет!! Народ есть у кого готовый макрос для перехвата сообщений на компьютере, что бы сообщения больше не появлялись?

Как добавить свою кнопку в title-bar ЧУЖОГО окна?
Как добавить свою кнопку в title-bar ЧУЖОГО окна? Насколько я понял, полазив по Сети, это непростая задача. Есть примеры добавления...

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

Разместить кнопку в окне "чужого" процесса
Как разместить кнопку в окне 'чужого' процесса и обрабатывать событие нажатия на кнопку?

Перехват сообщений "чужого" окна
Подскажите, пожайлуста. Есть ли API функция для отлова сообщений адресуемых окну принадлежащему другому приложению.(SetWindowLong не...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
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