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

相关阅读 >>

Delphi 得到cxgrid筛选后的记录数

Delphi 调用ie隐藏的命令

老外写的在桌面添加快捷方式(Delphi xe5 android)

Delphi修改默认打印机

Delphi解析json格式化的日期

Delphi xe5 将Delphi code从winos 迁移到ios与android

Delphi如何给tedit控件加上背景图片

Delphi 获取文件名不带扩展名

Delphi直接实现分享图片功能

Delphi base64, quoted-printable 的解码与编码函数

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...