亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Delphi > 正文

獲取其他線程的光標句柄[DELPHI]

2019-11-18 18:40:53
字體:
來源:轉載
供稿:網友
 

當光標被另外一個線程掌握時,就無法用GetCursor()應用接口獲得光標句柄。本文闡述如何在任何線程掌握光標時都能夠獲取光標句柄。

=========================================================

{
 當光標被另外一個線程掌握時,就無法用GetCursor()應用接口獲得光標句柄。
 本文闡述如何在任何線程掌握光標時都能夠獲取光標句柄。
 例如,想在屏幕截取程序中放置光標時該如何做。
}

function GetCursorHandle: HCURSOR;
var
  hWindow: HWND;
  pt: TPoint;
  pIconInfo: TIconInfo;
  dwThreadID, dwCurrentThreadID: DWord;
begin
  // 檢查哪個窗體掌握光標
  GetCursorPos(pt);
  hWindow := WindowFromPoint(pt);

  // 獲得光標所有者的線程ID
  dwThreadID := GetWindowThreadPRocessId(hWindow, nil);

  // 獲得當前線程的ID
  dwCurrentThreadID := GetCurrentThreadId;

  // 如果光標所有者的線程不是當前線程,就要把光標所有者的線程配屬到當前線程。
  //然后調用GetCursor()來獲得正確的光標句柄(hCursor)。

  if (dwCurrentThreadID <> dwThreadID) then
  begin
    if AttachThreadInput(dwCurrentThreadID, dwThreadID, True) then
    begin
      // 獲得光標句柄
      Result := GetCursor;
      AttachThreadInput(dwCurrentThreadID, dwThreadID, False);
    end;
  end else
  begin
    Result := GetCursor;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  CurPosX, CurPoxY: Integer;
  MyCursor: TIcon;
  pIconInfo: TIconInfo;
begin
  MyCursor := TIcon.Create;
  try
    MyCursor.Handle := GetCursorHandle;
    // 獲得光標位置
    GetIconInfo(MyCursor.Handle, pIconInfo);
    CurPosX := pIconInfo.xHotspot;
    CurPoxY := pIconInfo.yHotspot;
    // 在窗體上畫出光標
    Canvas.Draw(CurPoxY, CurPoxY, MyCursor);
  finally

當光標被另外一個線程掌握時,就無法用GetCursor()應用接口獲得光標句柄。本文闡述如何在任何線程掌握光標時都能夠獲取光標句柄。

=========================================================

{
 當光標被另外一個線程掌握時,就無法用GetCursor()應用接口獲得光標句柄。
 本文闡述如何在任何線程掌握光標時都能夠獲取光標句柄。
 例如,想在屏幕截取程序中放置光標時該如何做。
}

function GetCursorHandle: HCURSOR;
var
  hWindow: HWND;
  pt: TPoint;
  pIconInfo: TIconInfo;
  dwThreadID, dwCurrentThreadID: DWORD;
begin
  // 檢查哪個窗體掌握光標
  GetCursorPos(pt);
  hWindow := WindowFromPoint(pt);

  // 獲得光標所有者的線程ID
  dwThreadID := GetWindowThreadProcessId(hWindow, nil);

  // 獲得當前線程的ID
  dwCurrentThreadID := GetCurrentThreadId;

  // 如果光標所有者的線程不是當前線程,就要把光標所有者的線程配屬到當前線程。
  //然后調用GetCursor()來獲得正確的光標句柄(hCursor)。

  if (dwCurrentThreadID <> dwThreadID) then
  begin
    if AttachThreadInput(dwCurrentThreadID, dwThreadID, True) then
    begin
      // 獲得光標句柄
      Result := GetCursor;
      AttachThreadInput(dwCurrentThreadID, dwThreadID, False);
    end;
  end else
  begin
    Result := GetCursor;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  CurPosX, CurPoxY: Integer;
  MyCursor: TIcon;
  pIconInfo: TIconInfo;
begin
  MyCursor := TIcon.Create;
  try
    MyCursor.Handle := GetCursorHandle;
    // 獲得光標位置
    GetIconInfo(MyCursor.Handle, pIconInfo);
    CurPosX := pIconInfo.xHotspot;
    CurPoxY := pIconInfo.yHotspot;
    // 在窗體上畫出光標
    Canvas.Draw(CurPoxY, CurPoxY, MyCursor);
  finally
    MyCursor.ReleaseHandle;
    MyCursor.Free;
  end;
end;

// 另外一種解決辦法:

procedure TForm1.Timer1Timer(Sender: TObject);
var
  CI: TCursorInfo;
begin
  CI.cbSize := SizeOf(CI);
  GetCursorInfo(CI);
  Image1.Picture.Icon.Handle := CI.hCursor;
end;

    MyCursor.ReleaseHandle;
    MyCursor.Free;
  end;
end;

// 另外一種解決辦法:

procedure TForm1.Timer1Timer(Sender: TObject);
var
  CI: TCursorInfo;
begin
  CI.cbSize := SizeOf(CI);
  GetCursorInfo(CI);
  Image1.Picture.Icon.Handle := CI.hCursor;
end;


上一篇:Delphi與Excel的親密接觸

