Genel olarak klavye girdisini yakalayan bir Windows uygulaması yapıyorum. Bir kullanıcı CTRL + ALT + G kısayol combo kullandığında uygulama odakta ne olursa olsun metin alanı içine GUID olarak oluşturulmuş yazmak içinNeden SendKey.Send() sadece bir süre çalışır?
SendKey.Send(Guid.NewGuid().ToString());
kullanır. Ve girdiyi alan uygulamadan bağımsız olarak bunu yapmalıdır.
Sana CTRL + ALT + G'ye ama sonraki girişimler hiçbir şey, ya da sadece çok seyrek başarılara neden ilk defa istendiği gibi Tam olarak çalışır.
Her şey çok basit ve tutarlı olmalı. Sürekli çalışan bir klavye klavyem var, bunu test ettim, ancak SendKey.Send() yöntemi her zaman çalışmıyor.
Sorunumla ilgili herhangi bir şeye Google'ın her yerinde baktım, ancak şu ana kadar hiçbir şey işe yaramadı.
Herhangi bir fikir sahibi olan var mı?
EDIT 1: SendKey.SendWait() kullanmayı denedim, aynı şeyi yapar. Bu klavye kısayol yaklaşımını kullanarak yeni GUID oluşturmak için daha duyarlı bir yol istiyorum.
DÜZENLEME 2: Projemdeki başka
void hook_KeyPressed(object sender, KeyPressedEventArgs e)
{
SendKeys.SendWait(Guid.NewGuid().ToString());
}
Her şey sadece geçerli:
/* 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);
olay kodu oldukça basittir: Aşağıda
kod gerekli parçaları olan kabartmak.
Güncelleme 1:
Bu konu hakkında daha fazla soru var, ama bugün için bu konuda çalışmaya devam etmek zaman yokum. Jon Raynor'ın app.config yaklaşımını bir dereceye kadar kullanma önerisini hayata geçirdim. Yeni problemlerimi bir kez kestirdiğimde, bir düzenlemeyi yayınlayacağım ve uygulamanın amacına uygun şekilde çalışmasını sağlayacağım.
Genel olarak klavye girişini yakalayarak ne demek istiyorsunuz? Bunu yapıyorsanız, aynı zamanda GUID'yi aldığınız anlamına da gelmez. Kesinlikle RegisterHotKey istiyorum. –
Bu proje için RegisterHotKey pinvoke kullanıyorum. Kısayol tuşlarını yakalamak kolaydır, sorun SendKey.Send() yöntemindedir. – LamdaComplex
Kodunuzda SendKey.Send'i mi çağırıyorsunuz? –