文档章节

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
这段代码为什么会崩啊

CCriticalSection atrtest; list list2; void deleteList(); //线程1的入口函数 DWORD WINAPI Fun1Proc(LPVOID lpParameter)//thread data { while(TRUE) { deleteList(); } return 0; } //线......

智勇
2014/05/22
214
3
_beginThreadex创建多线程解读

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

IMGTN
2012/11/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

linux-scp 远程拷贝报错原因

刚拿到一台重装后的服务器,远程ssh都正常,但是一scp拷贝东西就报错: 本地确定是有scp命令的,而且如果是本地没有scp不会报后面那句lost connection,因此就是远程没有scp这个命令。因此在...

linuxprobe16
7分钟前
0
0
OSChina 周六乱弹 —— 谁小时候没当过熊孩子呀

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @小小编辑:推荐歌曲《行尸走肉》- amazarashi 《行尸走肉》- amazarashi 手机党少年们想听歌,请使劲儿戳(这里) @神话 :周五了,周末干啥...

小小编辑
32分钟前
18
1
docker部署springboot项目

安装docker 菜鸟教程 springboot项目 maven依赖 <?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001......

yimingkeji
今天
14
0
1: Cordova 配置WebView可以打开外部链接

一、问题:在使用Cordova生成的Android App中默认情况下WebView中的超链接,如果不是相对链接,会默认使用浏览器打开。 如果想用默认webview打开 解决方案:修改config.xml文件添加链接配置节...

wecloudnet
今天
1
0
Beetl介绍以及集成SpringBoot2.0 ---《Beetl视频课程》(1)

目的:引导阅读官方文档 目标:实现一个自己的博客 一、Beetl介绍 Beetl目前版本是2.9.3,相对于其他java模板引擎,具有功能齐全,语法直观,性能超高,以及编写的模板容易维护等特点。使得开发...

Gavin-King
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部