Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: VB.NET - Делегировать или нет ? Добавлено: 05.06.11 21:11  

Автор вопроса:  Wlad | ICQ: 6977577 
Попытался выудить дескрипторы всех главных окон =\.Получилось следующее:



Public Class Form1


    Declare Auto Function fw Lib "user32.dll" Alias "FindWindow" (ByVal lpClassName As String,ByVal lpWindowName As String) As Integer
    Declare Auto Function GetWindowText Lib "user32.dll" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal nMaxCount As Integer) As String
    Declare Auto Function EnumWindows Lib "user32" (ByVal lpEnumFunc As Long, ByVal lParam As Long) As Integer

    Public Function EnumWindowsProc(ByVal hwnd As Integer, ByVal lParam As Integer) As Boolean
        Dim capt As String
        Dim lenC As Integer
        capt = Space(255)
        lenC = GetWindowText(hwnd, capt, 255)
        MsgBox(lenC)
        EnumWindowsProc = True

    End Function




    Public Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load


        Form1.EnumWindows(AddressOf EnumWindowsProc, 0)



    End Sub


End Class



Пробую в Visual Studio...Перечитал много постов по поводу,что надо делегировать здесь,но здесь парень решил проблему в своем контексте(правда,в VBA):

http://www.aptem.net.ru/programming/vb/vb/other/callback.htm

Но у меня не работает...Заменил разве что String на Space.Помогите разобраться,делегированием-то не занимался ещё даже...

Ответить

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

Номер ответа: 1
Автор ответа:
 Ким Чен Ир



Вопросов: 0
Ответов: 140
 Профиль | | #1 Добавлено: 05.06.11 21:41
Курим?

  1.     Declare Auto Function GetWindowText Lib "user32.dll" Alias "GetWindowTextW" (ByVal hwnd As Integer, ByVal lpString As String, ByVal nMaxCount As Integer) As Integer
  2.     Declare Auto Function EnumWindows Lib "user32" (ByVal lpEnumFunc As EWProc, ByVal lParam As Integer) As Integer
  3.     Delegate Function EWProc(ByVal hwnd As Integer, ByVal lParam As Integer) As Boolean
  4.  
  5.  
  6.     Function EnumWindowsProc(ByVal hwnd As Integer, ByVal lParam As Integer) As Boolean
  7.         Dim capt As New String(New Char, 255)
  8.         Dim lenC As Integer
  9.         lenC = GetWindowText(hwnd, capt, 255)
  10.         MsgBox(capt)
  11.         EnumWindowsProc = True
  12.     End Function
  13.  
  14.     Public Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  15.         Form1.EnumWindows(AddressOf EnumWindowsProc, 0)
  16.     End Sub

Ответить

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



ICQ: 6977577 

Вопросов: 3
Ответов: 9
 Профиль | | #2 Добавлено: 05.06.11 22:03
Эм,всё работает,за исключением того,что MsgBox-ы не вылетают...

Ответить

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



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #3 Добавлено: 06.06.11 05:52
http://pinvoke.net/default.aspx/user32/EnumWindows.html

На этом сайте много примеров по использованию Win32API в .NET (правда восновном на C#)

Ответить

Страница: 1 |

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



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