如何取得別支程式的輸入游標位置?

內文】 http://delphi.ktop.com.tw/topic.asp?topic_id=47386


function GetCaretPosition(var APoint: TPoint): Boolean;
var w: HWND;
  aID, mID: DWORD;
begin
  Result:= False;
  w:= GetForegroundWindow;
  if w <> 0 then
  begin
    aID:= GetWindowThreadProcessId(w, nil); 
    mID:= GetCurrentThreadid;
    if aID <> mID then 
    begin
      if AttachThreadInput(mID, aID, True) then 
      begin
        w:= GetFocus; 
        if w <> 0 then
        begin 
          Result:= GetCaretPos(APoint);
          Windows.ClientToScreen(w, APoint); 
        end;
        AttachThreadInput(mID, aID, False); 
      end;
    end;
  end;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
  NotePad:HWND;
  Pt: TPoint;
begin
  NotePad:=FindWindow('NotePad', nil);
 if NotePad<>0 then
  if GetCaretPosition(Pt) then
  begin
    Label1.Caption :=(Format('Caret 位置: %d %d', [Pt.x, Pt.y]));
    //SetCursorPos(Pt.X, Pt.Y);
  end;
end;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值