2010-08-05 28 views
7

वहाँ अगर उपयोगकर्ता एक दूरस्थ डेस्कटॉप सत्र के अंदर चल रहा है एक ब्राउज़र के भीतर (उदाहरण के लिए जावास्क्रिप्ट) जांच के लिए एक तरीके है?ब्राउज़र से, यदि उपयोगकर्ता रिमोट डेस्कटॉप सत्र में चल रहा है, तो कैसे पता लगाया जाए?


उपयोगकर्ता एक दूरस्थ डेस्कटॉप के अंदर अपने ब्राउज़र (अर्थात टर्मिनल सर्विसेज) चल रहा है, मैं वेब साइट पर एनिमेशन अक्षम करना चाहते हैं।

यदि यह एक देशी आवेदन थे, के रूप में एक वेब साइट के लिए विरोध किया, मैं इस जाँच का उपयोग कर प्रदर्शन कर सकता है:

//Native code 
isRemoteSession = GetSystemMetrics(SM_REMOTESESSION); 

या

//Managed Code: 
isRemoteSession = System.Windows.Forms.SystemInformation.TerminalServerSession; 

वहां भी इसी तरह जाँच लें कि क्या किया जा सकता है ब्राउज़र के अंदर?

नोट: शायद How can you get the terminal service client machine name from javascript?

+1

+1 क्योंकि यह कई साइटों के लिए एक महान उपयोगिता वृद्धि होगी। –

उत्तर

1

में कुछ: इस चर्चा के लिए मान लें कि ब्राउज़र के बारे में हम बात कर रहे हैं इंटरनेट एक्सप्लोरर     8.


अद्यतन एक है शायद आप SESSIONNAME पर्यावरण चर को पढ़ सकते हैं? कंसोल सत्र के लिए इसे समझना चाहिए और आरडीपी सत्र के लिए यह आरडीपी-टीसीपी होना चाहिए जिसके बाद एक संख्या होनी चाहिए।

+0

ब्राउज़र में क्लाइंट जावास्क्रिप्ट के साथ पर्यावरण चर पढ़ना? मुझे शक है। – Joey

0

मैं यह सोचते कर रहा हूँ आप एक विशिष्ट कंपनी टर्मिनल सर्वर, नहीं किसी भी टर्मिनल सर्वर के बारे में बात कर रहे हैं। आप टीएस के विशिष्ट आईपी पते पर एनिमेशन की सेवा नहीं कर सके।

+0

नहीं, कोई टर्मिनल सर्वर। यदि आप काम पर से अपनी होम मशीन पर आरडीपी करते हैं, और मेरे वेब पेज ब्राउज़ करते हैं: एनिमेशन नहीं खेलना चाहिए। –

1

आप शायद एक ActiveX या BHO (जैसे assign a property to the window object in BHO) यदि आप IE का उपयोग के माध्यम से पता लगाने के कोड को बेनकाब कर सकते हैं।

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

आप हमेशा अपने वेब साइट के एक कम बैंडविड्थ संस्करण की पेशकश और अगर वीडियो प्लेबैक संतोषजनक नहीं है हिदायत उपयोगकर्ता वेब साइट के बजाय नियमित वेब साइट चुन सकते हैं।

एक टर्मिनल सेवा-अवगत ग्राफिक्स एप्लिकेशन लिखित रूप में युक्तियों के लिए, graphic effects consideration चेक करें, और general performance guidelines

+1

"उपयोगकर्ता को कम बैंडविड्थ संस्करण चुनने दें" सही उत्तर है। –

+0

बेन, वास्तव में ऐसा नहीं है कि आपको चुनने से पहले पृष्ठ को लोड करने की आवश्यकता हो। इसके अलावा, आवश्यक बैंडविड्थ वास्तव में आरडीपी पर समस्या नहीं है, यह एनिमेशन, बड़ी छवियां इत्यादि हैं क्योंकि वे आरडीपी के माध्यम से साइट को नामुमकिन बनाने के लिए साइट बनाते हैं (क्योंकि डिस्प्ले अपडेट इंटरैक्शन में हस्तक्षेप करते हैं)। – Joey

9

मेरे समाधान न्यूनतम और color media feature का अधिकतम मान के लिए सीएसएस @media प्रश्नों का उपयोग करने के लिए है। प्रयोग के आधार पर, आरडीपी में आपके सामान्य डेस्कटॉप के प्रति रंग 8 बिट्स की बजाय प्रति रंग 5 बिट्स लगता है।

