Visual Basic.NET - ¿Es posible detectar ventanas abiertas en windows y su posicion?

 
Vista:
sin imagen de perfil
Val: 3
Ha disminuido su posición en 20 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

¿Es posible detectar ventanas abiertas en windows y su posicion?

Publicado por juan (2 intervenciones) el 01/08/2018 19:06:39
Hola ,
quiero hacer un programa que detecte las ventanas que están abiertas en windows al detectar por ejemplo a través del titulo de la ventana un nombre especifico quiero que se sobreponga por ejemplo un form transparente con un label que contengo¡a información extra y al mover esta pantalla siga estando en la misma posición respecto a la ventana.
He estado buscando información pero no se por donde empezar.
¿Alguien puede echarme una mano aunque sea solo orientándome un poco?
Gracias de antemano.
Un saludo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 3
Ha disminuido su posición en 20 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

¿Es posible detectar ventanas abiertas en windows y su posicion?

Publicado por juan (2 intervenciones) el 01/08/2018 20:17:52
Algo así parece que valdría
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
Imports System.Runtime.InteropServices
 
Imports System.Diagnostics
Public Class Form1
 
    Dim ventanaName As String
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        For Each p As Process In Process.GetProcesses
 
            If p.MainWindowTitle = Nothing Then
 
            Else
 
                ListBox1.Items.Add(p.MainWindowTitle)
 
            End If
        Next
        ventanaName = ListBox1.SelectedItem
 
    End Sub
 
    <DllImport("user32.dll", EntryPoint:="FindWindowW")>
    Private Shared Function FindWindowW(<MarshalAs(UnmanagedType.LPTStr)> ByVal lpClassName As String, <MarshalAs(UnmanagedType.LPTStr)> ByVal lpWindowName As String) As IntPtr
    End Function
 
    <DllImport("user32.dll", EntryPoint:="GetWindowRect")>
    Private Shared Function GetWindowRect(ByVal hWnd As IntPtr, ByRef lpRect As RECT) As <MarshalAs(UnmanagedType.Bool)> Boolean
    End Function
 
    <StructLayout(LayoutKind.Sequential)>
    Private Structure RECT
        Public left, top, right, bottom As Integer
    End Structure
 
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
 
        Dim hWnd As IntPtr = FindWindowW(Nothing, ventanaName) '"untitled - notepad")
        If hWnd <> IntPtr.Zero Then
            Dim wr As New RECT
            GetWindowRect(hWnd, wr)
            MessageBox.Show("The window position is - X=" & wr.left.ToString & "  Y=" & wr.top.ToString)
        Else
            MessageBox.Show("Window not found")
        End If
 
    End Sub
 
 
 
 
End Class
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar