Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: Дайте модуль Добавлено: 12.03.10 22:25  

Автор вопроса:  FixedMixed
...Если у кого Уже есть для студии 2005 на языке басик. Модуль который получает имена всех открытых окон. Ну незнаю я где ошибка. Примеры чужие не работают.

Ответить

  Ответы Всего ответов: 11  

Номер ответа: 1
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #1 Добавлено: 13.03.10 02:20
Раз
  1. Imports System.Runtime.InteropServices
  2. Imports System.Text
  3. Imports System.Drawing
  4.  
  5. Friend Module Win32API
  6.     <DllImport("user32.dll", SetLastError:=True)> _
  7.     Public Function EnumWindows(ByVal lpEnumFunc As EnumThreadWindowsCallback, ByVal lParam As Integer) As Boolean
  8.     End Function
  9.  
  10.     <DllImport("user32.dll", SetLastError:=True)> _
  11.     Public Function EnumDesktopWindows(ByVal hDesktop As IntPtr, ByVal lpfn As EnumThreadWindowsCallback, ByVal lParam As Integer) As Boolean
  12.     End Function
  13.  
  14.     <DllImport("user32.dll", SetLastError:=True)> _
  15.     Public Function EnumChildWindows(ByVal hWndParent As IntPtr, ByVal lpEnumFunc As EnumThreadWindowsCallback, ByVal lParam As Integer) As Boolean
  16.     End Function
  17.  
  18.     Public Delegate Function EnumThreadWindowsCallback(ByVal hwnd As IntPtr, ByVal lParam As Integer) As Boolean
  19.  
  20.     <DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
  21.     Public Function GetWindowText(ByVal hwnd As IntPtr, ByVal lpString As StringBuilder, ByVal nMaxCount As Integer) As Integer
  22.     End Function
  23.  
  24.     <DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
  25.     Public Function SetWindowText(ByVal hwnd As IntPtr, ByVal lpString As String) As Boolean
  26.     End Function
  27.  
  28.     <DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
  29.     Public Function SetFocus(ByVal hwnd As IntPtr) As IntPtr
  30.     End Function
  31.  
  32.     <DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
  33.     Public Function SetForegroundWindow(ByVal hwnd As IntPtr) As Integer
  34.     End Function
  35.  
  36.     <DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
  37.     Public Function GetWindowTextLength(ByVal hwnd As IntPtr) As Integer
  38.     End Function
  39.  
  40.     <DllImport("kernel32.dll", SetLastError:=True)> _
  41.     Public Function TerminateProcess(ByVal hProcess As IntPtr, ByVal uExitCode As UInteger) As Boolean
  42.     End Function
  43.  
  44.     <DllImport("user32.dll", CharSet:=CharSet.Auto)> _
  45.     Public Function GetClassName(ByVal hWnd As System.IntPtr, ByVal lpClassName As System.Text.StringBuilder, ByVal nMaxCount As Integer) As Integer
  46.     End Function
  47.  
  48.     <DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
  49.     Public Function PostMessage(ByVal hWnd As IntPtr, ByVal Msg As UInteger, ByVal wParam As IntPtr, ByVal lParam As IntPtr) As IntPtr
  50.     End Function
  51.  
  52.     <DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto, entrypoint:="SendMessage")> _
  53.     Public Function SendMessage(ByVal hWnd As IntPtr, ByVal Msg As UInteger, ByVal wParam As IntPtr, ByVal lParam As IntPtr) As IntPtr
  54.     End Function
  55.  
  56.     <DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto, entrypoint:="SendMessage")> _
  57.     Public Function SendMessageAsInt32(ByVal hWnd As IntPtr, ByVal Msg As UInteger, ByVal wParam As IntPtr, ByVal lParam As IntPtr) As Int32
  58.     End Function
  59.  
  60.     <DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto, entrypoint:="SendMessage")> _
  61.     Public Function SendMessageAsInt32(ByVal hWnd As IntPtr, ByVal Msg As UInteger, ByVal wParam As Integer, ByVal lParam As Integer) As Int32
  62.     End Function
  63.  
  64.     <DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto, entrypoint:="SendMessage")> _
  65.     Public Function SendMessageAsInt32(ByVal hWnd As IntPtr, ByVal Msg As UInteger, ByVal wParam As Integer, ByVal lParam As StringBuilder) As Int32
  66.     End Function
  67.  
  68.     <DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto, entrypoint:="SendMessage")> _
  69.     Public Function SendMessage(ByVal hWnd As IntPtr, ByVal Msg As UInteger, ByVal wParam As Integer, ByVal lParam As String) As IntPtr
  70.     End Function
  71.  
  72.     <DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto, entrypoint:="SendMessage")> _
  73.     Public Function SendMessage(ByVal hWnd As IntPtr, ByVal Msg As UInteger, ByVal wParam As Integer, ByVal lParam As StringBuilder) As IntPtr
  74.     End Function
  75.  
  76.     <DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto, entrypoint:="SendMessage")> _
  77.     Public Function SendMessage(ByVal hWnd As IntPtr, ByVal Msg As UInteger, ByVal wParam As Integer, ByVal lParam As Integer) As IntPtr
  78.     End Function
  79.  
  80.     <DllImport("user32.dll")> _
  81.     Public Function AttachThreadInput(ByVal idAttach As IntPtr, ByVal idAttachTo As IntPtr, ByVal fAttach As Boolean) As Boolean
  82.     End Function
  83.  
  84.     <DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Unicode)> _
  85.     Public Function GetWindowThreadProcessId(ByVal hwnd As IntPtr, ByRef lpdwProcessId As IntPtr) As IntPtr
  86.     End Function
  87.  
  88.     <DllImport("kernel32.dll")> _
  89.     Public Function GetCurrentThreadId() As IntPtr
  90.     End Function
  91.  
  92.     <DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
  93.     Public Function ShowWindow(ByVal hwnd As IntPtr, ByVal nCmdShow As Int32) As Boolean
  94.     End Function
  95.  
  96.     <DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
  97.     Public Function MapWindowPoints(ByVal hWndFrom As IntPtr, ByVal hWndTo As IntPtr, ByRef lpPoints As POINT, ByVal cPoints As UInt32) As Integer
  98.     End Function
  99.  
  100.     <DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
  101.     Public Function MapWindowPoints(ByVal hWndFrom As IntPtr, ByVal hWndTo As IntPtr, ByRef lpPoints As RECT, ByVal cPoints As UInt32) As Integer
  102.     End Function
  103.  
  104.     <DllImport("user32.dll", ExactSpelling:=True, CharSet:=CharSet.Auto)> _
  105.     Public Function GetParent(ByVal hWnd As IntPtr) As IntPtr
  106.     End Function
  107.  
  108.     <DllImport("user32.dll")> _
  109.     Public Function GetWindowRect(ByVal hWnd As IntPtr, ByRef lpRect As RECT) As Boolean
  110.     End Function
  111.  
  112.     <DllImport("user32.dll")> _
  113.     Public Function mouse_event(ByVal dwFlags As Int32, ByVal dX As Int32, ByVal dY As Int32, ByVal cButtons As Int32, ByVal dwExtraInfo As Int32) As Boolean
  114.     End Function
  115.  
  116.     <DllImport("user32.dll", SetLastError:=True)> _
  117.     Public Function SetCursorPos(ByVal X As Integer, ByVal Y As Integer) As Boolean
  118.     End Function
  119.  
  120.     <DllImport("user32.dll", SetLastError:=True)> _
  121.     Public Function GetCursorPos(ByRef lpPoint As POINT) As Boolean
  122.     End Function
  123.  
  124.     <DllImport("user32.dll", ExactSpelling:=True)> _
  125.     Public Function GetAncestor(ByVal hwnd As IntPtr, ByVal gaFlags As Int32) As IntPtr
  126.     End Function
  127.  
  128.     <DllImport("user32.dll")> _
  129.     Public Function GetWindowPlacement(ByVal hWnd As IntPtr, ByRef lpwndpl As WINDOWPLACEMENT) As Boolean
  130.     End Function
  131.  
  132.     <DllImport("user32.dll")> _
  133.     Public Function GetAsyncKeyState(ByVal vKey As Int32) As Short
  134.     End Function
  135.  
  136.     <DllImport("gdi32.dll")> _
  137.     Public Function CreateRectRgnIndirect(ByRef lprc As RECT) As IntPtr
  138.     End Function
  139.  
  140.     <DllImport("user32.dll")> _
  141.     Public Function SetWindowRgn(ByVal hWnd As IntPtr, ByVal hRgn As IntPtr, ByVal bRedraw As Boolean) As Long
  142.     End Function
  143.  
  144.     <DllImport("user32.dll", SetLastError:=True)> _
  145.     Public Function SetWindowPos(ByVal hWnd As IntPtr, ByVal hWndInsertAfter As IntPtr, ByVal X As Integer, ByVal Y As Integer, ByVal cx As Integer, ByVal cy As Integer, ByVal uFlags As UInt32) As Boolean
  146.     End Function
  147.  
  148.  
  149. End Module


