mirror of
https://github.com/tauri-apps/global-hotkey.git
synced 2026-01-31 00:45:22 +01:00
enhance: better error messages on windows for registration errors returned by OS (#115)
This commit is contained in:
@@ -6,7 +6,7 @@ use std::ptr;
|
||||
|
||||
use keyboard_types::{Code, Modifiers};
|
||||
use windows_sys::Win32::{
|
||||
Foundation::{HWND, LPARAM, LRESULT, WPARAM},
|
||||
Foundation::{ERROR_HOTKEY_ALREADY_REGISTERED, HWND, LPARAM, LRESULT, WIN32_ERROR, WPARAM},
|
||||
UI::{
|
||||
Input::KeyboardAndMouse::*,
|
||||
WindowsAndMessaging::{
|
||||
@@ -95,7 +95,19 @@ impl GlobalHotKeyManager {
|
||||
let result =
|
||||
unsafe { RegisterHotKey(self.hwnd, hotkey.id() as _, mods, vk_code as _) };
|
||||
if result == 0 {
|
||||
return Err(crate::Error::AlreadyRegistered(hotkey));
|
||||
let error = std::io::Error::last_os_error();
|
||||
|
||||
return match error.raw_os_error() {
|
||||
Some(raw_os_error) => {
|
||||
let win32error = WIN32_ERROR::try_from(raw_os_error);
|
||||
if let Ok(ERROR_HOTKEY_ALREADY_REGISTERED) = win32error {
|
||||
Err(crate::Error::AlreadyRegistered(hotkey))
|
||||
} else {
|
||||
Err(crate::Error::OsError(error))
|
||||
}
|
||||
}
|
||||
_ => Err(crate::Error::OsError(error)),
|
||||
};
|
||||
}
|
||||
}
|
||||
_ => {
|
||||
|
||||
Reference in New Issue
Block a user