如何获得一个调用某个函数时产生的线程的句柄或ID

如何获得一个调用某个函数时产生的线程的句柄或ID,第1张

但是box的insertItem()函数不起作用。

我的线程放在了Global类里,现在需要在线程里对别的窗口内的控件进行 *** 作。

------解决方案--------------------------------------------------------我建议的做法是用FindWindowEx取窗口句柄,然后再用GetDlgItem之类的取控件句柄,通过API进行 *** 作。

------解决方案--------------------------------------------------------线程最好不要对别的窗口内的控件进行 *** 作,而是发送消息给窗口,让主线程来 *** 作界面。

还有你说不起作用可能是你未强制重画,试试插入项后调用一下

CListCtrl::RedrawItems 或

Cwnd::UpdateWindow

分类: 电子数码

解析:

了解什么是句柄就好理解了

就是获得这个窗口的识别代码

句柄就是用来区分各种内存对象的唯一标识符号,是个32位整数。

有些是整个系统唯一(如窗口句柄),有些是当前进程或线程中唯一

(如线程句柄,全局的有另一个标识符)。

详细的可分为许多种,都是以H开头的。在VB中使用时全部都用Long。

常见的有窗口句柄(HWND),设备描述表句柄(HDC),内存句柄(HMEM),

文件句柄,进程句柄,线程句柄,笔的类型句柄(HPEN),字体句柄(HFONT),

区域句柄(HRGN)等等。

在申请句柄时是要占用资源的,分三类SYSTEM、USER、GDI。

而WINDOWS的资源是固定的,并不随内存的扩大而扩大,所以使用完以后一定要释

放。

>

如果只用VB本身的代码一般是不会用到句柄的,但要是使用API函数的话,

大多数会使用。

再Windows系统中,句柄(我一直觉得这个词翻译得特别别扭)分为三大类:Kernel

Handle、UserHandle和应用程序自定义的Handle。

KernelHandle实际上是进程内Kernel对象的指针表索引,Kernel对象包括进程、文

件、信号等。但是MS为了掩盖着一事实,在系统启动时生成了一个所谓Obsfucator的值

(其实应该是Obfuscator,MicrosoftBugs(R):),生成Handle后将Handle与这个值异

或后返回给应用程序,所以看到的Handle都是一些很大而且毫无意义的数字。这些

Handle和索引的对象是由KRNL32DLL和VMM32VXD共同管理的,所以称之为Kernel

Handle。

UserHandle是用来标示窗口、DC等对象的,他们是真实的指针,但指向的并不是对象

的开头,有一个偏移量。同样,这些对象是由USER32DLL管理的。

第三种Handle不过是应用程序自定义的一些索引之类的东东,具体的意义和应用程序相关

 CWnd pWnd=CWnd::FindWindow(NULL,_T("EightPuzzle"));//获取目标窗口

 pWnd->SendMessage(/消息的代号/,NULL,0);//发送消息

貌似没有直接的办法。

你的问题也有点前后矛盾。

窗口句柄、进程句柄、主线程句柄是不同出概念。

但这些都可以通过枚举获得。如果是主线程句柄,你可以枚举系统中的进程,找到你所需要的进程句柄,然后通过进程句柄获得主线程句柄。

如果是窗口,可以通过枚举系统中所有的窗口,逐个比较,得到你所需要的窗口句柄。当然如果窗口特征很明显,还可以用FindWindow省去逐个枚举的麻烦。

GetWindowThreadProcessId,它根据窗口的句柄来获取进程和线程ID,VB原型如下

'Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long

'参数:

'hwnd:目标窗口的句柄

'lpdwProcessId:一个接受返回进程ID的Long变量,

'顺便提一下,在我们调用API的时候,如果一个变量不是ByVal传递,则表示这个变量是用来接受返回值的(但也不是绝对的)

'返回值:

'窗口的线程ID

以上就是关于如何获得一个调用某个函数时产生的线程的句柄或ID全部的内容,包括:如何获得一个调用某个函数时产生的线程的句柄或ID、“获取屏幕的窗口句柄”是什么意思、MFC 怎么在线程中获取当前子窗口的句柄(应用:基本对话框)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9412459.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-28
下一篇2023-04-28

发表评论

登录后才能评论

评论列表(0条)

    保存