Skip to content

[Win] Sửa lỗi phím tắt không hoạt động sau khi mở khóa màn hình#317

Open
uponatime2019 wants to merge 2 commits intotuyenvm:masterfrom
uponatime2019:master
Open

[Win] Sửa lỗi phím tắt không hoạt động sau khi mở khóa màn hình#317
uponatime2019 wants to merge 2 commits intotuyenvm:masterfrom
uponatime2019:master

Conversation

@uponatime2019
Copy link

Vấn đề: Sau khi unlock màn hình, các phím tắt (Ctrl+Shift+Z, v.v.) không hoạt động nữa.

Nguyên nhân: Khi Windows unlock, các keyboard hooks có thể bị invalidate, và biến _lastFlag vẫn giữ giá trị modifier key cũ, gây ra checkHotKey() fail.

Giải pháp:

  1. Thêm wtsapi32.h và wtsapi32.lib
  2. Đăng ký WTS session change notification
  3. Khi unlock (WTS_SESSION_UNLOCK), reinitialize hooks
  4. Reset _flag, _lastFlag, _keycode, _isFlagKey về 0

Thay đổi files:

  • stdafx.h: Thêm #include <wtsapi32.h>
  • OpenKey.vcxproj: Thêm wtsapi32.lib dependency
  • SystemTrayHelper.cpp: Thêm WM_WTSSESSION_CHANGE handler
  • OpenKey.cpp: Thêm OpenKeyReinitHooks() reset modifier state
  • OpenKeyManager.h/.cpp: Thêm reinitHooks() method

Author: Glm 🤪 | đã test, lỗi phím tắt EN/VI sau khi lock screen đã được fix ✅

KP@XX15c and others added 2 commits February 22, 2026 12:35
Vấn đề: Sau khi unlock màn hình, các phím tắt (Ctrl+Shift+Z, v.v.)
không hoạt động nữa.

Nguyên nhân: Khi Windows unlock, các keyboard hooks có thể bị
invalidate, và biến _lastFlag vẫn giữ giá trị modifier key cũ,
gây ra checkHotKey() fail.

Giải pháp:
1. Thêm wtsapi32.h và wtsapi32.lib
2. Đăng ký WTS session change notification
3. Khi unlock (WTS_SESSION_UNLOCK), reinitialize hooks
4. Reset _flag, _lastFlag, _keycode, _isFlagKey về 0

Thay đổi files:
- stdafx.h: Thêm #include <wtsapi32.h>
- OpenKey.vcxproj: Thêm wtsapi32.lib dependency
- SystemTrayHelper.cpp: Thêm WM_WTSSESSION_CHANGE handler
- OpenKey.cpp: Thêm OpenKeyReinitHooks() reset modifier state
- OpenKeyManager.h/.cpp: Thêm reinitHooks() method

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Vấn đề: Keyboard shortcuts và gõ Tiếng Việt randomly bị stuck,
nhưng click icon system tray vẫn toggle được EN/VI được.

Nguyên nhân: Keyboard hooks bị Windows remove/invalidate,
khiến không nhận được keyboard events.

Giải pháp: Thêm timer 10s để tự động reinitialize hooks,
giống như khi lock/unlock màn hình.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant