文档章节

WinAPI: GetCurrentThread、GetCurrentThreadId、GetCurrentProcess、GetCurrentProcessId

涂孟超
 涂孟超
发布于 2014/09/26 15:35
字数 270
阅读 6
收藏 0
{返回当前线程的虚拟句柄}
GetCurrentThread: THandle;

{返回当前线程 ID}
GetCurrentThreadId: DWORD;

{返回当前进程的虚拟句柄}
GetCurrentProcess: THandle;

{返回当前进程 ID}
GetCurrentProcessId: DWORD;

 
 
 
 
 

 

 

  
提示:
ID 是系统唯一的标识.
所谓虚拟句柄, 就是该句柄只在调用进程的进程中有效, 也不能被继承;
如果用于其他进程需要用 DuplicateHandle 复制句柄;
GetCurrentProcess 返回的虚拟句柄可以通过 OpenProcess 创建一个真实的句柄.

举例:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Grids;

type
  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    procedure FormCreate(Sender: TObject);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  StringGrid1.Cells[0,0] := '当前线程虚拟句柄: ';
  StringGrid1.Cells[0,1] := '当前线程 ID: ';
  StringGrid1.Cells[0,2] := '当前进程虚拟句柄: ';
  StringGrid1.Cells[0,3] := '当前进程 ID: ';

  StringGrid1.Cells[1,0] := IntToStr(GetCurrentThread);
  StringGrid1.Cells[1,1] := IntToStr(GetCurrentThreadID);
  StringGrid1.Cells[1,2] := IntToStr(GetCurrentProcess);
  StringGrid1.Cells[1,3] := IntToStr(GetCurrentProcessId);

  {下面是显示格式的调整}
  StringGrid1.Align := alClient;
  StringGrid1.FixedRows := 0;
  StringGrid1.RowCount := 4;
  StringGrid1.ColCount := 2;
  StringGrid1.ColWidths[0] := StringGrid1.Canvas.TextWidth(StringGrid1.Cells[0,0]) + 4;
  StringGrid1.ColWidths[1] := StringGrid1.Canvas.TextWidth(StringGrid1.Cells[0,1]) + 4;
end;

end.

 
 
 
 
 

 

 

  
//效果图:

本文转载自:http://www.cnblogs.com/del/archive/2008/03/10/1098311.html

共有 人打赏支持
涂孟超
粉丝 12
博文 2011
码字总数 14107
作品 0
深圳
程序员
私信 提问
WinAPI: GetCurrentThread、GetCurrentThreadId、Get...

{返回当前线程的虚拟句柄} GetCurrentThread: THandle; {返回当前线程 ID} GetCurrentThreadId: DWORD; {返回当前进程的虚拟句柄} GetCurrentProcess: THandle; {返回当前进程 ID} GetCurre...

barsoom
2012/12/17
0
0
使用MiniDumpWriteDump API 来生成程序的Dump

MiniDumpWriteDump是MS DbgHelp.dll 中一个API, 用于导出当前运行的程序的Dump. 这个dll程序系统中就有, 但是很多软件, 都在自己的安装目录下保存了这个.dll的最新的版本. 目的是当有异常发生...

berryz2007
2010/12/12
0
0
Windows API 线程同步 生产者消费者

/第一次使用windows API线程函数,还望给位大虾指教啊/ #include <windows.h> #include <stdio.h> #define BUFFER_SIZE 10 HANDLE hSemaphoreFull; HANDLE hSemaphoreEmpty; HANDLE hMutex; ......

519734425
2012/03/12
0
0
delphi实时监视应用程序内存使用量

当你的产品已经完成了客户的需求功能,你是否已经认为你的产品已经完成了呢?如果你的客户在使用你 的产品一段时间后跑来向你诉苦:“产品用的时间越久,速度就越慢”,那么你就需要注意你的...

KavenSu
2014/01/21
0
0
_beginThreadex创建多线程解读

_beginThreadex创建多线程解读 _beginThreadex创建多线程解读 一、需要的头文件支持 #include <process.h> // for _beginthread() 需要的设置:ProjectàSetting-->C/C++-->User run-time lib......

IMGTN
2012/11/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周三乱弹 —— 风扇写着先生请自爱

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @蚂蚁哈哈哈 :分享陈奕迅的单曲《落花流水》 《落花流水》- 陈奕迅 手机党少年们想听歌,请使劲儿戳(这里) @车谷 :我发现每天上班都好困 ...

小小编辑
今天
399
6
centos7重置密码、单用户模式、救援模式、ls命令、chmod命令

在工作当中如果我们错误的配置了文件使服务器不能正常启动或者忘记密码不能登录系统,如何解决这些问题呢?重装系统是可以实现的,但是往往不能轻易重装系统的,下面用忘记密码作为例子讲解如...

李超小牛子
今天
4
0
Python如何开发桌面应用程序?Python基础教程,第十三讲,图形界面

当使用桌面应用程序的时候,有没有那么一瞬间,想学习一下桌面应用程序开发?行业内专业的桌面应用程序开发一般是C++,C#来做,Java开发的也有,但是比较少。本节课会介绍Python的GUI(图形用...

程序员补给栈
今天
13
0
kafka在的使用

一、基本概念 介绍 Kafka是一个分布式的、可分区的、可复制的消息系统。它提供了普通消息系统的功能,但具有自己独特的设计。 这个独特的设计是什么样的呢? 首先让我们看几个基本的消息系统...

狼王黄师傅
今天
3
0
Android JNI总结

0x01 JNI介绍 JNI是Java Native Interface的缩写,JNI不是Android专有的东西,它是从Java继承而来,但是在Android中,JNI的作用和重要性大大增强。 JNI在Android中起着连接Java和C/C++层的作...

天王盖地虎626
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部