內文】
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;