Tôi đã tạo một bàn phím trên màn hình với C# Windows Forms. Tôi sử dụng chức năng Sendkeys.Send()
để gửi các lần nhấn phím. Tất cả các chữ cái nhưng chữ cái i hoạt động tốt. Khi tôi bấm chữ cái i trên bàn phím khi Microsoft Word mở, nó sẽ gửi Ctrl + Alt + I và mở hộp thoại in. Nó cũng tương tự như Notepad ++. Nhưng nó hoạt động tốt khi tôi cố gắng gõ vào notepad.Gửi thư 'i' bằng SendKeys
Trong mã của tôi, tôi gửi các phím với SendKeys.Send(value);
nơi giá trị là nội dung của nút được nhấn. Tôi nhận được văn bản có mã sau:
string s = ((Button)sender).Text;
Mọi nhận xét về lý do tại sao nó không hoạt động bình thường?
Edit: Tôi đã tạo ra một dự án cửa sổ hình thức mới chỉ với một nút và toàn bộ mã dưới đây. Vẫn không làm việc. Bất kỳ ý tưởng nào cũng sẽ được đánh giá cao.
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
SendKeys.Send("i");
}
// Prevent form being focused
const int WS_EX_NOACTIVATE = 0x8000000;
protected override CreateParams CreateParams
{
get
{
CreateParams ret = base.CreateParams;
ret.ExStyle |= WS_EX_NOACTIVATE;
return ret;
}
}
}
Chức năng ghi đè là ngăn mẫu được tập trung. Để tôi có thể gửi các tổ hợp phím đến ứng dụng khác có tiêu điểm.
Có chắc chắn ở phần này của mã? 'Giá trị' là gì, đây không phải là một từ khóa? Bạn có thể trong một số cercumstance thấy rằng thay vì đúc với '((MyClass) đối tượng)' mà đúc bằng cách sử dụng '(đối tượng như MyClass)'. Thứ hai sẽ trả về null nếu obj không phải là một MyClass, chứ không phải là ném một lớp ngoại lệ. – MoonKnight
Im xin lỗi. nó sẽ là chuỗi s thay vì giá trị s.The kết quả không thay đổi ngay cả tôi làm điều đó như thế này: Sendkeys.Send ("i"); –
Bạn đã sử dụng trình gỡ rối để kiểm tra giá trị 's' đang nhận được chưa? Điều này sẽ giúp bạn thu hẹp vấn đề. –