• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

delphi中复制线程

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

     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.


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Delphi7Webbrowser制作网页表单自动提交器按步分析(1)发布时间:2022-07-18
下一篇:
Delphi复习代码发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap