Görsel stüdyo neden autohotkey'den önce önemli olayları yakalıyor?


82

Kısa süre önce biraz deney olarak Dvorak klavye düzenine geçtim. Geçişin en zor kısımlarından biri kısayol tuşlarıyla uğraşmaktır. Çoğu kısayol tuşu, QWERTY düşünülerek tasarlanmıştır ve daha da kötüsü, kısayol tuşları kas belleğine aşırı derecede bağımlı gibi görünür.

Aksine tüm sıcak-tuşları relearn daha ben ne zaman Dvorak QWERTY geri düzeni çevirmek için bir autohotkey komut dosyası yazdım Ctrl, Altya Wintuşlar diğer tuşlarla birlikte bastırılır. Visual Studio '08 dışında denediğim her yerde güzel çalışıyor. Autohotkey onları çevirmeden önce tuş vuruşları yakalanmış gibi görünüyor.

Bu neden oluyor ve bunu nasıl düzeltebilirim?

Aşağıda senaryomdan bir alıntı (baştan) var:

; control + letter
^;::^z
^q::^x
^j::^c
^k::^v

Güncelleme: Script, ahk, vs08 ve coderush yeni yüklenmiş olarak Win7'de iyi çalışıyor. Sorun yaşadığım makine manzara çalışıyor. Nasıl daha ileri teşhis konulacağına dair herhangi bir fikriniz var mı?

Güncelleme 2: Komut dosyası Vista ve 2010 beta 2 ile sorunsuz çalışıyor. Sadece vs 08 + vista ile bir şey gibi görünüyor. Bu gece yeni bir vs08 yüklemesi deneyeceğim.

Yanıtlar:


176

Aha! Ben anladım. Ahk ve hedef uygulama aynı ayrıcalıklar (veya kullanıcı) altında çalışmıyorsa, ahk klavye olaylarını düzgün bir şekilde engellemeyecek / simüle etmeyecektir. Benim durumumda, ahk betiği şu anda oturum açmış kullanıcı olarak çalıştırılırken, görsel stüdyo yönetici (yükseltilmiş) ayrıcalıklarıyla çalıştırılıyordu.

Aşağıdakilerden biri sorunu çözdü:

  • Mevcut kullanıcı olarak hem vs hem de ahk çalıştırma
  • Komut dosyasını derleme ve hem vs hem de derlenmiş uygulamayı yönetici olarak çalıştırma

15
Sadece farklı izinlerle ilgili olmadığını eklemek istedim . Ancak bunun yerine, bir AutoHotkey komut dosyasının komut dosyasından daha yüksek bir ayrıcalık düzeyinde çalışan bir uygulamada çalışmayacağı gerçeği . Aşağıdaki cevabıma bakın.
Himanshu P

2
Ahk için içerik menüsüne "Yönetici olarak çalıştır" ekleyebilirsiniz. Bir derleme adımını kaydeder. howtogeek.com/howto/windows-vista/…
Adam Bell

Burada AutoHotkey komut dosyasını, Görev Zamanlayıcı aracılığıyla kullanıcı müdahalesi olmadan her başlangıçta yönetici olarak çalıştırmanın daha temiz bir yolunu buldum: autohotkey.com/boards/viewtopic.php?t=21434
Jose Antonio

Şerefe
illusion466

48

OP'nin kendisinin bulduğu çözüme birkaç nokta eklemek istiyorum.

1) Sorun, AHK ve VS'nin farklı izinlerle çalıştırılmasıyla ilgili değildir - sadece yönetici olmayan modda çalışan bir komut dosyası tarafından oluşturulan kısayol tuşları , yönetici modunda çalışan uygulamalarda çalışmaz , ancak sorun olmazsa Tam tersi.

2) Komut dosyasını zorunlu olarak derlemeye gerek yoktur, sadece autohotkey.exe'yi yönetici modunda çalışacak şekilde ayarlayın (yaptığım şey budur) veya alternatif olarak belirli komut dosyası için bir kısayol oluşturun ve her zaman yönetici modunda çalışacak şekilde ayarlayın. (btw, sadece belirtmek gerekirse, bir AHK betiğinin derlenmiş bir sürümünü çalıştırmanın bir performans kazanımı yoktur, çünkü kod hala yorumlanmaktadır - sadece yorumlayıcı, oluşturulan yürütülebilir dosyaya gömülüdür)


