Announcement

Collapse
No announcement yet.

adress of und deleganten

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • adress of und deleganten

    hallo zusammen,

    ich sitze ja gerade an der migration eines vb6 projektes. da ich bis vor 2 monaten eigentlich nur c++ und MFC programmiert habe, stosse ich immer wieder auf diverse probleme bei denen ich nicht weiter komme...

    der wizard gab mir zwar den link zur MSDN aber alle eigenen Versuche den upgradfehler zu beheben schlugen fehl. vielleicht kann mir jemand den passenden code zukommen lassen. die suche hier hat leider keinen post ergeben der damit etwas zu tun hatte!! besten dank im voraus!!!

    Code:
    Public Function CS_IsWindowActiv(ByRef sWidowName As String) As Boolean
    		Dim lRet As Integer
    		bIsWndAct = False
    		psIsWndAct = sWidowName
    		'UPGRADE_WARNING: Einen Delegaten für AddressOf O_IsWindowActiv hinzufügen Klicken Sie hier für weitere Informationen: 'ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?keyword="E9E157F7-EF0C-4016-87B7-7D7FBBC6EE08"'
    		lRet = EnumWindows(AddressOf O_IsWindowActiv, 0)
    		CS_IsWindowActiv = bIsWndAct
    	End Function
    also wenn jemand mir sagen kann wie ich diesen deleganten hier in meinen code einbauen muss...
    ich habe auch noch einen code gefunden, kann ihn aber nicht mit meinem kombinieren???

    Code:
    Callback Delegate
        Public Delegate Function EWCallBack(ByVal hwnd As Integer, ByVal lParam As Integer) As Integer
    
        ' Funktion mit Callback Parameter
        <System.Runtime.InteropServices.DllImport("user32")> _
        Public Shared Function EnumWindows(ByVal cb As EWCallBack, ByVal y As Integer) As Integer
        End Function
       
         ' Funktion mit Callback aufrufen
        Protected Overrides Sub onLoad(ByVal e As System.EventArgs)
            MyBase.OnLoad(e)
            EnumWindows(New EWCallBack(AddressOf ListWindows), 0)
        End Sub
    
        ' Callback Routine
       Public Function ListWindows(ByVal hwnd As Integer, ByVal lParam As Integer) As Integer
            ' ...
       End Function
    sven
    Zuletzt editiert von migrant; 17.03.2008, 11:31.

  • #2
    Hallo,

    das folgende Beispiel (es stammt noch aus der Visual Studio .NET 2002-Zeit) sollte das Problem lösen:

    [highlight=VBNet]
    Delegate Function EnumWindowsCallback(ByVal hWnd As Integer, ByVal lParam As Integer) As Integer

    Public Declare Ansi Function EnumWindows Lib "User32" (ByVal proc As EnumWindowsCallback, _
    ByVal pval As Integer) As Integer
    Public Declare Ansi Function GetWindowText Lib "User32" Alias "GetWindowTextA" (ByVal hWnd As Integer, _
    ByVal WindowName As String, ByVal BufferLength As Integer) As Integer

    Public Function DoEnumWindowNamesCallback(ByVal hWnd As Integer, ByVal lParam As Integer) As Integer
    Dim sWndName As New String(Chr(32), 255)
    Dim sName As String
    GetWindowText(hWnd, sWndName, 254)
    sName = Microsoft.VisualBasic.Left$(sWndName, InStr(sWndName, Chr(0)) - 1)
    If sName <> "" Then ListBox1.Items.Add(sName)
    Return (1)
    End Function

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    EnumWindows(AddressOf DoEnumWindowNamesCallback, 0)
    End Sub
    [/highlight]

    Comment


    • #3
      hi !! erstmal dank dir für deine antwort... leider blick ich als totalneuling durch den code nicht wirklich durch.. ich hab da was gefunden und mal eingefügt.. vielleicht kann sich das ja jemand angucken und sagen ob es generell so passen müsste????

      Code:
      'Allgemeine
      
          Public Delegate Function EWCallBack(ByVal hwnd As Integer, ByVal lParam As Integer) As Integer
      
          <System.Runtime.InteropServices.DllImport("user32")> _
          Public Shared Function EnumWindows(ByVal cb As EWCallBack, ByVal y As Integer) As Integer
          End Function
      
      
          Public Function CS_IsWindowActiv(ByRef sWidowName As String) As Boolean
      	Dim lRet As Integer
      	bIsWndAct = False
      	psIsWndAct = sWidowName
      	'UPGRADE_WARNING: Einen Delegaten für AddressOf O_IsWindowActiv hinzufügen Klicken Sie hier für weitere Informationen: 'ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?keyword="E9E157F7-EF0C-4016-87B7-7D7FBBC6EE08"'
              
              lRet = EnumWindows(New EWCallBack(AddressOf O_IsWindowActiv), 0)
      	CS_IsWindowActiv = bIsWndAct
      	
              End Function
      -------------------------------------------------	
      	'Allgemeine
      	Public Function O_IsWindowActiv(ByVal hWnd As Integer, ByVal lParam As Integer) As Integer
      	Dim sTitle As String
      	Dim sItem As String
      	Dim lLen As Integer
      	Dim lReturn As Integer
      	Dim lpRect As RECT
      		
      	lLen = GetWindowTextLength(hWnd) + 1
      	sTitle = New String(Chr(0), lLen + 1)
      		
      	'Get Text on Descriptor
      	lReturn = GetWindowText(hWnd, sTitle, lLen)
      	If lReturn > 0 Then
      		sItem = Left(sTitle, lReturn)
      	If sItem Like psIsWndAct Then
      		bIsWndAct = True
      		End If
      	End If
      		
      	'return
      	O_IsWindowActiv = 1
      	End Function

      Comment

      Working...
      X