再开100分贴:OpenProcess的问题
Private Sub Command2_Click()
Dim pid As Long
GetWindowThreadProcessId Me.hwnd, pid
Dim pHandle As Long
pHandle = OpenProcess(PROCESS_ALL_ACCESS, False, pid)
Debug.Print pHandle
End Sub
每次得的进程句柄为何都不一样呢?我的PID可是一直没变的啊
还有就是能否说说OpenProcess函数的具体用法及各参数的意义?
[解决办法]
Private Sub Command2_Click()
Dim pid As Long
GetWindowThreadProcessId Me.hwnd, pid
我想你得到的是窗体的句柄
[解决办法]
Declare Function OpenProcess Lib "kernel32 " Alias "OpenProcess " (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
说明
打开一个现有进程的句柄
返回值
Long,如执行成功,返回进程句柄;零表示失败。会设置GetLastError
参数表
参数 类型及说明
dwDesiredAccess Long,指定这个句柄要求的访问方法。指定API32.TXT文件中以PROCESS_???开头的一个或多个常数
bInheritHandle Long,如句柄能够由子进程继承,则为TRUE
dwProcessId Long,要打开那个进程的进程标识符
注解
这个函数经常用来打开一个要进行同步的进程
[解决办法]
句柄是动态的,当然每次启动都不一样,hwnd和ID是不同的
[解决办法]
程序每次启动系统随机分配进程句柄、hwnd、ID当然你每次得到的不一样。
不知道你用这个有什么用,没有什么意义。想得到hdc直接用
Me.hDC
Me.HasDC
Me.hWnd
App.hInstance
App.ThreadID
自己的程序没有必要弄得那么复杂