回 帖 发 新 帖 刷新版面

主题:用FindWindow获得窗口句柄,为何指定的窗口没打开时FindWindow不返回0?

最近刚开始学VB.NET
我的操作系统winXP sp2

我先在模块里声明FindWindow函数
Module Module1


    Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

End Module



我建了一个窗体,窗体中加入一个Button按钮,然后在Button1_Click加入代码
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim GameHwnd As Long
        GameHwnd = FindWindow(vbNullString, "我的电脑")
        If GameHwnd = 0 Then
            MsgBox("Error:Can Not Find window!")
            Exit Sub
        Else
            MsgBox(GameHwnd)
        End If

    End Sub

不管我打没打开“我的电脑”这个窗口,点击Button按钮时GameHwnd都不会返回0,并且每次返回的数都不一样,这是为什么啊??

回复列表 (共2个回复)

沙发

注意了long型在net里是64位的,把声明改成:
Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As int32
就OK了

板凳


我也遇到同样的问题,把返回参数改成Int32,怎么又每次都返回0了?就算程序运行的时候也返回0

我来回复

您尚未登录,请登录后再回复。点此登录或注册