Модераторы: diadiavova, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как определить размер окна в чужом приложении? 
:(
    Опции темы
Edgar4
  Дата 19.11.2014, 12:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 19.11.2014

Репутация: нет
Всего: нет



Здравствуйте!
Друзья подскажите, как по дескриптору окна или по его заголовку определить его размеры?

PM MAIL   Вверх
diadiavova
Дата 21.11.2014, 03:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 8
Всего: 142



Код

Imports System.Runtime.InteropServices


Понадобится такая структура
Код

    <StructLayout(LayoutKind.Sequential)>
    Structure RECT
        Public Top, Left, Right, Bottom As Integer
    End Structure



Импортируем винапи функцию
Код


    Declare Auto Function GetWindowRect Lib "user32" (hwnd As HandleRef, <Out> ByRef lprect As RECT) As Boolean


Ну и собственно код для получения размеров по хэндлу
Код

            Dim r As RECT
            GetWindowRect(New HandleRef(Nothing, w), r)
            Console.WriteLine("Top = {0}, Left = {1}, Right = {2}, Bottom = {3};", r.Top, r.Left, r.Right, r.Bottom)
Здесь w - хэндл окна.

С текстом немного сложнее.
Код

 Public Delegate Function EnumedWindow(handleWindow As IntPtr, [handles] As ArrayList) As Boolean
    Private Declare Auto Function EnumWindows Lib "user32" (ByVal lpEnumFunc As EnumedWindow, ByVal lParam As ArrayList) As Boolean

    Function GetWindows() As ArrayList
        Dim windowHandles = New ArrayList()
        Dim callBackPtr As EnumedWindow = AddressOf GetWindowHandle
        EnumWindows(callBackPtr, windowHandles)
        Return windowHandles
    End Function

    Private Function GetWindowHandle(windowHandle As IntPtr, windowHandles As ArrayList) As Boolean
        windowHandles.Add(windowHandle)
        Return True
    End Function


Вызвав GetWindows, получишь коллекцию хэндлов, там уже по ним можно получить текст с помощью GetWindowText.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума VB .NET
diadiavova
  • Прежде чем задать вопрос, воспользуйтесь поиском: возможно Ваш вопрос уже обсуждался и на него был получен ответ.
  • Если такой же вопрос не найден, не стоит задавать свой вопрос в любую тему, создайте новую.
  • Заголовок темы должен отображать ее суть.
  • Содержание поста должно описывать проблему понятно, но в то же время, по возможности, лаконично. Сначала следует описать суть вопроса, потом можно привести пример кода, не вынуждайте других участников угадывать в чем Ваша проблема - телепатов здесь нет.
  • Будьте взаимно вежливы и дружелюбны.
  • При оформлении сообщений используйте форматирование, примеры кода заключайте в теги [CODE=vbnet][/CODE].
  • Также ознакомьтесь с общими правилами, действующими на всем форуме.
  • Если вопрос решен, не забывайте помечать тему решенной(вверху темы есть ссылка). Кроме того, если Вы хотите отблагодарить участников, оказавших помощь в решении, можно повысить им репутацию, в случае, если у Вас менее 100 сообщений в форуме и функция изменения репутации Вам недоступна, можете написать сюда.
  • Общие вопросы по программированию на платформе .NET обсуждаются здесь.
  • Литература по VB .NET обсуждается здесь.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, diadiavova.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB .NET | Следующая тема »


 




[ Время генерации скрипта: 0.2940 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.