Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2007.09.09;
Скачать: [xml.tar.bz2];

Вниз

Как узнать, какой курсор в данный момент   Найти похожие ветки 

 
JanMihail ©   (2007-06-30 12:58) [0]

Мне нужно узнать, какой курсор в данный момент. Например, если курсор над текствоым полем, чтоб программа сказала что курсор crIBeam, если обычный, то crDefault
Пробовал:
GetCursor
Screen.Cursor
CursorToString

Но все это работает только если курсор водишь над формой, а мне нужно, чтоб не только над формой приложения работало.


 
Anatoly Podgoretsky ©   (2007-06-30 13:33) [1]

Попробуй SetCapture


 
Savek   (2007-06-30 14:02) [2]


function GetCursorHandle: HCURSOR;
var
  hWindow: HWND;
  pt: TPoint;
  pIconInfo: TIconInfo;
  dwThreadID, dwCurrentThreadID: DWORD;
begin
  // Find out which window owns the cursor
 // Das zum Mauszeiger zugehцrige Fenster finden
 GetCursorPos(pt);
  hWindow := WindowFromPoint(pt);

  // Get the thread ID for the cursor owner.
 // Thread ID des Fensters ermitteln
 dwThreadID := GetWindowThreadProcessId(hWindow, nil);

  // Get the thread ID for the current thread
 // Thread ID fьr den aktuellen Thread ermitteln
 dwCurrentThreadID := GetCurrentThreadId;

  // If the cursor owner is not us then we must attach to
 // the other thread in so that we can use GetCursor() to
 // return the correct hCursor

 // Wenn der Mauszeiger zu einem anderen Thread gehцrt, mьssen wir
 // an den anderen Thread anhдngen.

 if (dwCurrentThreadID <> dwThreadID) then
  begin
    if AttachThreadInput(dwCurrentThreadID, dwThreadID, True) then
    begin
      // Das Handle des Mauszeigers ermitteln
     // Get the handle to the cursor
     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;
    // Retrieves information about the specified cursor.
   // Informationen ьber den Mauszeiger auslesen
   GetIconInfo(MyCursor.Handle, pIconInfo);
    CurPosX := pIconInfo.xHotspot;
    CurPoxY := pIconInfo.yHotspot;
    // Draw the Cursor on the form
   // Den Mauszeiger auf die Form zeichnen
   Canvas.Draw(CurPoxY, CurPoxY, MyCursor);
  finally
    MyCursor.ReleaseHandle;
    MyCursor.Free;
  end;
end;

// Another Solution:
// Andere Mцglichkeit:

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


 
JanMihail ©   (2007-06-30 18:05) [3]

Спасибо, Savek!!!



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2007.09.09;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.04 c
15-1187125450
Германн
2007-08-15 01:04
2007.09.09
Скушно!


4-1174460041
Asker
2007-03-21 09:54
2007.09.09
Программный скроллинг у TTreeView


2-1187003328
Евгений Р.
2007-08-13 15:08
2007.09.09
Анализ изменений в триггере


15-1187077601
White Barsik
2007-08-14 11:46
2007.09.09
Немного глупых вопросов


2-1187084180
DagOT-R
2007-08-14 13:36
2007.09.09
Таймер - WTF??? Помогите разобраться с проблемой:





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский