ZYL910 Come in!

kwxx 2002-05-15 09:42:01
Class:
MarcomediaFlashPlayerActiveX

大小写严格吗?
...全文
96 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zyl910 2002-05-16
  • 打赏
  • 举报
回复
Option Explicit
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long

Private Declare Function GetWindow Lib "user32" (ByVal hWnd As Long, ByVal wCmd As Long) As Long
Private Const GW_HWNDFIRST = 0 '为一个源子窗口寻找第一个兄弟(同级)窗口,或寻找第一个顶级窗口
Private Const GW_HWNDLAST = 1 '为一个源子窗口寻找最后一个兄弟(同级)窗口,或寻找最后一个顶级窗口
Private Const GW_HWNDNEXT = 2 '为源窗口寻找下一个兄弟窗口
Private Const GW_HWNDPREV = 3 '为源窗口寻找前一个兄弟窗口
Private Const GW_OWNER = 4 '寻找窗口的所有者
Private Const GW_CHILD = 5 '寻找源窗口的第一个子窗口

Private Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hWnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long

Public Function GetClassNameStr(hWnd As Long) As String
Dim TempLng As Long
Dim TempStr As String
Dim Rc As Long

TempLng = 260
TempStr = Space(TempLng)

Rc = GetClassName(hWnd, TempStr, TempLng)

GetClassNameStr = StrConv(LeftB$(StrConv(TempStr, vbFromUnicode), Rc), vbUnicode)

End Function

Public Function FindWnd(ByVal PhWnd As Long, ClassStr As String) As Long
Dim TemphWnd As Long

TemphWnd = GetWindow(PhWnd, GW_CHILD)
Do
If GetClassNameStr(TemphWnd) = ClassStr Then Exit Do
Loop While TemphWnd = GetWindow(PhWnd, GW_HWNDNEXT)

FindWnd = TemphWnd

End Function

Private Sub Form_Load()
Dim TemphWnd As Long

TemphWnd = FindWnd(Me.hWnd, "MarcomediaFlashPlayerActiveX")
MsgBox TemphWnd & vbCrLf & GetClassNameStr(TemphWnd)

End Sub
kwxx 2002-05-16
  • 打赏
  • 举报
回复
没有查找控件HWND的API?
zyl910 2002-05-15
  • 打赏
  • 举报
回复
Const WS_CHILD = &H40000000
Const WM_LBUTTONDOWN = &H201
Const WM_LBUTTONUP = &H202
Const SW_HIDE = 0
Const SW_NORMAL = 1
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
Private Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long
Private Declare Function CreateWindowEx Lib "user32" Alias "CreateWindowExA" (ByVal dwExStyle As Long, ByVal lpClassName As String, ByVal lpWindowName As String, ByVal dwStyle As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hWndParent As Long, ByVal hMenu As Long, ByVal hInstance As Long, lpParam As Any) As Long
Private Declare Function DestroyWindow Lib "user32" (ByVal hwnd As Long) As Long
Dim tWnd As Long, bWnd As Long, ncWnd As Long
Private Sub Form_Load()
'KPD-Team 1998
'URL: http://www.allapi.net/
'E-Mail: KPDTeam@Allapi.net
Dim R As RECT
'Get the taskbar's window handle
tWnd = FindWindow("Shell_TrayWnd", vbNullString)
'Get the start-button's window handle
bWnd = FindWindowEx(tWnd, ByVal 0&, "BUTTON", vbNullString)
'Get the start button's position
GetWindowRect bWnd, R
'Create a new button
ncWnd = CreateWindowEx(ByVal 0&, "BUTTON", "Hello !", WS_CHILD, 0, 0, R.Right - R.Left, R.Bottom - R.Top, tWnd, ByVal 0&, App.hInstance, ByVal 0&)
'Show our button
ShowWindow ncWnd, SW_NORMAL
'Hide the start button
ShowWindow bWnd, SW_HIDE
End Sub
Private Sub Form_Unload(Cancel As Integer)
'show the start button
ShowWindow bWnd, SW_NORMAL
'destroy our button
DestroyWindow ncWnd
End Sub
zyl910 2002-05-15
  • 打赏
  • 举报