यह समाधान है क्योंकि आप लोग हैं, जो आरडीपी पर नहीं हैं से झूठे सकारात्मक भी बहुत कुछ मिलेगा, लेकिन सिर्फ कम रंग गहराई को प्रदर्शित करता है के लिए होती हैं, जाहिर है, सही नहीं है,। हालांकि:

  • यदि आप कॉरपोरेट इंट्रानेट जैसे अपेक्षाकृत नियंत्रित वातावरण में हैं, तो आप अधिक आत्मविश्वास महसूस कर सकते हैं कि "कम रंग गहराई" = "आरडीपी"।
  • वेब पेज पर आरडीपी के लिए समायोजन की आवश्यकता वाले कई दृश्य तत्वों को समायोजित करने की आवश्यकता है क्योंकि निम्न रंग गहराई (ग्रेडियंट्स, फीड आउट, एनीमेशन इत्यादि) को समायोजित करने की आवश्यकता है।), और इसलिए यह वास्तव में आरडीपी प्रति से की बजाय रंग गहराई के परीक्षण के लिए समझ में आता है।

यहां एक उदाहरण है जो फ़ायरफ़ॉक्स और क्रोम के हाल के संस्करण में मेरे लिए काम करता है। नीचे स्क्रीनशॉट देखें।

<!DOCTYPE html> 
<html> 
    <head> 
     <title>Test RDP detection</title> 
     <style type="text/css"> 
      @media all { li.color { display: none; } } 
      @media all and (min-color: 1) { li.color.color-depth-1 { display: block; } } 
      @media all and (min-color: 2) { li.color.color-depth-2 { display: block; } } 
      @media all and (min-color: 3) { li.color.color-depth-3 { display: block; } } 
      @media all and (min-color: 4) { li.color.color-depth-4 { display: block; } } 
      @media all and (min-color: 5) { li.color.color-depth-5 { display: block; } } 
      @media all and (min-color: 6) { li.color.color-depth-6 { display: block; } } 
      @media all and (min-color: 7) { li.color.color-depth-7 { display: block; } } 
      @media all and (min-color: 8) { li.color.color-depth-8 { display: block; } } 

      /* 5 bits per color seems to be the max for RDP */ 
      @media all and (max-color: 5) { 
       .not-rdp { display: none; } 
      } 
      @media all and (min-color: 6) { 
       .rdp-only { display: none; } 
      } 
     </style> 
    </head> 
    <body> 
     <p>This page uses CSS <tt>@media</tt> queries to detect whether you 
      are viewing it over RDP&mdash;heuristically, by looking at the 
      color depth of your display.</p> 

     <ul> 
      <li class="color color-depth-1">Your display is not monochrome!</li> 
      <li class="color color-depth-2">Your display has at least 2 bits per color.</li> 
      <li class="color color-depth-3">Your display has at least 3 bits per color.</li> 
      <li class="color color-depth-4">Your display has at least 4 bits per color.</li> 
      <li class="color color-depth-5">Your display has at least 5 bits per color.</li> 
      <li class="color color-depth-6">Your display has at least 6 bits per color.</li> 
      <li class="color color-depth-7">Your display has at least 7 bits per color.</li> 
      <li class="color color-depth-8">Your display has at least 8 bits per color.</li> 
     </ul> 

     <p>You are <span class="not-rdp">not</span> using RDP.</p> 
     <p class="rdp-only">This is only visible over RDP.</p> 
    </body> 
</html> 

screenshot showing test page with and without RDP

अभी तक इन पंक्तियों के साथ एक और दृष्टिकोण जावास्क्रिप्ट का उपयोग करने के screen.colorDepth चर के मूल्य की जांच करने के लिए है।

+1

यह बहुत चालाक है! –

+2

ध्यान दें कि आरडीपी क्लाइंट में रंग गहराई विन्यास योग्य है: उन्नत/प्रदर्शन/रंग ड्रॉपडाउन देखें। –

+1

लोगों ने जल्दी से परीक्षण करने के लिए बस इसके लिए एक पहेली बनाई: https://jsfiddle.net/7cqqpeqe/ - हालांकि किसी विधि के रूप में काम नहीं कर रहा है। – PhonicUK

1

यह आपके आवेदन द्वारा नहीं किया जाना चाहिए या तय नहीं किया जाना चाहिए। आरडीपी क्लाइंट (एमएस आरडीसी की तरह) पर, उपयोगकर्ता एनीमेशन इत्यादि को अक्षम करना चुन सकता है। उपयोगकर्ता इन्हें सर्वर साइड (टर्मिनल सर्वर या आरडीपी होस्ट) पर भी अक्षम कर सकता है

+0

आरडीपी कनेक्शन प्रदर्शन विकल्प (जैसे एनिमेशन, वॉलपेपर इत्यादि) इन- ब्राउज़र अनुप्रयोग, और ब्राउज़र आरडीपी सेटिंग्स के बावजूद सीएसएस/जावास्क्रिप्ट एनिमेशन प्रस्तुत करेंगे। जब तक कोई एपीआई यह देखने के लिए खुलासा नहीं होता है कि वेब-एप्लिकेशन में एनिमेशन और अन्य सुविधाओं को अक्षम किया जाना चाहिए, तो हम पर्यावरण को पहचानने के लिए छोटी सी चीजें कर सकते हैं। – Dai

संबंधित मुद्दे

 संबंधित मुद्दे