सवाल फोकस चोरी से अनुप्रयोगों को रोकना


सक्रिय विंडो से फोकस चोरी अनुप्रयोगों को रोकने के लिए कोई समाधान हैं?

यह विशेष रूप से परेशान होता है जब मैं कोई एप्लिकेशन शुरू कर रहा हूं, कुछ और करने के लिए स्विच करें और नया एप्लिकेशन पाठ की आधा वाक्य प्राप्त करना शुरू कर देता है।


178
2017-08-05 08:48


मूल


@Ivo विंडोज 7 मेरे मामले में, लेकिन मुझे लगता है कि SuperUser के लिए सभी विंडोज संस्करण प्रासंगिक होंगे - svandragt
मॉडरेटर ने इस सवाल को विलय किया: superuser.com/questions/199821/... वर्तमान के साथ। यह गलत है, वर्तमान प्रश्न का उत्तर विंडोज 7 पर लागू नहीं होता है, इसलिए इसे विलय नहीं किया जाना चाहिए। अब तक मुझे विंडोज 7 में इस समस्या का समाधान नहीं मिला - Alex Angelico
यह मैंने कभी भी इस्तेमाल किए गए हर जीयूआई के साथ अपने नंबर एक पालतू शिखर में से एक है। आप टाइपिंग और ब्लैम कर रहे हैं, कुछ सोते हुए डायलॉग बॉक्स फोकस चुराते हैं और आधे आपके कीस्ट्रोक कहीं और जाते हैं। आपको लगता है कि खिड़की प्रणालियों के कार्यान्वयनकर्ताओं ने दशकों पहले इसे बाहर निकाला होगा। यदि खिड़की में गतिविधि है, तो नई विंडो के संपर्क में देरी हो रही है। जैसे अंतिम बटन क्लिक या कुंजीस्ट्रोक वर्तमान में केंद्रित विंडो में तीन या चार सेकंड तक जीयूआई पर कुछ भी पॉप न करें। रवींद्र! - Kaz
This is especially annoying when I'm starting an application, switch to do something else and the new application starts receiving half a sentence of text.जब कोई संवाद पॉप अप होता है तो यह और भी परेशान होता है और आप संदेश को देखे बिना अनजाने में इसे खारिज करते हैं क्योंकि आप प्रेस करने के लिए होते हैं Space या Enter एक वाक्य टाइप करते समय। - Synetech
यह वास्तव में कष्टप्रद से अधिक तरीका है, मैं कहूंगा कि यह एक सुरक्षा जोखिम है। जब आप पासवर्ड टाइप करने और अपना इनपुट हथियाने के बीच में होते हैं तो एप्लिकेशन को पॉप अप करने के लिए कुछ भी नहीं है। - Chris Peacock


जवाब:


यह बिना संभव नहीं है व्यापक विंडोज इंटर्नल के हेरफेर और आपको इसे खत्म करने की जरूरत है।

दैनिक कंप्यूटर उपयोग में कुछ क्षण होते हैं जब यह वास्तव में महत्वपूर्ण होता है कि आप ऑपरेटिंग सिस्टम से पहले एक और कार्य करने से पहले एक क्रिया करते हैं। ऐसा करने के लिए, इसे कुछ विंडो पर अपना ध्यान लॉक करने की आवश्यकता है। विंडोज़ में, इस व्यवहार पर नियंत्रण बड़े पैमाने पर आपके द्वारा उपयोग किए जाने वाले व्यक्तिगत कार्यक्रमों के डेवलपर्स को छोड़ दिया जाता है।

जब इस विषय की बात आती है तो प्रत्येक डेवलपर सही निर्णय नहीं लेता है।

मुझे पता है कि यह बहुत निराशाजनक और परेशान है, लेकिन आप अपने केक नहीं ले सकते हैं और इसे भी खा सकते हैं। आपके दैनिक जीवन में शायद कई मामले हैं जहां आप एक निश्चित यूआई तत्व या एक आवेदन पर ध्यान केंद्रित करने के लिए ध्यान केंद्रित कर रहे हैं कि फोकस उस पर बंद रहता है। लेकिन ज्यादातर एप्लिकेशन कुछ हद तक बराबर होते हैं जब यह तय करने की बात आती है कि अभी कौन सी लीड है और सिस्टम कभी भी सही नहीं हो सकता है।

