Tôi đang tạo một ứng dụng Windows để ghi lại đầu vào bàn phím trên toàn cầu. Khi người dùng sử dụng tổ hợp phím tắt CTRL + ALT + G, ứng dụng sử dụngTại sao SendKey.Send() chỉ hoạt động một lần trong một thời gian?
SendKey.Send(Guid.NewGuid().ToString());
để nhập GUID tổng hợp vào bất kỳ trường văn bản nào đang được lấy nét. Và nó nên làm điều này bất kể ứng dụng lấy đầu vào.
Nó hoạt động chính xác như tôi dự định lần đầu tiên bạn gõ CTRL + ALT + G nhưng các lần thử tiếp theo sẽ dẫn đến không thành công hoặc chỉ thành công không thường xuyên.
Ý tôi là, tất cả sẽ rất đơn giản và nhất quán. Tôi có một cái móc bàn phím toàn cầu đang hoạt động luôn hoạt động mọi lúc, tôi đã thử nghiệm nó, nhưng phương thức SendKey.Send() không hoạt động mọi lúc.
Tôi đã xem tất cả mọi thứ trên Google về bất kỳ điều gì liên quan đến vấn đề của tôi nhưng không có gì có hiệu quả cho đến thời điểm này.
Bất kỳ ai có thông tin chi tiết?
CHỈNH SỬA 1: Tôi cũng đã thử sử dụng SendKey.SendWait(), thực hiện tương tự. Tôi thực sự muốn có một cách đáp ứng tốt hơn để tạo GUID mới bằng cách sử dụng cách tiếp cận phím tắt này.
EDIT 2:
Dưới đây là bộ phận thiết yếu của mã:
/* Initialization Code Here */
// register the event that is fired after the key press.
hook.KeyPressed += new EventHandler<KeyPressedEventArgs>(hook_KeyPressed);
// register the control + alt + F12 combination as hot key.
hook.RegisterHotKey((uint)(HotkeyModifiers.Control | HotkeyModifiers.Alt), Keys.G);
Mã sự kiện khá đơn giản:
void hook_KeyPressed(object sender, KeyPressedEventArgs e)
{
SendKeys.SendWait(Guid.NewGuid().ToString());
}
Mọi thứ khác trong dự án của tôi chỉ là lông tơ.
Cập nhật 1:
tôi có nhiều câu hỏi về chủ đề này, nhưng tôi hết thời gian để tiếp tục làm việc về vấn đề này cho ngày hôm nay. Tôi đã thực hiện đề xuất của Jon Raynor về việc sử dụng cách tiếp cận app.config với một mức độ thành công nào đó. Khi tôi cô lập các vấn đề mới của tôi, tôi sẽ đăng một bản chỉnh sửa và có thể đóng câu hỏi này nếu tôi nhận được ứng dụng của tôi hoạt động như dự định.
Ý của bạn là gì khi chụp đầu vào bàn phím trên toàn cầu? Nếu bạn đang làm điều đó không có nghĩa là bạn cũng nhận được GUID. Chắc chắn bạn muốn RegisterHotKey. –
Tôi đang sử dụng mã PIN RegisterHotKey cho dự án này. Việc chụp các phím nóng rất dễ, vấn đề là với phương thức SendKey.Send(). – LamdaComplex
Khi trong mã của bạn, bạn gọi SendKey.Send? –