Два
  1. Imports System.Runtime.InteropServices
  2. Imports System.Text
  3. Imports System.Drawing
  4.  
  5. Friend Module Win32API_Constants
  6.     Public Const BM_CLICK As UInteger = &HF5
  7.     Public Const WM_COMMAND As UInteger = &H111
  8.     Public Const WM_SETTEXT As UInteger = &HC
  9.     Public Const WM_GETTEXT As UInteger = &HD
  10.     Public Const WM_GETTEXTLENGTH As UInteger = &HE
  11.     Public Const WM_LBUTTONDOWN As UInteger = &H201
  12.     Public Const WM_LBUTTONUP As UInteger = &H202
  13.     Public Const WM_CLOSE As UInteger = &H10
  14.     Public Const WM_ACTIVATE As UInteger = &H6
  15.  
  16.     Public Const MK_LBUTTON As Integer = 1
  17.  
  18.     Public Const MOUSEEVENTF_MOVE As Int32 = &H1 '  mouse move
  19.     Public Const MOUSEEVENTF_LEFTDOWN As Int32 = &H2 '  left button down
  20.     Public Const MOUSEEVENTF_LEFTUP As Int32 = &H4 '  left button up
  21.     Public Const MOUSEEVENTF_RIGHTDOWN As Int32 = &H8 '  right button down
  22.     Public Const MOUSEEVENTF_RIGHTUP As Int32 = &H10 '  right button up
  23.     Public Const MOUSEEVENTF_MIDDLEDOWN As Int32 = &H20 '  middle button down
  24.     Public Const MOUSEEVENTF_MIDDLEUP As Int32 = &H40 '  middle button up
  25.     Public Const MOUSEEVENTF_ABSOLUTE As Int32 = &H8000 '  absolute move
  26.     Public Const MOUSEEVENTF_WHEEL As Int32 = &H800 ' wheel button rolled
  27.  
  28.     Public Const GA_PARENT As Int32 = 1
  29.     Public Const GA_ROOT As Int32 = 2
  30.     Public Const GA_ROOTOWNER As Int32 = 3
  31.  
  32.     Public Const WA_INACTIVE As Integer = 0
  33.     Public Const WA_ACTIVE As Integer = 1
  34.     Public Const WA_CLICKACTIVE As Integer = 2
  35.  
  36.     Public Const SW_HIDE As Integer = 0
  37.     Public Const SW_SHOWNORMAL As Integer = 1
  38.     Public Const SW_NORMAL As Integer = 1
  39.     Public Const SW_SHOWMINIMIZED As Integer = 2
  40.     Public Const SW_SHOWMAXIMIZED As Integer = 3
  41.     Public Const SW_MAXIMIZE As Integer = 3
  42.     Public Const SW_SHOWNOACTIVATE As Integer = 4
  43.     Public Const SW_SHOW As Integer = 5
  44.     Public Const SW_MINIMIZE As Integer = 6
  45.     Public Const SW_SHOWMINNOACTIVE As Integer = 7
  46.     Public Const SW_SHOWNA As Integer = 8
  47.     Public Const SW_RESTORE As Integer = 9
  48.     Public Const SW_SHOWDEFAULT As Integer = 10
  49.     Public Const SW_FORCEMINIMIZE As Integer = 11
  50.     Public Const SW_MAX As Integer = 11
  51.  
  52.     Public Const VK_LBUTTON As Integer = 1
  53.     Public Const VK_RBUTTON As Integer = 2
  54.     Public Const VK_MBUTTON As Integer = 4
  55.  
  56.     Public Const CB_GETCOUNT As Integer = &H146
  57.     Public Const CB_GETLBTEXT As Integer = &H148
  58.     Public Const CB_GETLBTEXTLEN As Integer = &H149
  59.     Public Const CB_SETCURSEL As Integer = &H14E
  60.     Public Const CB_GETCURSEL As Integer = &H147
  61.  
  62.     Public ReadOnly HWND_NOTOPMOST As IntPtr = New IntPtr(-2)
  63.  
  64.     Public Const SWP_NOSIZE As Integer = &H1
  65.     Public Const SWP_SHOWWINDOW As Integer = &H40
  66. End Module


