[C#] Window 10에서 Ctrl+Shift+Win+B 를 버추얼 키로 눌렀을 때 작동하지 않는 문제
조회수 1362회
Winform C#을 사용해 만든 코드입니다. 일정 시간이 지나면 ctrl+shift+win+b키를 눌러 그래픽 드라이버를 리셋하는 프로그램인데요. Window 10 Home, Pro에서 잘 도는걸 확인했습니다.
문제는 Enterprise 2016에서 작동하지 않습니다. 에러메세지도 없구요. 카운트 다운도 잘 되고 일정 시간이 됐을 때 키도 잘 눌립니다. (화상키보드로 눌리는 것을 확인)
ctrl+shift+win을 버추얼키로 누르고 키보드로 직접 B를 누르면 작동이 되는걸로 봐서, B의 신호가 어떻게 들어가는지가 드라이버 리프레쉬의 키인것 같은데.. 이 이후로 어떻게 해야할지 전혀 감이 안 잡혀서 이렇게 여쭙니다.
뭐가.. 문제일까요..? 혹시 cmd 명령어 중 ctrl+shift+win+b 같은 기능이 있다면 알려주십시오.
지금까지 확인 한 내용들
- Window Home, Pro에서 잘 돈다(6대의 컴퓨터에서 확인)
- enterprise2016 버전에서 키보드로 직접 ctrl+shift+win+b를 눌렀을 때 단축키가 잘 작동하는것을(화면이 깜빡임) 확인.
- 화상키보드로 ctrl+shift+win+b를 눌렀을 때, 시간이 되어도 화면이 깜빡이지 않음.
- 프로그램을 관리자 권한으로 실행시켜도 화면이 깜빡이지 않음.
- 화상키보드로 ctrl+shift+win을 누르고 키보드로 직접 b를 눌렀을 때 작동하는 것을 확인
- 똑같이 프로그램으로 일정 시간이 됐을 때 ctrl+shift+win을 누르게 하고 키보드로 직접 b를 눌렀을 때 작동하는 것을 확인
- keybd_event 사용. 화면이 깜빡이지 않음 ex :
keybd_event(byte.Parse(((int)Keys.LShiftKey).ToString()), 0, 0x01 | 0x0, UIntPtr.Zero);
Sendinput 사용. 화면이 깜빡이지 않음.
ex :public static void SendKeyDown(KeyCode keyCode){ INPUT input = new INPUT { Type = 1 }; input.Data.Keyboard = new KEYBDINPUT(); input.Data.Keyboard.Vk = (ushort)keyCode; input.Data.Keyboard.Scan = 0; input.Data.Keyboard.Flags = 0; input.Data.Keyboard.Time = 0; input.Data.Keyboard.ExtraInfo = IntPtr.Zero; INPUT[] inputs = new INPUT[] { input }; if (SendInput(1, inputs, Marshal.SizeOf(typeof(INPUT))) == 0) { throw new Exception(); } } public enum KeyCode : ushort { KEY_B = 0x42, }
```C#
SendKeyDown(KeyCode.KEY_B);
- B를 vk가 아니라 스캔코드 사용. 화면이 깜빡이지 않음. (B의 스캔코드 0x30)
keybd_event(0, MapVirtualKey((int)Keys.B,0) , 0x01|0x0, UIntPtr.Zero);
public static void SendKeyDownScan(KeyCode keyCode)
{
INPUT input = new INPUT
{
Type = 1
};
input.Data.Keyboard = new KEYBDINPUT();
input.Data.Keyboard.Vk = 0;
input.Data.Keyboard.Scan = (ushort)keyCode;
input.Data.Keyboard.Flags = 0 | 8;
input.Data.Keyboard.Time = 0;
input.Data.Keyboard.ExtraInfo = IntPtr.Zero;
INPUT[] inputs = new INPUT[] { input };
if (SendInput(1, inputs, Marshal.SizeOf(typeof(INPUT))) == 0)
{
throw new Exception();
}
}
-
(•́ ✖ •̀)
알 수 없는 사용자
댓글 입력