回复
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long
Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
Const SW_SHOWNORMAL = 1
Const WM_CLOSE = &H10
Const gcClassnameMSWord = "OpusApp"
Const gcClassnameMSExcel = "XLMAIN"
Const gcClassnameMSIExplorer = "IEFrame"
Const gcClassnameMSVBasic = "wndclass_desked_gsk"
Const gcClassnameNotePad = "Notepad"
Const gcClassnameMyVBApp = "ThunderForm"
Private Sub Form_Load()
'KPD-Team 1998
'URL: http://www.allapi.net/
'E-Mail: KPDTeam@Allapi.net
Dim WinWnd As Long, Ret As String, RetVal As Long, lpClassName As String
'Ask for a Window title
Ret = InputBox("Enter the exact window title:" + Chr$(13) + Chr$(10) + "Note: must be an exact match")
'Search the window
WinWnd = FindWindow(vbNullString, Ret)
If WinWnd = 0 Then MsgBox "Couldn't find the window ...": Exit Sub
'Show the window
ShowWindow WinWnd, SW_SHOWNORMAL
'Create a buffer
lpClassName = Space(256)
'retrieve the class name
RetVal = GetClassName(WinWnd, lpClassName, 256)
'Show the classname
MsgBox "Classname: " + Left$(lpClassName, RetVal)
'Post a message to the window to close itself
PostMessage WinWnd, WM_CLOSE, 0&, 0&
End Sub


zyl910 2002-05-15
  • 打赏
  • 举报
回复
你要的资料:

GetClassName

VB声明
Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long
说明
为指定的窗口取得类名
返回值
Long,以字节数表示的类名长度;排除最后的空中止字符。零表示出错。会设置GetLastError
参数表
参数 类型及说明
hwnd Long,欲获得类名的那个窗口的句柄
lpClassName String,随同类名载入的缓冲区。预先至少必须分配nMaxCount+1个字符
nMaxCount Long,由lpClassName提供的缓冲区长度


FindWindowEx

VB声明
Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
说明
在窗口列表中寻找与指定条件相符的第一个子窗口
返回值
Long,找到的窗口的句柄。如未找到相符窗口,则返回零。会设置GetLastError
参数表
参数 类型及说明
hWnd1 Long,在其中查找子的父窗口。如设为零,表示使用桌面窗口(通常说的顶级窗口都被认为是桌面的子窗口,所以也会对它们进行查找)
hWnd2 Long,从这个窗口后开始查找。这样便可利用对FindWindowEx的多次调用找到符合条件的所有子窗口。如设为零,表示从第一个子窗口开始搜索
lpsz1 String,欲搜索的窗体名。零表示忽略
lpsz2 String,欲搜索的类名。零表示忽略
zDrawHelp V1.0 作者:zyl910 邮箱:zyl910@sina.com Blog:http://blog.csdn.net/zyl910 简介 ~~~~   zDrawHelp是一个画像素图的辅助工具。   它可以使一副图片在所有窗口的前面并半透明,而且最奇妙的是——鼠标操作能穿透该图片,直接操作下面的绘图软件。   运行环境:.Net Framework 2.0。Windows 2000/2003/xp/vista/win7。 操作指南 ~~~~~~~~   使用方法—— 1.启动绘图软件(如Photoshop)。进行编辑,放大到合适尺寸,准备画像素图。 2.启动zDrawHelp。 3.在zDrawHelp上点击鼠标右键,弹出快捷菜单。点击“打开图片”加载图片。 4.默认的不透明度是100%。您可以在右键菜单中的“不透明度”子菜单中调整不透明度(一般60%比较合适)。 5.图片打开后,默认是自适应缩放模式的。您可以在右键菜单中的“缩放”子菜单中调整缩放倍数。 6.拖曳鼠标左键移动窗口,使其位于绘图软件上方。再拖曳鼠标右键移动窗口内的图片,使其与绘图软件中的欲编辑区域吻合。 7.摆好位置后,点击右键菜单中的“永在顶层”。这样zDrawHelp就永在顶层,并且鼠标操作能穿透zDrawHelp,直接操作下面的绘图软件。 8.现在就可以参考图片进行像素图编辑了。若编辑时需要隐藏zDrawHelp的半透明窗口,可以使用快捷键Ctrl+F11隐藏,再按Ctrl+F11可以恢复显示。 问:如何退出zDrawHelp的穿透模式? 答:在任务栏右下角的任务托盘区找到zDrawHelp的托盘图标,点击鼠标右键弹出快捷菜单,再点击“永在顶层”,退出永在顶层模式与穿透模式。   解释—— 穿透模式 = 永在顶层 + 半透明(不透明度小于100%) 若您将不透明度设为100%,也可退出穿透模式。 这是顺序无关的。您也可以先设为“永在顶层”再调整“不透明度”进入穿透模式。 操作参考 ~~~~~~~~   操作说明—— 拖曳鼠标左键:移动窗口。 拖曳鼠标右键:移动窗口内的图片。 右键菜单:许多高级功能。如:打开图片、缩放、高级、调整窗口大小、永在顶层、不透明度、显示、隐藏、退出。   全局热键—— Ctrl+F11:显示/隐藏切换。 更新历史 ~~~~~~~~ [2011-08-13] V1.0 V1.0发布

7,789

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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