Три
  1. Imports System.Runtime.InteropServices
  2. Imports System.Text
  3. Imports System.Drawing
  4.  
  5. Friend Module Win32API_Structures
  6.     <StructLayout(LayoutKind.Sequential)> _
  7.     Public Structure POINT
  8.         Public X As Integer
  9.         Public Y As Integer
  10.  
  11.         Public Sub New(ByVal x As Integer, ByVal y As Integer)
  12.             Me.X = x
  13.             Me.Y = y
  14.         End Sub
  15.     End Structure
  16.  
  17.     <StructLayout(LayoutKind.Sequential)> _
  18.     Public Structure RECT
  19.         Public Left As Integer
  20.         Public Top As Integer
  21.         Public Right As Integer
  22.         Public Bottom As Integer
  23.  
  24.         Public Sub New(ByVal Rectangle As Rectangle)
  25.             Me.New(Rectangle.Top, Rectangle.Left, Rectangle.Right, Rectangle.Bottom)
  26.         End Sub
  27.         Public Sub New(ByVal left As Integer, ByVal top As Integer, ByVal right As Integer, ByVal bottom As Integer)
  28.             Me.Left = left
  29.             Me.Top = top
  30.             Me.Right = right
  31.             Me.Bottom = bottom
  32.         End Sub
  33.     End Structure
  34.  
  35.     <StructLayout(LayoutKind.Sequential)> _
  36.     Public Structure WINDOWPLACEMENT
  37.         Public length As Integer
  38.         Public flags As Integer
  39.         Public showCmd As Integer
  40.         Public minPosition As POINT
  41.         Public maxPosition As POINT
  42.         Public normalPosition As RECT
  43.     End Structure
  44. End Module


