02 декабря 2015
Кравченко Виктор

Как осуществить взаимодействие со сторонним приложением — изменение положения/размера, получение текста заголовка и т.д.

VB.NET Полезные функции Visual Studio 2013 .NET
01

Алгоритм простой — для начала нам необходимо получить хендл (handle) окна, над которым мы будем проводить манипуляции. Это можно сделать по названию процесса при помощи объекта Process — получаем процесс методом GetProcessesByName(), а затем из процесса методом MainWindowHandle получаем указатель на окно (handle). После этого с окном можно производить различные манипуляции — получать информацию, изменять свойства, отправлять сообщения и т.д. Далее листинг функции получающей текст заголовка окна (в случае наличия такового):

Синтаксис и описания функций user32.dll на VB.NET и С# можно найти на сайте Pinvoke.net
02 VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Imports System.Runtime.InteropServices
Public Class frmMain <DllImport("user32.dll", EntryPoint:="GetWindowText")>
Public Shared Function GetWindowText(ByVal hwnd As IntPtr, ByVal lpString As System.Text.StringBuilder, ByVal cch As Integer) As Integer End Function
<DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
Private Shared Function GetWindowTextLength(ByVal hwnd As IntPtr) As Integer End Function
Private Sub frmMain_Load(sender As Object, e As EventArgs) Handles MyBase.Load Dim proc As Process = Process.GetProcessesByName("TOTALCMD64").FirstOrDefault If proc Is Nothing Then Return Dim hWnd As IntPtr = proc.MainWindowHandle ' Получаем хендл окна ' Получение текста заголовка окна Dim length As Integer = GetWindowTextLength(hWnd) If length = 0 Then Return ' Текст отсутствует Dim sb As New System.Text.StringBuilder("", length) GetWindowText(hWnd, sb, sb.Capacity + 1) ' Получаем результат работы функции в переменную sb Console.WriteLine(sb.ToString) End Sub
End Class
03
Результат выполнения — получен заголовок окна Total Commander
Результат выполнения — получен заголовок окна Total Commander
04

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

06

Похожие запросы:

  • Как программно изменить размер/переместить окно стороннего приложения
  • Get Window Caption by Other Application
  • Obtaining External Window Handles and Window Captions
  • Set Window Position in VB relative to another application
comments powered by HyperComments