下一篇:談Delphi下Internet的編程技巧(一)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
學習交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網友關注

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品国精品久久99热| 狠狠躁夜夜躁人人躁婷婷91| 欧美高清视频在线播放| 欧美极品美女视频网站在线观看免费| 亚洲最大中文字幕| 日韩精品视频在线播放| 国内精品国产三级国产在线专| 欧美性猛交xxxx乱大交蜜桃| 国产精品久久99久久| 欧美成人免费小视频| 亚洲日韩欧美视频一区| 日本视频久久久| 日韩视频免费在线观看| 午夜精品理论片| 91久久夜色精品国产网站| 国产精品久久久久久久美男| 欧美高清视频在线播放| 欧美电影免费在线观看| 国产日本欧美在线观看| 日韩欧美在线视频日韩欧美在线视频| 亚洲欧洲国产一区| 欧美国产精品人人做人人爱| 日韩精品福利网站| 国产免费观看久久黄| 久久精彩免费视频| 色综合色综合久久综合频道88| 亚洲福利影片在线| 亚洲人成在线一二| 97精品视频在线观看| 亚洲性xxxx| 国产日韩在线免费| 日韩国产精品亚洲а∨天堂免| 国产欧美在线观看| 91免费综合在线| 美女久久久久久久| 日韩国产在线看| 亚洲福利视频免费观看| 亚洲成成品网站| 日韩av网站在线| 4444欧美成人kkkk| 久久综合久久美利坚合众国| 7777kkkk成人观看| 欧美做受高潮电影o| 中文字幕av一区二区三区谷原希美| 欧美综合在线观看| 欧美亚洲在线观看| 日韩小视频在线| 欧美大片在线看| 国产精品亚洲网站| 久久国产精品久久久久久| 日韩av免费网站| 久久久久在线观看| 91探花福利精品国产自产在线| 色悠悠久久久久| 国产a∨精品一区二区三区不卡| 日本精品中文字幕| 欧美日韩一二三四五区| 亚洲毛片一区二区| 国产一区香蕉久久| 国产成人精彩在线视频九色| 欧美精品videos性欧美| 亚洲xxx自由成熟| 日韩av日韩在线观看| 日韩美女在线看| 亚洲欧美国产视频| 色偷偷偷亚洲综合网另类| 色综合亚洲精品激情狠狠| 亚洲国产精品视频在线观看| 亚洲综合在线中文字幕| 精品久久久国产| 97精品国产aⅴ7777| 宅男66日本亚洲欧美视频| 91精品久久久久久| 日韩精品视频在线播放| 亚洲人成网站999久久久综合| 亚洲国产私拍精品国模在线观看| 欧美黄色www| 亚洲成人在线视频播放| 精品中文字幕乱| 日韩在线视频播放| 亚洲国产成人精品久久| 欧美影院在线播放| 黄色一区二区三区| 欧美电影免费观看网站| 欧美在线观看网址综合| 992tv成人免费视频| 久久久免费电影| 欧美日韩美女视频| 亚洲第一色在线| 97国产精品免费视频| 在线免费观看羞羞视频一区二区| 精品久久久一区二区| 欧美天天综合色影久久精品| 欧美极品美女视频网站在线观看免费| 色狠狠久久aa北条麻妃| 国产一区二区三区18| 91天堂在线观看| 欧美激情中文字幕在线| 日韩电影中文字幕在线观看| 欧美亚洲国产日韩2020| 日本高清不卡的在线| 久久久久久这里只有精品| www日韩欧美| 亚洲自拍欧美色图| 91精品国产乱码久久久久久久久| 欧美中文字幕在线观看| 日韩精品中文字幕在线播放| 欧美一级电影免费在线观看| 米奇精品一区二区三区在线观看| 91美女片黄在线观看游戏| 色中色综合影院手机版在线观看| 日韩欧美精品在线观看| 91精品国产网站| 91在线视频九色| 国产女人精品视频| 懂色av中文一区二区三区天美| 亚洲欧美日韩爽爽影院| 欧美黑人巨大xxx极品| 欧美激情第一页xxx| 91精品久久久久久久久久久| 欧美亚洲另类制服自拍| 大荫蒂欧美视频另类xxxx| 午夜精品一区二区三区在线播放| 欧美性猛交xxxx久久久| 亚洲国产古装精品网站| 亚洲国产精品va在线看黑人| 日韩三级成人av网| 欧美大片免费观看| 免费99精品国产自在在线| 97香蕉久久夜色精品国产| 精品亚洲永久免费精品| 久久色精品视频| 中文字幕日韩电影| 亚洲综合成人婷婷小说| 国产精品一区二区三区成人| 高清亚洲成在人网站天堂| 国模精品视频一区二区三区| 66m—66摸成人免费视频| 久热爱精品视频线路一| 国产精品普通话| 国产精品日韩在线播放| 亚洲视频网站在线观看| 在线播放国产一区中文字幕剧情欧美| 在线视频欧美性高潮| 综合网日日天干夜夜久久| 精品久久香蕉国产线看观看亚洲| 国产精品草莓在线免费观看| 综合网日日天干夜夜久久| 国产精品高精视频免费| 日韩av中文字幕在线免费观看| 亚洲人成在线观看| 久久久噜噜噜久久| 亚洲欧洲午夜一线一品| 国产欧美va欧美va香蕉在线| 国产不卡精品视男人的天堂| 97在线视频观看| 国产主播喷水一区二区| 日韩av免费在线看| 91久久嫩草影院一区二区| 黑人欧美xxxx| 午夜精品久久久久久久久久久久久| 亚洲美女精品久久| 日韩中文有码在线视频| 欧美亚洲视频在线观看|