Tôi muốn viết bàn phím ảo, như bàn phím ảo trên màn hình cho màn hình cảm ứng. Nhưng tôi đang gặp sự cố với bàn phím ảo của mình đánh cắp tiêu điểm từ ứng dụng đang được sử dụng. Các cửa sổ trên bàn phím màn hình mantains tập trung vào các ứng dụng hiện tại ngay cả khi người dùng nhấp vào nó. Có cách nào để làm tương tự với các hình thức cửa sổ trong C#?Tạo biểu mẫu không thể lấy nét trong C#
Điều duy nhất tôi có thể làm bây giờ là gửi sự kiện bàn phím đến một ứng dụng đặc biệt, như notepad trong đoạn mã sau. Nếu tôi có thể làm cho các hình thức không tập trung, tôi có thể nhận được cửa sổ tập trung hiện tại với GetForegroundWindow.
[DllImport("USER32.DLL", CharSet = CharSet.Unicode)]
public static extern IntPtr FindWindow(string lpClassName,string lpWindowName);
[DllImport("USER32.DLL")]
public static extern bool SetForegroundWindow(IntPtr hWnd);
private void button1_Click(object sender, EventArgs e)
{
IntPtr calculatorHandle = FindWindow("notepad", null);
SetForegroundWindow(calculatorHandle);
SendKeys.SendWait("111");
}
Có cách nào có thể thực hiện được không? Bất kỳ đề xuất nào về cách thức tốt hơn để có biểu mẫu gửi các sự kiện bàn phím đến ứng dụng đang được sử dụng?
Cảm ơn !!
+1 Ý tưởng tốt đẹp/con trỏ. –
Cảm ơn! Nửa chừng đã xong! Giải pháp bài viết đó ngăn cản biểu mẫu của tôi lấy tiêu điểm, nhưng không ngăn ứng dụng kia mất tập trung. Tức là, khi tôi nhấp vào ứng dụng của mình, tôi sẽ gặp phải tình huống không có ứng dụng nào tập trung. – Jandex
Trong trường hợp các liên kết trở nên không hợp lệ, câu trả lời của bạn về cơ bản không chứa thông tin.Vui lòng tóm tắt các tài nguyên ngoài trang web, để câu trả lời của bạn tiếp tục có giá trị, ngay cả khi các tài nguyên ngoài trang web chết. – IInspectable