कुछ समय पहले मैंने इस मुद्दे को एक बार और सभी के लिए (और असफल) हल करने पर व्यापक शोध किया था। मेरे शोध का नतीजा पाया जा सकता है परेशान परियोजना पृष्ठ

इस परियोजना में एक ऐसा एप्लिकेशन भी शामिल है जो बार-बार कॉल करके फोकस करने की कोशिश करता है:

switch( message ) {
  case WM_TIMER:
    if( hWnd != NULL ) {
      // Start off easy
      // SetForegroundWindow will not move the window to the foreground,
      // but it will invoke FlashWindow internally and, thus, show the
      // taskbar.
      SetForegroundWindow( hWnd );

      // Our application is awesome! It must have your focus!
      SetActiveWindow( hWnd );

      // Flash that button!
      FlashWindow( hWnd, TRUE );
    }
    break;

जैसा कि हम इस स्निपेट से देख सकते हैं, मेरा शोध उपयोगकर्ता इंटरफ़ेस व्यवहार के अन्य पहलुओं पर भी केंद्रित था जो मुझे पसंद नहीं है।

जिस तरह से मैंने इसे हल करने का प्रयास किया था, वह डीएलएल को हर नई प्रक्रिया में लोड करना था और एपीआई कॉल को हुक करना था जिससे अन्य विंडो सक्रिय हो जाएंगी।
आखिरी हिस्सा आसान है, भयानक एपीआई हुकिंग पुस्तकालयों के लिए धन्यवाद। मैंने बहुत अच्छा इस्तेमाल किया mhook पुस्तकालय:

#include "stdafx.h"
#include "mhook-2.2/mhook-lib/mhook.h"

typedef NTSTATUS( WINAPI* PNT_QUERY_SYSTEM_INFORMATION ) ( 
  __in       SYSTEM_INFORMATION_CLASS SystemInformationClass,     
  __inout    PVOID SystemInformation, 
  __in       ULONG SystemInformationLength, 
  __out_opt  PULONG ReturnLength    
);

// Originals
PNT_QUERY_SYSTEM_INFORMATION OriginalFlashWindow   = 
  (PNT_QUERY_SYSTEM_INFORMATION)::GetProcAddress( 
  ::GetModuleHandle( L"user32" ), "FlashWindow" );

PNT_QUERY_SYSTEM_INFORMATION OriginalFlashWindowEx = 
  (PNT_QUERY_SYSTEM_INFORMATION)::GetProcAddress( 
  ::GetModuleHandle( L"user32" ), "FlashWindowEx" );

PNT_QUERY_SYSTEM_INFORMATION OriginalSetForegroundWindow = 
  (PNT_QUERY_SYSTEM_INFORMATION)::GetProcAddress( 
  ::GetModuleHandle( L"user32" ), "SetForegroundWindow" );

// Hooks
BOOL WINAPI
HookedFlashWindow(
  __in  HWND hWnd,
  __in  BOOL bInvert
  ) {
  return 0;
}

BOOL WINAPI 
HookedFlashWindowEx(
  __in  PFLASHWINFO pfwi
  ) {
  return 0;
}

BOOL WINAPI 
HookedSetForegroundWindow(
  __in  HWND hWnd
  ) {
  // Pretend window was brought to foreground
  return 1;
}


BOOL APIENTRY 
DllMain( 
  HMODULE hModule,
  DWORD   ul_reason_for_call,
  LPVOID  lpReserved
  ) {
  switch( ul_reason_for_call ) {
    case DLL_PROCESS_ATTACH:
      Mhook_SetHook( (PVOID*)&OriginalFlashWindow,         HookedFlashWindow );
      Mhook_SetHook( (PVOID*)&OriginalFlashWindowEx,       HookedFlashWindowEx );
      Mhook_SetHook( (PVOID*)&OriginalSetForegroundWindow, HookedSetForegroundWindow );
      break;

    case DLL_PROCESS_DETACH:
      Mhook_Unhook( (PVOID*)&OriginalFlashWindow );
      Mhook_Unhook( (PVOID*)&OriginalFlashWindowEx );
      Mhook_Unhook( (PVOID*)&OriginalSetForegroundWindow );
      break;
  }
  return TRUE;
}

फिर मेरे परीक्षणों से, यह बहुत अच्छा काम किया। डीएलएल को हर नई प्रक्रिया में लोड करने के हिस्से को छोड़कर। जैसा कि कोई कल्पना कर सकता है, यह बहुत हल्का नहीं लेना है। मैंने इस्तेमाल किया AppInit_DLLs फिर वापस दृष्टिकोण (जो बस पर्याप्त नहीं है)।

असल में, यह बहुत अच्छा काम करता है। लेकिन मुझे ऐसा कुछ लिखने का समय कभी नहीं मिला ढंग से नई प्रक्रियाओं में मेरी डीएलएल इंजेक्ट करता है। और इस समय निवेश किया गया समय काफी हद तक परेशान करता है, फोकस चोरी मुझे कारण बनती है।

डीएलएल इंजेक्शन समस्या के अलावा, एक फोकस-चोरी विधि भी है जिसे मैंने Google Code पर कार्यान्वयन में शामिल नहीं किया था। एक सहकर्मी वास्तव में कुछ अतिरिक्त शोध किया और उस विधि को कवर किया। एसओ पर समस्या पर चर्चा की गई थी: https://stackoverflow.com/questions/7430864/windows-7-prevent-application-from-losing-focus


45
2018-03-24 09:56



क्या आपको लगता है कि आपके इस समाधान को जावा पर पोर्ट किया जा सकता है? मैं खोज रहा हूं और प्रश्न पूछ रहा हूं लेकिन कुछ भी नहीं मिला। शायद मैं जावा में हुक लाइब्रेरी का उपयोग कर आयात कर सकता हूं jne? - Tomáš Zato
@ TomášZato: कोई विचार नहीं। मैं सक्रिय रूप से इस कोड का उपयोग नहीं कर रहा हूं। - Der Hochstapler
मैं इसे कम से कम C ++ के रूप में संकलित करने की कोशिश कर रहा हूं (और तब जावा से संकलित डीएलएल इंजेक्ट / निकालें)। लेकिन यह भी बहुत अच्छा नहीं जाता है। मैं टिप्पणियों में यहां चर्चा नहीं करना चाहता हूं, लेकिन अगर आप वास्तव में काम करने के लिए मेरी मदद कर सकते हैं, तो मैं बहुत खुश रहूंगा! मैंने चैट रूम बनाया, अगर मुझे यह काम मिल जाए तो मैं टिप्पणी पोस्ट करूंगा कि यहां ऐसा कैसे करें: chat.stackexchange.com/rooms/21637/... - Tomáš Zato


विंडोज 7 में, ForegroundLockTimeout रजिस्ट्री प्रविष्टि अब चेक नहीं की गई है, आप प्रक्रिया मॉनिटर के साथ इसे सत्यापित कर सकते हैं। वास्तव में, विंडोज 7 में वे आपको अग्रभूमि विंडो बदलने से मना कर देते हैं। जाओ और पढ़ें इसके विवरण के बारे में, यह विंडोज 2000 के बाद से भी रहा है।

हालाँकि, दस्तावेज बेकार है और वे एक-दूसरे का पीछा करते हैं और उसके आस-पास के तरीकों को ढूंढते हैं

तो, कुछ छोटी गाड़ी चल रही है SetForegroundWindow, या इसी तरह के एपीआई कार्यों ...

वास्तव में इसे सही तरीके से करने का एकमात्र तरीका एक छोटा सा एप्लीकेशन बनाना है जो समय-समय पर कॉल करता है LockSetForegroundWindow, हमारे बग्गी एपीआई फ़ंक्शन को किसी भी कॉल को वस्तुतः अक्षम कर रहा है।

यदि यह पर्याप्त नहीं है (एक और छोटी गाड़ी एपीआई कॉल?) आप आगे भी जा सकते हैं और कुछ कर सकते हैं एपीआई निगरानी यह देखने के लिए कि क्या हो रहा है, और फिर आप बस हर प्रक्रिया पर एपीआई कॉल हुक जिसके बाद आप से छुटकारा पा सकते हैं कोई भी कॉल जो अग्रभूमि को गड़बड़ कर देता है। हालांकि, विडंबना यह है कि यह माइक्रोसॉफ्ट द्वारा निराश है ...


23
2018-03-22 09:52



क्या किसी के पास विंडोज 7 में इसका पुन: उत्पन्न करने का मामला है? यह देखते हुए कि लोग इसके विपरीत अनुभव करते हैं (उदाहरण के लिए, मुझे अक्सर विंडोज़ को मेरी वर्तमान विंडो के पीछे छिपाने की मांग मिलती है) और मुझे यह देखने के लिए अभी तक विंडोज 7 में नहीं होना है, लेकिन यह एप्लिकेशन लिखने में काफी परेशान होगा लेकिन असमर्थ झसे आज़माओ। इसके अलावा, जैसा कि माइक्रोसॉफ्ट का कहना है कि यह अब विंडोज 7 के साथ नहीं होना चाहिए। सबसे अच्छे लोगों ने पाया कि यह केवल कीबोर्ड के फोकस को दुर्घटनाग्रस्त कर सकता है, यह एपीआई कॉल ठीक करेगी, लेकिन मुझे नहीं पता कि यह वास्तव में कैसे काम करता है यह जांचने के लिए .. । - Tom Wijsman
इंस्टॉलर (इनोसेटअप पर आधारित) अन्य प्रक्रियाओं और संभावित अन्य (छुपे हुए) सेटअप लॉन्च करता है, लेकिन मुझे नहीं पता कि वे किस सेटअप निर्माता पर आधारित हैं। - Daniel Beck♦
@TomWijsman: ओपन regedit, कुछ यादृच्छिक पाठ के लिए खोज जो नहीं मिलेगा। एक और ऐप में जाएं और टाइपिंग शुरू करें। जब खोज समाप्त हो जाती है, तो regedit फोकस चुरा लेगा। - endolith
@endolith: हालांकि Windows 8 का पूर्वावलोकन पूर्वावलोकन का उपयोग कर पुन: उत्पन्न नहीं किया गया है। आप कौन सा ओएस उपयोग कर रहे हैं? मेरे मामले में यह नीचे दिए गए एप्लिकेशन को हाइलाइट करता है लेकिन मेरी ब्राउज़िंग को बिल्कुल बाधित नहीं करता है ... - Tom Wijsman
हां, विन 7 प्रो 64-बिट। और ऊंचा प्रक्रियाओं के लिए फोकस चोरी भी बदतर है, क्योंकि जब वे नहीं चाहते हैं तो उन्हें दबाएं <Enter> पर कब्जा करें, और आप इसे अपने सिस्टम को गलती से नली करने के लिए कहें। कुछ भी नहीं होना चाहिए कभी फोकस चोरी करने में सक्षम हो। - endolith


इसमें एक विकल्प है TweakUI यह कौन करता है यह अपने सामान्य ऐप पर ध्यान केंद्रित करने के लिए नियोजित सॉफ्टवेयर चालकों के अधिकांश सामान्य चालकों को रोकता है।

हालांकि यह एक सतत हथियार युद्ध है, इसलिए मुझे नहीं पता कि यह सब कुछ के लिए काम करता है या नहीं।

अद्यतन करें: इसके अनुसार EndangeredMassa, ट्वीक्यूआई विंडोज 7 पर काम नहीं करता है।


18
2017-08-05 09:12



विंडोज 7 के साथ tweakui संगत है? - frankster
@frankster। कोई विचार नहीं, क्षमा करें, मुझे संदेह है कि शायद यह नहीं है। इसे डाउनलोड करें और इसे आजमाएं। अगर आप ऐसा करते हैं तो वापस रिपोर्ट करें हर कोई जानता है। - Simon P Stevens
यहां तक ​​कि रजिस्ट्री सेटिंग का उपयोग करना जो TweakUI सेट Win7 पर काम नहीं करता है। - EndangeredMassa
@EndangeredMassa कौन सी रजिस्ट्री कुंजी है? - n611x007
रजिस्ट्री कुंजी HKEY_CURRENT_USER \ नियंत्रण कक्ष \ डेस्कटॉप \ ForegroundLockTimeout (मिलीसेकंड में) है। और हाँ, यह अब विंडोज 7 में काम नहीं करता है। - foo


मेरा मानना ​​है कि कुछ भ्रम मौजूद हो सकते हैं, क्योंकि "फोकस चोरी" के दो तरीके हैं: (1) एक खिड़की अग्रभूमि में आ रही है, और (2) विंडो प्राप्त कीस्ट्रोक प्राप्त कर रही है।

यहां संदर्भित समस्या शायद दूसरा है, जहां ए खिड़कियां खुद को अग्रभूमि में लाकर फोकस का दावा करती हैं - उपयोगकर्ता के अनुरोध या अनुमति के बिना।

चर्चा XP और 7 के बीच यहां विभाजित होनी चाहिए।

विंडोज एक्स पी

एक्सपी में है एक रजिस्ट्री हैक जो XP को फोकस चोरी करने से अनुप्रयोगों को रोकने में विंडोज 7 के समान काम करता है:

  1. यहां जाने के लिए regedit का उपयोग करें: HKEY_CURRENT_USER\Control Panel\Desktop
  2. डबल-क्लिक करें ForegroundLockTimeout और हेक्साडेसिमल में अपना मान सेट करें 30d40
  3. ठीक दबाएं और regedit से बाहर निकलें।
  4. परिवर्तनों को प्रभावी होने के लिए अपने पीसी को रीबूट करें।

विंडोज 7

(नीचे दी गई चर्चा ज्यादातर एक्सपी पर भी लागू होती है।)

कृपया समझें कि ऐसा कोई तरीका नहीं है जिसमें विंडोज फोकस चोरी करने और कार्यात्मक बने रहने से अनुप्रयोगों को पूरी तरह अवरुद्ध कर सके। उदाहरण के लिए, यदि फ़ाइल-प्रतिलिपि के दौरान आपके एंटी-वायरस को संभावित खतरे का पता चला और यदि आप इस विंडो को अवरुद्ध कर चुके हैं, तो कार्रवाई करने के लिए आपको एक विंडो पॉप-अप करना चाहेंगे तो आप कभी समझ नहीं पाएंगे कि प्रतिलिपि क्यों समाप्त नहीं होती है।

विंडोज 7 में विंडोज़ के व्यवहार के लिए केवल एक ही संशोधन संभव है, जो है का उपयोग करने के लिए एमएस-विंडोज फोकस-निम्न-माउस रजिस्ट्री हैक्स, जहां फोकस और / या सक्रियण हमेशा कर्सर के नीचे खिड़कियों पर जाता है। पूरे डेस्कटॉप पर एप्लिकेशन को पॉप-अप करने से बचने के लिए देरी जोड़ा जा सकता है।
यह आलेख देखें: विंडोज 7 - माउस होवर विंडो सक्रिय बनाता है - सक्षम करें

अन्यथा, किसी को दोषी कार्यक्रम का पता लगाना और बेअसर करना चाहिए: यदि यह हमेशा एक ही एप्लीकेशन है जो फोकस प्राप्त कर रहा है, तो यह एप्लिकेशन इस पर ध्यान केंद्रित करने के लिए प्रोग्राम किया गया है और इसे रोकने से इसे कंप्यूटर से शुरू करने से अक्षम किया जा सकता है, या इस व्यवहार से बचने के लिए उस एप्लिकेशन द्वारा प्रदान की गई कुछ सेटिंग का उपयोग किया जा सकता है।

आप वीबीएस स्क्रिप्ट का उपयोग कर सकते हैं में शामिल वीबी कोड जो पहचानता है कि किसने फोकस किया है, जिसे लेखक पहचानने के लिए प्रयोग किया जाता था एक प्रिंटर सॉफ्टवेयर के लिए अपराधी "कॉल होम" अपडेटर के रूप में अपराधी।

एक और हताश उपाय जब सब कुछ विफल हो जाता है, और यदि आपने इस बुरी तरह से प्रोग्राम किए गए एप्लिकेशन की पहचान की है, इसे कम करना है और आशा है कि वह खुद को आगे नहीं लाएगा। सूचीबद्ध उत्पादों में से एक का उपयोग कर ट्रे को कम करने का एक मजबूत रूप ट्रे है बेस्ट फ्री एप्लिकेशन मिनीमाइज़र

निराशा के क्रम में अंतिम विचार एक उत्पाद का उपयोग करके अपने डेस्कटॉप को फ्रैक्चर करना है जैसे कि डेस्कटॉप या Dexpot, और डिफ़ॉल्ट रूप से किसी अन्य डेस्कटॉप में अपना काम करें।

[संपादित करें]

चूंकि माइक्रोसॉफ्ट ने आर्काइव गैलरी सेवानिवृत्त हो गया है, यहां उपर्युक्त वीबी कोड पुन: उत्पन्न हुआ है:

Declare Auto Function GetForegroundWindow Lib "user32.dll" () As Integer
Declare Auto Function GetWindowThreadProcessId Lib "user32.dll" (ByVal hwnd As Integer, ByRef procid As Integer) As UInteger

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.RichTextBox1.AppendText("Starting up at " & Now & vbCrLf)
    End Sub

    Private Sub GoingAway(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Deactivate, Me.LostFocus

        Dim hwnd As Integer = GetForegroundWindow()
        ' Note that process_id will be used as a ByRef argument
        ' and will be changed by GetWindowThreadProcessId
        Dim process_id As Integer = 1
        GetWindowThreadProcessId(hwnd, process_id)

        If (process_id <> 1) Then
            Dim appExePath As String = Process.GetProcessById(process_id).MainModule.FileName() 
            Me.RichTextBox1.AppendText("Lost focus at " & Now & " due to " & appExePath & vbCrLf)
        Else
            Me.RichTextBox1.AppendText("Lost focus due to unknown cause.")
        End If

    End Sub

14
2018-06-09 09:22



"अगर यह विंडो अवरुद्ध है तो आप कभी समझ नहीं पाएंगे कि प्रतिलिपि क्यों समाप्त नहीं होती है" यह सच नहीं है। सही व्यवहार उपयोगकर्ता को एक ब्लिंकिंग टास्क बार आइकन (या शायद एक गुब्बारा पॉप-अप या टोस्टर अधिसूचना या कुछ) के साथ सूचित करना है। उपयोगकर्ता को उनके कीस्ट्रोक को अवरुद्ध करने वाली विंडो के साथ बाधा डालने का अर्थ है कि वे एंटीवायरस सॉफ़्टवेयर को एक क्रिया या दूसरे को यादृच्छिक रूप से लेने के लिए कहते हैं। निश्चित रूप से चीजों को करने का एक अच्छा तरीका नहीं है। - endolith
"अगर यह विंडो अवरुद्ध है तो आप कभी समझ नहीं पाएंगे कि प्रतिलिपि क्यों समाप्त नहीं होती है" यह सच नहीं है। सही व्यवहार उपयोगकर्ता को एक ब्लिंकिंग कार्य बार आइकन के साथ सूचित करना है ...   ऐसे समय होते हैं जब मैंने किसी ऐसे प्रोग्राम में बटन या कुछ क्लिक किया जो एक नया मोडल संवाद बनने का कारण बनता है (उदा। खुली फाइल), लेकिन फिर संवाद बनने से पहले मैं एक और कार्यक्रम में स्विच करता हूं। नतीजतन, संवाद छिपा हुआ है और अन्य कार्यक्रम को स्विच नहीं किया जा सकता है और संवाद को बर्खास्त नहीं किया जा सकता है। न तो इसके टास्कबार बटन और न ही Alt-Tab काम करता है; केवल संवाद को मजबूर कर रहा है। - Synetech
@ सिनटेक: कभी-कभी गैर-मोर्चा संवाद का एकमात्र समाधान कार्य को मारना है। विंडोज़ में फोकस एल्गोरिदम वास्तव में लुसी हैं। - harrymc
@harrymc, मुझे कभी भी ऐप्स में से किसी एक को मारने का सहारा लेना नहीं है। मैं बस अपना खिड़की-छेड़छाड़ कार्यक्रम चलाता हूं (WinSpy ++ चाल सिर्फ महान है) और खिड़की को सामने छिपाएं, फिर मैं फंसे हुए संवाद को खारिज कर सकता हूं, फिर छिपी हुई खिड़की को फिर से दिखा सकता हूं। यह सुविधाजनक नहीं है, लेकिन यह प्रक्रियाओं में से किसी एक को मारने से बेहतर है। - Synetech
@harrymc, वास्तव में नहीं; एक ऐप को मारना और सामान खोना सिर्फ अधिक भाप बनाता है, और यदि यह एक मोडल डायलॉग है (जो पैरेंट विंडो को लॉक करता है और इसमें कोई टास्कबार बटन नहीं है), तो यह दिखाई नहीं देगा Alt+Tab सूची, और, मेरे अनुभव में, एक खिड़की जिसमें एक मोडल संवाद खुला रहता है हमेशा (कभी नहीं?) के साथ मोडल संवाद दिखाता है Alt+Tab, विशेष रूप से यदि संवाद कभी फोकस करने के लिए कोई बदलाव नहीं था। :-| - Synetech


Ghacks एक है संभावित समाधान:

यह दिन में कई बार होता है   कुछ अनुप्रयोगों का ध्यान चुरा लेते हैं   पॉप अप करके सक्रिय खिड़की। इस   कई कारणों से हो सकता है,   जब मैं फाइलें या स्थानांतरण निकालता हूं   उदाहरण के लिए खत्म होता है। ऐसा नहीं होता   जब यह ज्यादातर समय मायने रखता है   होता है लेकिन कभी-कभी मैं एक लिख रहा हूं   लेख और इसका मतलब यह नहीं है   मुझे फिर से कुछ शब्द टाइप करना होगा लेकिन   यह भी कि मैं एकाग्रता खो दिया और   फोकस हासिल करने के लिए क्लिक करना होगा।

प्रो समीक्षाकर्ता वेबसाइट पर एक टिप है   इसे होने से कैसे रोकें।   फोकस को रोकने का सबसे आसान तरीका   चोरी करना ट्विक यूआई का उपयोग करना है   एक सेटिंग जिसे "रोकें" कहा जाता है   फोकस चोरी से आवेदन "।   इस विकल्प को जांचना इससे रोकता है   अन्य अनुप्रयोग अचानक पॉप अप और   आप जिस खिड़की के हैं, उसका ध्यान चुराएं   वर्तमान में काम कर रहा है।

यह केवल तभी काम करता है जब आवेदन   पहले कम किया गया है। के बजाय   फोकस चोरी करना यह एक फ्लैश होगा   कई बार परिभाषित किया जा सकता है   उसी मेनू में ट्विक यूआई। अगर तुम   आप ट्विक यूआई का उपयोग नहीं करना चाहते हैं   विंडोज़ में सेटिंग बदलें   रजिस्ट्री।

रजिस्ट्री कुंजी पर नेविगेट करें   HKEY_CURRENT_USER> नियंत्रण कक्ष>   डेस्कटॉप और बदलें   ForegroundLockTimeout मूल्य 30d40 करने के लिए   (हेक्साडेसिमल) या 200000 (दशमलव)।   कुंजी ForeGroundFlashCount परिभाषित करता है   चेतावनी के लिए खिड़की की चमक की मात्रा   उपयोगकर्ता जहां 0 असीमित का मतलब है।


2
2017-08-05 09:13



यह एक्सपी के बाद किसी भी ओएस पर काम नहीं करता है। वह रजिस्ट्री मान पहले से ही सेट है (डिफ़ॉल्ट रूप से, मुझे विश्वास है) और वैसे भी काम नहीं करता है। - EndangeredMassa
बस दूसरी बात यह है कि मैं विंडोज 7 (64-बिट) पर हूं, फोकस-चोरी का अनुभव कर रहा हूं (वीएस 2012 आखिरकार सक्रिय, एफआर उदाहरण), और उपरोक्त रजिस्ट्री-सुझाव पहले से ही जगह में है। इस उत्तर में तकनीकी पुष्टि: superuser.com/a/403554/972 - Michael Paulukonis