Четыре
  1. Imports System.Runtime.InteropServices
  2.  
  3.  
  4. Public Class NativeMouse
  5.     Public Enum MouseAction As Int32
  6.         Move = &H1 '  mouse move
  7.         LeftDown = &H2 '  left button down
  8.         LeftUp = &H4 '  left button up
  9.         RightDown = &H8 '  right button down
  10.         RightUp = &H10 '  right button up
  11.         MiddleDown = &H20 '  middle button down
  12.         MiddleUp = &H40 '  middle button up
  13.         Wheel = &H800 ' wheel button rolled
  14.     End Enum
  15.  
  16.     Public Shared Sub MakeAction(ByVal action As MouseAction, ByVal x As Integer, ByVal y As Integer)
  17.         Win32API.mouse_event(action Or MOUSEEVENTF_ABSOLUTE, x, y, 0, 0)
  18.     End Sub
  19.  
  20.     Public Shared Sub LeftClick(ByVal x As Integer, ByVal y As Integer)
  21.         Dim OldPoint As POINT
  22.         Win32API.GetCursorPos(OldPoint)
  23.         Win32API.SetCursorPos(x, y)
  24.         Win32API.mouse_event(MouseAction.LeftDown, 0, 0, 0, 0)
  25.         Win32API.mouse_event(MouseAction.LeftUp, 0, 0, 0, 0)
  26.         SetCursorPos(OldPoint.X, OldPoint.Y)
  27.     End Sub
  28.  
  29.     Public Shared ReadOnly Property LeftButtonPressed() As Boolean
  30.         Get
  31.             Return Win32API.GetAsyncKeyState(VK_LBUTTON) <> 0
  32.         End Get
  33.     End Property
  34.  
  35.     Public Shared ReadOnly Property RightButtonPressed() As Boolean
  36.         Get
  37.             Return Win32API.GetAsyncKeyState(VK_RBUTTON) <> 0
  38.         End Get
  39.     End Property
  40.  
  41.     Public Shared ReadOnly Property MiddleButtonPressed() As Boolean
  42.         Get
  43.             Return Win32API.GetAsyncKeyState(VK_RBUTTON) <> 0
  44.         End Get
  45.     End Property
  46.  
  47.     Public Shared ReadOnly Property AnyButtonPressed() As Boolean
  48.         Get
  49.             Return LeftButtonPressed Or RightButtonPressed Or MiddleButtonPressed
  50.         End Get
  51.     End Property
  52.  
  53.  
  54. End Class


