Я пытался разобраться с курсорами Windows. Я успешно сопоставил значения реестра с именами, данными различным типам курсоров в диалоговом окне «Свойства мыши» (доступ к которому осуществляется через панель управления).
Например, то, что реестр называет курсором «AppStarting», диалоговое окно «Свойства мыши» называет курсором «Работа в фоновом режиме» и так далее.
У меня возникают проблемы с использованием Java для установки этих курсоров, потому что для многих из них не существует константы. В Cursor.java определены различные курсоры:
public static final int DEFAULT_CURSOR = 0;
public static final int CROSSHAIR_CURSOR = 1;
public static final int TEXT_CURSOR = 2;
public static final int WAIT_CURSOR = 3;
public static final int SW_RESIZE_CURSOR = 4;
public static final int SE_RESIZE_CURSOR = 5;
public static final int NW_RESIZE_CURSOR = 6;
public static final int NE_RESIZE_CURSOR = 7;
public static final int N_RESIZE_CURSOR = 8;
public static final int S_RESIZE_CURSOR = 9;
public static final int W_RESIZE_CURSOR = 10;
public static final int E_RESIZE_CURSOR = 11;
public static final int HAND_CURSOR = 12;
public static final int MOVE_CURSOR = 13;
Но, после некоторого тестирования, есть несколько значений реестра, которым не соответствует ни одно из них. Например, записи реестра «Запуск приложения», «Справка», «Нет», «NWPen», «Person», «Pin» и «UpArrow» не имеют соответствующего определения (и это не просто целые числа после 13; У меня было нарушение, когда я использовал 14 в качестве значения).
Что еще более удивительно, значение «Hand» в реестре на самом деле не соответствует значению HAND_CURSOR. Установка нового курсора для определения HAND_CURSOR не изменяет значение, хранящееся в реестре для ключа «Hand».
Итак, как мне установить, скажем, значение курсора AppStarting с помощью Java?
Информация: 64-разрядная версия Windows 10 jdk1.8.0_151