我想知道有没有这样的事件啊?鼠标移动到一个链接的时候变成手形了?
怎么监测到呢?

解决方案 »

  1.   

    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;
      

  2.   

    woshihaoge(支离破碎):
      你的方法不错,我试验了一下,可以看到变化。
    可是我用在自己的程序中有点问题。我写了一个程序让鼠标移动,我想让鼠标图标发生变化的时候取得信息。用逆的方法在计时器中很好用,在我的鼠标移动中却要等到鼠标移动结束后才起作用。()
      procedure TForm1.Button1Click(Sender: TObject);
    var s1:Tpoint;
    var x1,y1,I:integer;
    begin
        windows.GetCursorPos(s1);
        x1:=s1.X ;
        y1:=s1.Y ;
        bstop:=0;
        for I := 1 to 200  do
           begin
           windows.mouse_event (1,1,0,1,0,);
           Image1.Picture.Icon.Handle := GetCursorHandle;//这里即使遇到变化也不起作用??
           end;
    end;