Как я могу скрыть курсор в Windows?(Дельфи) - PullRequest
1 голос
/ 22 июля 2010

Я хочу, чтобы моя программа работала вроде Team Player . Мульти мыши, мульти курсор, но только один фокус. Но проблема в том, что я не могу скрыть курсор по умолчанию. Я только хочу, чтобы это было невидимо. Пока это работает только внутри моего приложения.

ShowCursor(false);

и

Screen.Cursor:=crNone;

Есть ли способ скрыть курсор для всей системы (только пока я не закрою приложение)?


EDIT: Это не работает:

procedure myShowCursor(Show :boolean);
var cursor1, cursor2: HCursor;
begin
 cursor1 :=CopyIcon(Screen.Cursors[crDefault]);
 cursor2 := LoadCursorFromFile('blank\blank.cur');
 if Show then
  SetSystemCursor(cursor1, OCR_NORMAL)
 else
 SetSystemCursor(cursor2, OCR_NORMAL);
end;

Это работает: (но я не могу это точно использовать)

procedure myShowCursor;
var cursor1, cursor2: HCursor;
begin
 cursor1 :=CopyIcon(Screen.Cursors[crDefault]);
 cursor2 := LoadCursorFromFile('blank\blank.cur');

 SetSystemCursor(cursor2, OCR_NORMAL);
 SetSystemCursor(cursor1, OCR_NORMAL)
end;

решено : восстановлены системные курсоры с помощью SystemParametersInfo

procedure TForm1.myShowCursor(Show :boolean);
var cursor1: HCursor;
begin
 cursor1 := LoadCursorFromFile('blank\blank.cur');
 if Show then
  SystemParametersInfo(SPI_SETCURSORS,0,0,WM_SETTINGCHANGE or SPIF_UPDATEINIFILE )
 else
 SetSystemCursor(cursor1, OCR_NORMAL);
end;

1 Ответ

2 голосов
/ 22 июля 2010

сначала скачайте пустой курсор, вы можете получить его из разных мест, я скачал его с http://pc.autons.net/stuff/blanks/blank.zip , extact blank.zip, затем скопируйте и вставьте blank.cur в нужное место (я сохраняю его в 'c: \ blank.cur' для этого примера) затем попробуйте этот код:

var cursor1, cursor2: HCursor;
begin
 cursor1 := CopyIcon(Screen.Cursors[crDefault]);
 cursor2 := LoadCursorFromFile('c:\blank.cur');
 SetSystemCursor(cursor2, OCR_NORMAL);//to hide cursor
 Sleep(2000);
 SetSystemCursor(cursor1, OCR_NORMAL);//to show cursor again
end;

надеюсь, это поможет

...