Пять
  1. Imports System.Text
  2.  
  3. Friend Class NativeWindow
  4.     Private _Handle As IntPtr
  5.  
  6.     Public Sub New(ByVal handle As IntPtr)
  7.         _Handle = handle
  8.     End Sub
  9.  
  10.     Public ReadOnly Property Handle() As IntPtr
  11.         Get
  12.             Return _Handle
  13.         End Get
  14.     End Property
  15.  
  16.     Public ReadOnly Property ProcessId() As Integer
  17.         Get
  18.             Dim Result As IntPtr
  19.             Win32API.GetWindowThreadProcessId(Handle, Result)
  20.             Return Result.ToInt32
  21.         End Get
  22.     End Property
  23.  
  24.     Public Property Text() As String
  25.         Get
  26.             Dim TextLength = Win32API.GetWindowTextLength(Handle)
  27.             Dim SB As New StringBuilder("", TextLength + 1)
  28.             Win32API.GetWindowText(Handle, SB, TextLength + 1)
  29.             Return SB.ToString()
  30.         End Get
  31.         Set(ByVal value As String)
  32.             Win32API.SetWindowText(Handle, value)
  33.         End Set
  34.     End Property
  35.  
  36.     Public Function GetAllChildWindows() As List(Of NativeWindow)
  37.         Dim Enumerator As New WindowEnumerator()
  38.         EnumChildWindows(Handle, AddressOf Enumerator.EnumThreadWindowsCallback, 0)
  39.         Return Enumerator.List
  40.     End Function
  41.  
  42.     Public Function GetChildWindows() As List(Of NativeWindow)
  43.         Return (From w In GetAllChildWindows() _
  44.                 Where w.ParentWindowHandle = Handle) _
  45.                 .ToList
  46.     End Function
  47.  
  48.     Public ReadOnly Property ClassName() As String
  49.         Get
  50.             Dim SB As New StringBuilder("", 255)
  51.             Dim Length = Win32API.GetClassName(Handle, SB, 255)
  52.             SB.Length = Length
  53.             Return SB.ToString
  54.         End Get
  55.     End Property
  56.  
  57.     Public Sub SendClick()
  58.         Win32API.SendMessage(Me.Handle, BM_CLICK, IntPtr.Zero, IntPtr.Zero)
  59.         'Win32API.SendMessageIntegerInteger(Me.Handle, WM_LBUTTONDOWN, 1, &HD0029)
  60.         'Win32API.SendMessageIntegerInteger(Me.Handle, WM_LBUTTONUP, 0, &HD0029)
  61.     End Sub
  62.  
  63.     Public Sub SendClickAsync()
  64.         Win32API.PostMessage(Me.Handle, BM_CLICK, IntPtr.Zero, IntPtr.Zero)
  65.     End Sub
  66.  
  67.     Public Sub Show()
  68.         Win32API.ShowWindow(Me.Handle, SW_SHOW)
  69.     End Sub
  70.  
  71.     Public Sub Hide()
  72.         Win32API.ShowWindow(Me.Handle, SW_HIDE)
  73.     End Sub
  74.  
  75.     Public ReadOnly Property ParentWindowHandle() As IntPtr
  76.         Get
  77.             Return Win32API.GetParent(Handle)
  78.         End Get
  79.     End Property
  80.  
  81.     Public ReadOnly Property RootWindowHandle() As IntPtr
  82.         Get
  83.             Return Win32API.GetAncestor(Handle, GA_ROOT)
  84.         End Get
  85.     End Property
  86.  
  87.     Public Property ContentText() As String
  88.         Get
  89.             Dim Length As Integer = SendMessageAsInt32(Handle, WM_GETTEXTLENGTH, IntPtr.Zero, IntPtr.Zero)
  90.             Dim SB As New StringBuilder("", Length)
  91.             SendMessage(Handle, WM_GETTEXT, Length + 1, SB)
  92.             Return SB.ToString
  93.         End Get
  94.         Set(ByVal value As String)
  95.             SendMessage(Handle, WM_SETTEXT, 0, value)
  96.         End Set
  97.     End Property
  98.  
  99.     Public Sub SetForeground()
  100.         Win32API.ShowWindow(Handle, SW_SHOW)
  101.         Win32API.ShowWindow(Handle, SW_SHOWNORMAL)
  102.  
  103.         Win32API.SetForegroundWindow(Handle)
  104.     End Sub
  105.  
  106.     Public Sub SetFocus()
  107.         Win32API.SetFocus(Handle)
  108.     End Sub
  109.  
  110.     Public ReadOnly Property ThreadId() As IntPtr
  111.         Get
  112.             Dim ProccessID As IntPtr
  113.             Return Win32API.GetWindowThreadProcessId(Handle, ProccessID)
  114.         End Get
  115.     End Property
  116.  
  117.     Public Sub Close()
  118.         Win32API.SendMessage(Handle, WM_CLOSE, IntPtr.Zero, IntPtr.Zero)
  119.     End Sub
  120.  
  121.     Public Function ClientToScreen(ByVal point As POINT) As POINT
  122.         Dim Result As POINT = point
  123.         Win32API.MapWindowPoints(Handle, IntPtr.Zero, Result, 1)
  124.         Return Result
  125.     End Function
  126.  
  127.     Public Function ScreenToClient(ByVal point As POINT) As POINT
  128.         Dim Result As POINT = point
  129.         Win32API.MapWindowPoints(IntPtr.Zero, Handle, Result, 1)
  130.         Return Result
  131.     End Function
  132.  
  133.     Public Function ScreenToClient(ByVal rect As RECT) As RECT
  134.         Dim Result As RECT = rect
  135.         Win32API.MapWindowPoints(IntPtr.Zero, Handle, Result, 2)
  136.         Return Result
  137.     End Function
  138.  
  139.     Public Function ClientToOtherClient(ByVal point As POINT, ByVal otherHandle As IntPtr) As POINT
  140.         Dim Result As POINT = point
  141.         Win32API.MapWindowPoints(Handle, otherHandle, Result, 1)
  142.         Return Result
  143.     End Function
  144.  
  145.     Public Function OtherClientToClient(ByVal point As POINT, ByVal otherHandle As IntPtr) As POINT
  146.         Dim Result As POINT = point
  147.         Win32API.MapWindowPoints(otherHandle, Handle, Result, 1)
  148.         Return Result
  149.     End Function
  150.  
  151.     Public ReadOnly Property ScreenRect() As RECT
  152.         Get
  153.             Dim Result As RECT
  154.             Win32API.GetWindowRect(Handle, result)
  155.             Return Result
  156.         End Get
  157.     End Property
  158.  
  159.     Public Sub EmulateClick()
  160.         WaitFor(Function() Not NativeMouse.AnyButtonPressed)
  161.         Dim RootWindow = New NativeWindow(Me.RootWindowHandle)
  162.  
  163.         Dim Res = SetWindowPos(RootWindow.Handle, HWND_NOTOPMOST, 100, 100, 0, 0, SWP_NOSIZE)
  164.  
  165.         'RootWindow.Show()
  166.         Dim Rect = ScreenRect
  167.  
  168.  
  169.         'Dim ToRootRect = RootWindow.ScreenToClient(Rect)
  170.  
  171.         'ToRootRect.Top += 23
  172.         'ToRootRect.Left += 5
  173.         'ToRootRect.Bottom = ToRootRect.Top + 20
  174.         'ToRootRect.Right = ToRootRect.Left + 20
  175.  
  176.         'Dim Rgn = Win32API.CreateRectRgnIndirect(ToRootRect)
  177.         'SetWindowRgn(RootWindow.Handle, Rgn, True)
  178.  
  179.         RootWindow.SetForeground()
  180.         NativeMouse.LeftClick(Rect.Left + 5, Rect.Top + 5)
  181.         'RootWindow.Hide()
  182.     End Sub
  183.  
  184.     Public Function GetComboItems() As List(Of String)
  185.         Dim Result As New List(Of String)
  186.         Dim ItemsCount = SendMessageAsInt32(Handle, CB_GETCOUNT, IntPtr.Zero, IntPtr.Zero)
  187.         For i = 0 To ItemsCount - 1
  188.             Dim Length = SendMessageAsInt32(Handle, CB_GETLBTEXTLEN, i, 0)
  189.             Dim SB As New StringBuilder(Length)
  190.             Dim Readed = SendMessageAsInt32(Handle, CB_GETLBTEXT, i, SB)
  191.             Result.Add(SB.ToString)
  192.         Next
  193.         Return Result
  194.     End Function
  195.  
  196.     Public Function GetComboSelectedIndex() As Integer
  197.         Return SendMessageAsInt32(Handle, CB_GETCURSEL, 0, 0)
  198.     End Function
  199.  
  200.     Public Sub SetComboSelectedIndex(ByVal index As Integer)
  201.         SendMessage(Handle, CB_SETCURSEL, index, 0)
  202.     End Sub
  203.  
  204.     Public Shared Function GetTopLevelWindows() As List(Of NativeWindow)
  205.         Dim Enumerator As New WindowEnumerator()
  206.         EnumWindows(AddressOf Enumerator.EnumThreadWindowsCallback, 0)
  207.         Return Enumerator.List
  208.     End Function
  209.  
  210.     Public Shared Function GetDesktopWindows() As List(Of NativeWindow)
  211.         Dim Enumerator As New WindowEnumerator()
  212.         EnumDesktopWindows(IntPtr.Zero, AddressOf Enumerator.EnumThreadWindowsCallback, 0)
  213.         Return Enumerator.List
  214.     End Function
  215.  
  216.  
  217.     Private Class WindowEnumerator
  218.         Private _List As New List(Of NativeWindow)
  219.         Public Function EnumThreadWindowsCallback(ByVal hwnd As IntPtr, ByVal lParam As Integer) As Boolean
  220.             _List.Add(New NativeWindow(hwnd))
  221.             Return True
  222.         End Function
  223.  
  224.         Public ReadOnly Property List() As List(Of NativeWindow)
  225.             Get
  226.                 Return _List
  227.             End Get
  228.         End Property
  229.     End Class
  230. End Class