3

Bunun nedeni , Kullanıcı Hesabı Denetimi'nin (UAC) bir parçası olan Kullanıcı Arayüzü Ayrıcalık İzolasyonu (UIPI) adlı bir güvenlik özelliğidir .

SSS'de listelenen birkaç geçici çözüm vardır:

Kullanıcı Hesabı Denetimi'nin (UAC) neden olduğu sorunlara nasıl çözüm bulabilirim?

Yaygın geçici çözümler aşağıdaki gibidir:

  • AutoHotkey Kurulumunda bağlam menülerine 'UI Erişimi ile Çalıştır' seçeneğini ekleyin seçeneğini etkinleştirin . Bu seçenek, AutoHotkey'i yeniden yüklemeden, AutoHotkey Setup'ı Başlat menüsünden yeniden çalıştırarak etkinleştirilebilir veya devre dışı bırakılabilir. Etkinleştirildikten sonra, komut dosyanızı sağ tıklayıp UI Erişimi ile Çalıştır'ı seçerek veya gibi bir komut satırı kullanarak "AutoHotkeyU32_UIA.exe" "Your script.ahk"(ancak tam yolları dahil ederek) başlatın .
  • Komut dosyasını yönetici olarak çalıştırın. Bunun ayrıca komut dosyası tarafından başlatılan tüm programların yönetici olarak çalışmasına neden olduğunu ve kullanıcının komut dosyasını başlatırken bir onay istemini kabul etmesini gerektirebileceğini unutmayın.
  • "Tüm yöneticileri Yönetici Onay Modunda çalıştır" yerel güvenlik politikasını devre dışı bırakın (önerilmez).
  • UAC'yi tamamen devre dışı bırakın. Bu tavsiye edilmez ve Windows 8 veya sonraki sürümlerde uygulanabilir değildir.

Beklenmeyen veya istenmeyen yan etkileri olabileceğinden, genellikle bu sorunu çözmek için yönetici olarak bir komut dosyası çalıştırmanızı önermiyorum. Örneğin, komut dosyasının birlikte başlattığı herhangi bir program Runda yönetici olarak çalışacaktır. Komut dosyası ayrıca Program Dosyaları gibi çeşitli klasörler için gereksiz yazma iznine sahip olacaktır. Biraz kötü kod (bir yerden kopyalanıp yapıştırılan kötü amaçlı kod veya hata içeren kod) bu şekilde daha fazla zarar verebilir.

Elbette son iki seçeneği de önermiyorum. Bu, yalnızca yukarıda açıklandığı gibi etkinleştirilebilen ve kullanılabilen UI Erişimi ile Çalıştır'ı bırakır .


0

Görünüşe göre bunun için bir çözüm var.

Belgelerden Program.htm # Installer_uiAccess .
Lexikos tarafından forum başlığı

Alıntı:

EnableUIAccess

UAC etkinken bile komut dosyalarının aşağıdakileri yapmasına izin vermek için AutoHotkey.exe'yi değiştirir:

Komut dosyasını yönetici olarak çalıştırmadan yönetim programlarının pencereleriyle etkileşim kurun. SendPlay'i kullanın. Sınırlamalar var; lütfen bu komut dosyasını kullanmadan önce yazıyı okuyun.

Ahk dosyasının indirme bağlantısı forumda bozuk ama Github'da buldum: EnableUIAccess.ahk


EnableUIAccess.ahk'a neden bakıyorsunuz? Modası geçmiş. Bağlandığınız belgeler, AutoHotkey yükleyicide yerleşik olan seçenek hakkında size bilgi verir. Yükleyici ihtiyacınız olan her şeyi içerir. (Ayrıca cevap olarak daha fazla ayrıntı gönderdim.)
Lexikos
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.