delphi中复制线程

     DuplicateHandle函数可以用来复制线程等。

     在一个进程中,这个函数可根据位于不同进程内的现有句柄创建一个新句柄。可以从这两个进程中发出对这个函数的调用。进程必须提供PROCESS_DUP_HANDLE访问权限,否则函数执行不能成功

 

  句柄可以重复的对象包括控制台、文件(包括通信设备)、文件映射、事件、可等待计时器、互斥体、管道、进程、注册表项、信号机以及线程

var
  Form1: TForm1;
  ThreadHandle:THandle;
  TargetHandle:THandle;

implementation

{$R *.dfm}

function ThreadFunc(Info:Pointer):Integer;
var
  ICounter:Integer;
  FormDC:HDC;
begin
  FormDC :=GetDC(Form1.Handle);
  for ICounter :=1 to 10000 do
    TextOut(FormDC,10,50,PChar(IntToStr(ICounter)),Length(IntToStr(ICounter)));
  SuspendThread(TargetHandle);

  for ICounter :=1 to 10000 do
    TextOut(FormDC,110,50,PChar(IntToStr(ICounter)),Length(IntToStr(ICounter)));
  ReleaseDC(Form1.Handle,FormDC);
  ExitThread(5);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  Duplicated:BOOL;
  currentProcess:THandle;
  CurrentThread:THandle;
  ThreadID:Dword;
begin
  ThreadHandle :=CreateThread(nil,0,@ThreadFunc,nil,0,ThreadID);
  currentProcess :=GetCurrentProcess;
  CurrentThread :=GetCurrentThread;
  Duplicated :=DuplicateHandle(currentProcess,ThreadHandle,currentProcess,@TargetHandle,0,False,DUPLICATE_SAME_ACCESS);
  if not (Duplicated) then
    ShowMessage('Duplicated is error!');
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  ResumeThread(TargetHandle);
end;

end.

转载于:https://www.cnblogs.com/djcsch2001/archive/2012/03/09/2388292.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值