Шесть
  1.         For Each Window In NativeWindow.GetTopLevelWindows()
  2.             Console.WriteLine(Window.Text)
  3.         Next


Если есть желание, выбери только те что нужно

Ответить

Номер ответа: 2
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #2
Добавлено: 13.03.10 02:22
Вот она — компактность дотнета!

Ответить

Номер ответа: 3
Автор ответа:
 UnDeAdZak



Вопросов: 80
Ответов: 476
 Профиль | | #3 Добавлено: 13.03.10 18:10
разница между пятым и шестым поражает

Ответить

Номер ответа: 4
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #4 Добавлено: 13.03.10 20:54
Вот она — компактность дотнета!

все гораздо банальнее.. это человеческая лень.

Ответить

Номер ответа: 5
Автор ответа:
 FixedMixed



Вопросов: 11
Ответов: 34
 Профиль | | #5 Добавлено: 13.03.10 22:11
Артем. Ты наверное прочитал только название темы. Мне нужен не любой модуль. Он должен возвращать имена окон. Во втором вообще токо константы. Где там возврат имен? В 3 тоже не вижу. В 4 причем тут мышь вообще? В 6 у меня не работает наверное визуал студия не та. 5 и 1 ша буду разбираться.

Ответить

Номер ответа: 6
Автор ответа:
 FixedMixed



