Cách ánh xạ lại chương trình để khóa Windows (Win + L)


1

Tôi đang cố gắng sắp xếp lại WinLock sang một cái gì đó mới. Basiclly tôi muốn xóa Win + L để khóa Windows và thêm Win + L để mở một chương trình cụ thể sẽ được mở. Có ai giúp đỡ không? Cảm ơn.

PS: hiện tại tôi đang sử dụng #L :: Chạy "C: \ Program Files \ program.exe" để mở chương trình nhưng nó cũng khóa máy trạm. Tôi đã tìm thấy một cách trong Registry để vô hiệu hóa chức năng của Win + L để khóa Windows nhưng Tôi không muốn chỉnh sửa registry vì vậy tôi tò mò nếu điều đó có thể được thực hiện với autohotkey?


1
Chào. Sẽ rất hữu ích khi biết những gì bạn đã cố gắng cho đến nay.
CLockeWork

Hiện tại tôi đang sử dụng #L :: Chạy "C: \ Program Files \ program.exe" để mở chương trình nhưng nó cũng khóa máy trạm. Tôi đã tìm thấy một cách trong Registry để vô hiệu hóa chức năng của Win + L để khóa Windows nhưng tôi không Muốn chỉnh sửa registry để tôi tò mò nếu điều đó có thể được thực hiện với autohotkey?
Sina Moradi

Thật tuyệt, nếu bạn chỉnh sửa câu hỏi của mình để đưa ra câu hỏi với thông tin này, bạn sẽ có nhiều khả năng nhận được câu trả lời chắc chắn (cộng với việc nó sẽ đẩy câu hỏi của bạn trở lại hàng đợi)
CLockeWork

Câu trả lời:


5

AHK không thể chặn các phím tắt Windows này. Nếu bạn không muốn chỉnh sửa giá trị đăng ký, tôi không nghĩ có một cách để làm điều này. Giá trị đăng ký là HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System: DisableLockWorkstationnếu 1 sẽ không cho phép khóa hoàn toàn hệ thống, có hoặc không có phím tắt và với khóa 0 được cho phép và phím tắt Win + L sẽ khóa hệ thống bất kể điều gì cố gắng chặn hệ thống. Đã nhận xét (cho những người đang tìm kiếm giải pháp Win + L hoạt động nhưng không biết mã AHK):

Với chỉnh sửa sổ đăng ký:

  ; WARNING: Programs that use User32\LockWorkStation (i.e. programmatically locking the operating system) may not work correctly! 
  ; This includes Windows itself (i.e. using start menu or task manager to lock will also not work).
  ; Script changes Win-L to show a msgbox and Ctrl-Alt-L to lock windows

  ; The following 3 code lines are auto-executed upon script run, the return line marks an end to the auto-executed code section.
  ; Register user defined subroutine 'OnExitSub' to be executed when this script is terminating
  OnExit, OnExitSub

  ; Disable LockWorkStation, so Windows doesn't intercept Win+L and this script can act on that key combination 
  SetDisableLockWorkstationRegKeyValue( 1 )
return

#l::
  MsgBox, Win-L was pressed! ; Arbitrary code here
return

^!l::
  ; Ctrl-Alt-L 
  ; Temporary enable locking
  SetDisableLockWorkstationRegKeyValue( 0 )
  ; Lock
  DllCall( "User32\LockWorkStation" )
  ; Disable locking again 
  SetDisableLockWorkstationRegKeyValue( 1 )
return

OnExitSub:
  ; Enable LockWorkStation, because this script is ending (so other applications aren't further disturbed)
  SetDisableLockWorkstationRegKeyValue( 0 )
  ExitApp
return

SetDisableLockWorkstationRegKeyValue( value )
  {
  RegWrite, REG_DWORD, HKEY_CURRENT_USER, Software\Microsoft\Windows\CurrentVersion\Policies\System, DisableLockWorkstation, %value%
  }

Về cơ bản, tôi đã sử dụng kỹ thuật tương tự để chặn WIN + Lđể chuyển tiếp các cuộc gọi Lync đến điện thoại di động của tôi tại nơi làm việc khi tôi không ở PC. Tôi không tìm thấy cách nào để làm điều này ngoại trừ thao túng sổ đăng ký. Bạn có thể muốn thêm rằng nếu DisableLockWorkstationđược đặt thành đúng, không có cách nào để khóa máy trạm, ngay cả các nút tương ứng từ menu bắt đầu hoặc "Ctrl + Alt + Del Screen" sẽ không làm gì cả.
MCL

Tôi thích giải pháp của bạn, nhưng đối với tôi nó không hoạt động. Có thể vì tôi đang làm việc trong môi trường doanh nghiệp và tôi không chắc chính sách nào được áp dụng cho các chương trình cố gắng truy cập vào sổ đăng ký. Có cách nào để nhận phản hồi từ AHK khi RegWrite không thành công không?
Phường

@WardC "ErrorLevel được đặt thành 1 nếu có sự cố hoặc 0 khác. A_LastError được đặt thành kết quả của chức năng GetLastError () của hệ điều hành.", Được lấy từ trợ giúp cho RegWrite
hippibruder

@ 0fnt Trong tập lệnh AHK, phần đầu được gọi là phần tự động thực thi và được thực thi một lần khi tập lệnh bắt đầu. Tôi cũng đã thêm một số ý kiến.
hà mã

@hippibruder Cảm ơn bạn! Vì vậy, sự khác biệt giữa OnExitSub ban đầu và cuối cùng là gì? Có vẻ như với tôi rằng điều đầu tiên nên là On EntrySub hoặc một cái gì đó tương tự?
0fnt
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.