Управление окнами приложений

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

aave
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 17
Зарегистрирован: 08.08.2012 (Ср) 8:37

Управление окнами приложений

Сообщение aave » 22.08.2012 (Ср) 7:44

Часто приходится организовывать видеоконференции и собирать окна веб-камер участников на дополнительном рабочем столе. Делать это вручную довольно муторно, т.к. участников может быть более 20-ти, кто-то постоянно присоединяется, кто-то выходит из конференции. Используются разные программы для конференций типа Yahoo Messenger, TeamTalk и другие. Хочу написать программу, которая бы располагала заданные мною программные окна в определённом месте экрана, задавала им размер, и т.п.

Возможно ли в принципе реализовать подобную задачу на VB.NET? Вообще существуют возможности, позволяющие управлять окнами сторонних приложений? Куда мне рыть? Спасибо!
Буду рад видеть вас в моём блоге SolTau.ru, посвящённом технике и технологиям!

Admiralisimys
Постоялец
Постоялец
 
Сообщения: 318
Зарегистрирован: 01.06.2009 (Пн) 10:26

Re: Управление окнами приложений

Сообщение Admiralisimys » 25.08.2012 (Сб) 18:55

aave возможно благодаря Win32 функции MoveWindow, которое не только позволяет задать положение окна но и его размер.
Синтаксис на VB.NET
Код: Выделить всё
'объявление
Private Declare Function MoveWindow Lib "user32" Alias "MoveWindow" (ByVal hWnd As IntPtr, ByVal X As Integer, ByVal Y As Integer, ByVal nWidth As Integer, ByVal nHeight As Integer, ByVal bRepaint As Boolean) As Boolean
'...
'использование
MoveWindow(hWindow, LocationX, LocationY, SizeX, SizeY, True)

aave
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 17
Зарегистрирован: 08.08.2012 (Ср) 8:37

Re: Управление окнами приложений

Сообщение aave » 26.08.2012 (Вс) 20:36

Спасибо большое! :)
По наводке нашёл рабочий пример, сделал всё на его основе - всё отлично работает!
Код: Выделить всё
<DllImport("user32.dll", EntryPoint:="FindWindow", SetLastError:=True, CharSet:=CharSet.Auto)> _
    Private Shared Function FindWindowByCaption(ByVal zero As IntPtr, ByVal lpWindowName As String) As IntPtr
    End Function

    <DllImport("user32.dll")> _
    Private Shared Function GetWindowRect(ByVal hWnd As HandleRef, ByRef lpRect As RECT) As Boolean
    End Function

    Private Declare Function MoveWindow Lib "user32.dll" (ByVal hwnd As IntPtr, ByVal x As IntPtr, ByVal y As IntPtr, ByVal nWidth As IntPtr, ByVal nHeight As IntPtr, ByVal bRepaint As IntPtr) As Boolean

    Public Structure rect
        Public Left As Integer
        Public Top As Integer
        Public Right As Integer
        Public Bottom As Integer
    End Structure

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Shell("calc.exe")
        Dim r As New rect
        Dim hw As IntPtr = FindWindowByCaption(IntPtr.Zero, "Калькулятор")
        Dim hr As New HandleRef(Nothing, hw)
        GetWindowRect(hr, r)
        MoveWindow(hw, 0, 0, 300, 500, True)
    End Sub
Буду рад видеть вас в моём блоге SolTau.ru, посвящённом технике и технологиям!


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 8

    TopList