Вопросов: 11
Ответов: 34
 Профиль | | #6 Добавлено: 13.03.10 22:20
А, это все часть одного проекта. Понятно. Это мне не пригодится. У кого нить другого есть одним модулем? Чтобы поменьше мусора.

Ответить

Номер ответа: 7
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #7 Добавлено: 14.03.10 00:47
Artyom, ну ты чо ему мусор подсовываешь? А ну быстренько взял и написал ему модуль для поиска окон! Он что, разбираться со всей этой фигней должен что ли???

Ответить

Номер ответа: 8
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #8 Добавлено: 14.03.10 01:15
Sharp пишет:
Вот она — компактность дотнета!

Столько кода потому что помимо перебора списка окон мне требовались и другие операции с объектами Windows.

Я думал это очень очевидно, но, видимо, нужно пояснить.
Первые 3 части - это декларации функций Win32API, констант и структур которые используются при вызове функций Win32API.

4 - управляемая обертка для выполнения некоторых операций с мышкой
5 - управляемая обертка для работы с окнами (как с объектами)
6 - код который, используя все вышеописанное, выполняет перебор окон.

FixedMixed пишет:
Артем. Ты наверное прочитал только название темы. Мне нужен не любой модуль.

Упс, извини. Ты попросил модуль перебора окон, а я непредусмотрительно дал тебе модуль математических рассчетов

