谁知道在VB下怎么通过调用FindWindow()获得当前窗口的句柄。

invaders 2001-05-02 02:38:00

是不是这么声明:
Private Declare Function FindWindow Lib "user32" Alias
"FindWindow"(ByVal lpClassName As String,ByVal lpWindowName As String) As Long

我不知道VB下第一个参数lpClassName该怎么添。
...全文
1816 30 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
30 条回复
切换为时间正序
请发表友善的回复…
发表回复
Taken 2001-05-05
  • 打赏
  • 举报
回复
通常来说FindWindow的第一个参数填入vbNullString就可以了,第二个参数是窗口的Caption;
至于得到当前窗口的句柄用GetForegroundWindow就行了
把一个窗口设为当前窗口用SetForegroundWindow
Declare Function GetForegroundWindow Lib "user32" Alias "GetForegroundWindow" () As Long
Declare Function SetForegroundWindow Lib "user32" Alias "SetForegroundWindow" (ByVal hwnd As Long) As Long
Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Example:
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long
Private Sub Form_Load()
'KPD-Team 1999
'URL: http://www.allapi.net/
'E-Mail: KPDTeam@Allapi.net
Dim lHandle As Long
'First we're going to retrieve the handle of this window
' "ThunderRT5Form" is the classname of a VB-window
lHandle = FindWindow("ThunderRT5Form", Me.Caption)
'Set this window to the foreground
lHandle = SetForegroundWindow(lHandle)
End Sub


invaders 2001-05-05
  • 打赏
  • 举报
回复
那你能告诉我为什么
preWndProc = SetWindowLong(Me.hWnd, GWL_WNDPROC, AddressOf WWndProc)
操作失败吗?
cclp 2001-05-04
  • 打赏
  • 举报
回复
这么简单的问题,你也问
invaders 2001-05-03
  • 打赏
  • 举报
回复
To pgfun()兄 :

我在模块中定义:
Public Function WWndProc(ByVal hw As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
MsgBox "hehe..."
preWndProc = CallWindowProc(preWndProc, hw, Msg, wParam, lParam)
End Function

在窗体文件中定义:
Private Sub Form_Load()
preWndProc = SetWindowLong(Me.hWnd, GWL_WNDPROC, AddressOf WWndProc)
End Sub

可是,WWndProc根本就执行不到,最大化,最小化总是消息吧?
这是怎么回事?
invaders 2001-05-03
  • 打赏
  • 举报
回复
窗体句柄已可以知道,问题是VB窗体怎么接收dll传来的自定义的消息?
111222 2001-05-03
  • 打赏
  • 举报
回复
'下面代码是找到IE窗口句柄
'声明函数:
Option Explicit Private Declare Function FindWindow Lib"user32" Alias "FindWindowA"(ByVal lpClassname As String,ByVal lpWindowName As String) As Long

'应用
Dim sClassname As long
Dim lhwnd As long
sClassname=("IEFrame")
lhwnd=FindWindow(sClassname,NULL);
prefix 2001-05-03
  • 打赏
  • 举报
回复
看《电脑爱好者》5月上半月的期刊。
vbFly 2001-05-03
  • 打赏
  • 举报
回复
lpClassName中填入vbNullString或lpWindowName填入vbNullString都可以!你只要知道其中的一个就行了!SO EASY!
invaders 2001-05-03
  • 打赏
  • 举报
回复
让我试试!
kimryo 2001-05-03
  • 打赏
  • 举报
回复
Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

在lpClassName中填入vbNullString,传到系统中是长整形的0.
invaders 2001-05-03
  • 打赏
  • 举报
回复
Private Sub Form_Load()
preWndProc = SetWindowLong(Me.hWnd, GWL_WNDPROC, AddressOf WWndProc)
End Sub

SetWindowLong的返回值为0,说明操作失败。

/*------------------------------------------*/
If the function succeeds, the return value is the previous value of the specified 32-bit integer.
If the function fails, the return value is zero.
/*------------------------------------------*/

invaders 2001-05-02
  • 打赏
  • 举报
回复
我是这么声明的:

Declare Function SetWindowLong Lib "user32" (ByVal hwnd As Long, ByVal nIndex As Integer, ByVal dwNewLong As Long) As Long
invaders 2001-05-02
  • 打赏
  • 举报
回复
老是报错:"找不到dll的入口"
invaders 2001-05-02
  • 打赏
  • 举报
回复
SetWindowLong(hwnd, GWL_WNDPROC, AddressOf WWndProc)
CallWindowProc(preWndProc, hw, Msg, wParam, lParam)
在VB里应该怎么声明呀,我怎么老是找不到dll的入口?

雨晨寒月 2001-05-02
  • 打赏
  • 举报
回复
看msdn.
invaders 2001-05-02
  • 打赏
  • 举报
回复
To pgfun()兄:

这个贴子暂不打算结束。 

请到 --答谢pgfun兄对于“VB如何响应自定义消息”的回答!--中点击一下。
prefix 2001-05-02
  • 打赏
  • 举报
回复
自定义消息?RegisterMessage不算自定义的吗?
pgfun 2001-05-02
  • 打赏
  • 举报
回复
小弟初访贵地,急需赚取分值,如果回答有帮助,望诸位高抬贵手.
pgfun 2001-05-02
  • 打赏
  • 举报
回复
当然行得通的啦.这可是小弟我仔细研究了msdn后再经过n次死机后才搞定的.
在使用此方法时强烈建议先保存再运行,否则又是"..."
gbstar2021 2001-05-02
  • 打赏
  • 举报
回复
btw 这种技术在 vc 中被称作“子类化”,我真么没想到用在 vb 里。
加载更多回复(10)

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