none
VB6 소스를 VB 2010 소스로 좀 바꿔주세요 RRS feed

  • 질문


  •     Private Declare Function GetForegroundWindow Lib "user32" () As Long
        Private Declare Function GetWindowText Lib "user32" Alias _
        "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
        Private Declare Function GetWindowTextLength Lib "user32" Alias "GetWindowTextLengthA" (ByVal hwnd As Long) As Long

        Private Sub Timer1_Tick(sender As System.Object, e As System.EventArgs) Handles Timer1.Tick
            Dim WinName As String
            WinName = ToString()
            WinName = Trim(WinName)
            GetWindowText(GetForegroundWindow, WinName, GetWindowTextLength(GetForegroundWindow) + 2)

            Text1.Text = Text1.Text & "지금 실행되고 있는 프로그램은" & WinName
            Text1.Text = Text1.Text & "입니다" & vbCrLf
            Text1.SelectionStart = Len(Text1.Text)
     
        End Sub

    ------------------------

    위에 코드를 비베 2010에서 사용할 수 있는 소스로 좀 바꿔주세요

    2013년 11월 9일 토요일 오전 7:21

답변

  • Imports System.Runtime.InteropServices
    Imports System.Text
    Public Class Form1
        <DllImport("User32", CharSet:=CharSet.Auto)>
        Private Shared Function GetForegroundWindow() As IntPtr
        End Function
    
        <DllImport("User32", CharSet:=CharSet.Auto)>
        Private Shared Function GetWindowText(ByVal Handle As IntPtr, ByVal lpString As StringBuilder, ByVal cch As Int32) As Int32
        End Function
    
    
        Private Sub Timer1_Tick(sender As System.Object, e As System.EventArgs) Handles Timer1.Tick
            Dim WinName As New StringBuilder(260),
                hForegroundWindow As IntPtr = GetForegroundWindow()
    
            If hForegroundWindow <> IntPtr.Zero Then
                If GetWindowText(hForegroundWindow, WinName, 260) <> 0 Then
                    Text1.Text = "지금 실행되고 있는 프로그램은 " & WinName.ToString() & " 입니다."
                Else
                    Text1.Text = "GetWindowText 실패!"
                End If
            Else
                Text1.Text = "GetForegroundWindow 실패!"
            End If
      
        End Sub
    End Class

    * 굳이 Text1.SelectionStart 속성을 사용하실 필요는 없습니다.

    * 올려주신 코드는 VB.NET 코드입니다.

    * VB6과 VB.NET에서의 자료형은 약간식 차이가 납니다.

    API 호출할 때 VB6에서 사용했던 자료형은 이렇게 바뀝니다.

    Integer -> Short / UShort

    Long -> Integer / UInteger

    • 답변으로 제안됨 SlaneR 2014년 1월 2일 목요일 오전 9:34
    • 답변으로 제안 취소됨 SlaneR 2014년 1월 2일 목요일 오전 9:34
    • 편집됨 SlaneR 2014년 1월 2일 목요일 오전 9:36
    • 답변으로 표시됨 dhfl372 2014년 2월 9일 일요일 오전 9:03
    2014년 1월 2일 목요일 오전 9:33