FixedMixed пишет:
А, это все часть одного проекта. Понятно. Это мне не пригодится. У кого нить другого есть одним модулем? Чтобы поменьше мусора.

Если соберешь все это вместе, то получишь перебор окон (6-я часть как раз и выполняет его). Если ты думаешь что я буду лично для тебя удалять из кода ненужные только для перебора декларции и константы, ты ошибаешься. Тебе прийдется самому этим заняться.
Или, если уж на то пошло, потрудиться набрать в гугле EnumWindows и GetWindowText.

Ответить

Номер ответа: 9
Автор ответа:
 FixedMixed



Вопросов: 11
Ответов: 34
 Профиль | | #9 Добавлено: 14.03.10 21:51
Я не просил вырезать ненужную часть. По моему первому посту же ясно что я просил тех у кого Уже есть одним модулем. Предполагается что вам нужно только нажать ctrl-c + ctrl-v. A сам я не буду разбирать потому что у меня интернет-мобильная опера. И только! А насчет гугл- я Уже несколько примеров вручную с экрана телефона пробовал писать но не один не работал. И основная масса найденых была для с++ и делф

Ответить

Номер ответа: 10
Автор ответа:
 FixedMixed



Вопросов: 11
Ответов: 34
 Профиль | | #10 Добавлено: 14.03.10 21:57
Может хоть исправите мой код из предыдущей моей темы? Я Уже не знаю что делать. Запарился.

Ответить

Номер ответа: 11
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #11 Добавлено: 14.03.10 23:35
  1.     <DllImport("user32.dll", SetLastError:=True)> _
  2.     Public Function EnumWindows(ByVal lpEnumFunc As EnumThreadWindowsCallback, ByVal lParam As Integer) As Boolean
  3.     End Function
  4.  
  5.     Public Delegate Function EnumThreadWindowsCallback(ByVal hwnd As IntPtr, ByVal lParam As Integer) As Boolean
  6.  
  7.     <DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
  8.     Public Function GetWindowText(ByVal hwnd As IntPtr, ByVal lpString As System.Text.StringBuilder, ByVal nMaxCount As Integer) As Integer
  9.     End Function
  10.  
  11.     <DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
  12.     Public Function GetWindowTextLength(ByVal hwnd As IntPtr) As Integer
  13.     End Function
  14.  
  15.     Public Function EnumWindowsProc(ByVal hwnd As IntPtr, ByVal lParam As Integer) As Boolean
  16.         Dim TextLength = GetWindowTextLength(hwnd)
  17.         Dim SB As New System.Text.StringBuilder("", TextLength + 1)
  18.         GetWindowText(hwnd, SB, TextLength + 1)
  19.         Console.WriteLine(SB.ToString())
  20.         Return True
  21.     End Function
  22.  
  23.     Public Sub Main()
  24.         EnumWindows(AddressOf EnumWindowsProc, 0)
  25.         Console.ReadLine()
  26.     End Sub

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам