반응형

가상키보드 띄운 후 위치, 크기 조정하기
- 윈도우 가상키보드(osk.exe) 띄우기
- 윈도우 가상키보드(osk.exe) 위치, 크기 조정하기
- 윈도우 가상키보드(osk.exe) 종료하기
- 키보드가 없는 터치스크린방식으로 동작할때 해당기능이 꼭 필요합니다.
VKeyboard.cs
using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Runtime.InteropServices; using System.Text; using System.Threading.Tasks; namespace formsApp { class VKeyboard { [DllImport("User32.DLL")] public static extern Boolean PostMessage(Int32 hWnd, Int32 Msg, Int32 wParam, Int32 lParam); public const Int32 WM_USER = 1024; public const Int32 WM_CSKEYBOARD = WM_USER + 192; public const Int32 WM_CSKEYBOARDMOVE = WM_USER + 193; public const Int32 WM_CSKEYBOARDRESIZE = WM_USER + 197; static Process keyboardPs = null; public static void showKeyboard() { if(keyboardPs == null) { string filePath; if(Environment.Is64BitOperatingSystem) { filePath = Path.Combine(Directory.GetDirectories(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Windows), "winsxs"), "amd64_microsoft-windows-osk_*")[0], "osk.exe"); } else { filePath = @"C:\windows\system32\osk.exe"; } if(File.Exists(filePath)) { keyboardPs = Process.Start(filePath); } } } public static void hideKeyboard() { if(keyboardPs != null) { keyboardPs.Kill(); keyboardPs = null; } } public static void moveWindow(int x, int y, int w, int h) { if(keyboardPs.Handle != null) { PostMessage(keyboardPs.Handle.ToInt32(), WM_CSKEYBOARDMOVE, x, y); // Move to 0, 0 PostMessage(keyboardPs.Handle.ToInt32(), WM_CSKEYBOARDRESIZE, w, h); // Resize to 600, 300 } } } }
사용하기
//TextBox 진입시에 키보드 띄우고 위치, 크기 상단으로 지정 private void text_Enter(object sender, EventArgs e) { VKeyboard.showKeyboard(); VKeyboard.moveWindow(0, 0, 1024, 350); } //TextBox 나갈때 키모드 안보이게 처리 private void text_Leave(object sender, EventArgs e) { VKeyboard.hideKeyboard(); }
소스 다운↓↓↓
VKeyboard.cs
0.00MB
반응형
'윈폼(Winform)' 카테고리의 다른 글
C# ini 사용하기 (0) | 2021.12.05 |
---|---|
C# Reflection(클래스의 필드명 모두 가져오고, 값 넣기) (0) | 2021.11.20 |
C# 소수점 반올림, 올림, 버림(Round, Ceiling, Truncate) (0) | 2021.11.20 |
C# 동적 개수의 파라메타(params) 받기 (0) | 2021.11.20 |
C# 비밀번호 체크(영문, 숫자, 특수문자, 길이 체크) (0) | 2021.11.18 |
최근댓글