永发信息网

vb找句柄问题

答案:3  悬赏:30  手机版
解决时间 2021-04-25 18:33
  • 提问者网友:書生途
  • 2021-04-24 19:00

这个播放器的类名一样 怎么找句柄呀  vb可以用进程id吗

 SendMessage  可以 想sendkeys那样对活动窗口,对句柄发送快捷键码

最佳答案
  • 五星知识达人网友:风格不统一
  • 2021-04-24 20:29
findwindow函数,你是要用这个来找吗?不能用类名用程序的标题,这个是千千静听吧,用这个标题找句柄不知能行不,格式声明你自己找下。我也是小虾不大会,答错了还望海涵。
全部回答
  • 1楼网友:老鼠爱大米
  • 2021-04-24 21:44

我用VB可以做到用路径,或者PID列举所有的句柄。

代码:

'//////////////////////////////////////模块////////////////////////////////

Option Explicit Private Declare Function EnumWindows Lib "user32" (ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long Dim IfPid As Long Private Function EnumWindowsProc(ByVal hwnd As Long, ByVal lParam As Long) As Long Dim Pid1 As Long Dim wText As String * 255 GetWindowThreadProcessId hwnd, Pid1 If IfPid = Pid1 Then GetWindowText hwnd, wText, 100 Form1.List1.AddItem "句柄:" & hwnd & " 标题:" & wText End If EnumWindowsProc = True End Function Public Sub Find_Window(ByVal Pid As Long) IfPid = Pid EnumWindows AddressOf EnumWindowsProc, 0 End Sub '////////////////////////////窗体////////////////////////////////////

Private Sub Command1_Click() List1.Clear Find_Window Val(Text1.Text) End Sub

Private Sub Form_Load() Text1.Text = "" Command1.Caption = "枚举窗口" End Sub '///////////////////////////控件//////////////

建立一个COMMAND1和LIST1和TXET1

使用:

在TEXT中输入PID,按COMMAND1,LIST中就列出所有句柄

如果需要如何获取PID的话就加我Q或者留邮箱。QQ 363488415

  • 2楼网友:梦中风几里
  • 2021-04-24 21:02

千千静听的句柄貌似不好获取,因为标题会变,只有用SPY++获取主窗体类名在用FINDWINDOW这个API获取句柄   一些子窗口的句柄还是要用句柄枚举来获取  另外VB是可以获取到进程ID的  首先获取窗体句柄然后通过openprocess这个函数返回其进程的句柄,再通过进程句柄用getwindowthreadprocessid这个API函数获取进程的ID即可

只要获取到句柄就能用SendMessage发送快捷键  不过这里建议用PostMesaage,具体请自行查看API手册

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