首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

再开100分贴:OpenProcess的有关问题

2012-01-10 
再开100分贴:OpenProcess的问题PrivateSubCommand2_Click()DimpidAsLongGetWindowThreadProcessIdMe.hwnd,

再开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
自己的程序没有必要弄得那么复杂

热点排行