2011-10-24 21 views
14

मैं कैसे मैं हमेशा सही ट्रे में दिखाई दे सकता है एक NotifyIcon सेट कर सकते हैं: http://screensnapr.com/v/qKWHe2.pngसेट ट्रे आइकन हमेशा दिखाने के लिए

क्योंकि यह इस पर बदलाव निष्क्रिय आइकन विंडो में: http://screensnapr.com/v/jjtuK0.png

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

मुझे पता है कि कोड के माध्यम से ऐसा करना संभव है क्योंकि कॉमोडो जैसे अन्य अनुप्रयोगों ने मुझे ड्रैग किए बिना आइकन को छोड़ दिया है। टास्कबार मुझे पता चला कि आप इस फ़ोल्डर में एक शॉर्टकट सेट है कि के लिए एक शॉर्टकट pining के लिए:

C:\Users\Username\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar 

वहाँ ट्रे के लिए कुछ इसी तरह है? या क्या कोई विकल्प है जिसे मैं कोड के अनुसार उपयोग कर सकता हूं।

+0

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

+0

हां, और आम तौर पर मैं इसे उपयोगकर्ता पर मजबूर करने की कोशिश नहीं करता। लेकिन यह महत्वपूर्ण है कि वे एक स्क्रीनशॉट बनाएं जो निष्क्रिय आइकन विंडो द्वारा कवर न हो। – Drake

+0

फिर वे "कस्टमाइज़ करें ..." में जा सकते हैं और कह सकते हैं कि वे चाहते हैं कि वह आइकन हर समय दिखाई दे। –

उत्तर

7
नहीं

कोड से लागू हो, बस यह हमेशा दिखाने

http://blogs.msdn.com/b/oldnewthing/archive/2010/12/15/10105142.aspx

बनाने के लिए उपयोगकर्ताओं को निर्देशित लेकिन अगर आप एक रजिस्ट्री प्रविष्टि

HKEY_Current_User\Software\Microsoft\Windows\CurrentVersion\Explorer\TrayNotify 

जांच this

+5

फिर से, यह सच नहीं है क्योंकि कॉमोडो जैसे अनुप्रयोग हैं जो मुझे अपने तत्काल ट्रे क्षेत्र में डाल देते हैं, बिना विशेष रूप से इसे वहां डालते हैं ताकि आप तर्क न दें कि यह असंभव है। आप यह नहीं जानते हैं कि यह एक और मामला है लेकिन यह दावा न करें कि आम गलत धारणाएं – Drake

+0

हैं तो .. सभी सॉफ्टवेयर विक्रेता इसे करेंगे और उपयोगकर्ता को अपने ट्रे आइकन देखने के लिए मजबूर करेंगे! –

+0

@ ड्रेक: मेरा मानना ​​है कि गलत धारणा आपका है। क्या आप "कौन से आइकन दिखाए जाते हैं" एल्गोरिदम के बारे में हर विवरण जानते हैं? यदि आप नहीं करते हैं, तो आप कैसे सुनिश्चित कर सकते हैं कि यह "हमेशा दिखाया गया" है, खासकर जब साहित्य और सामान्य ज्ञान इस से असहमत है? – Jon

5
संशोधित करके यह हैक करने का प्रबंधन कर सकते

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

इस कारण से, there is no programmatic interface जो आपको हमेशा एक आइकन बनाने के लिए अनुमति देता है। यहां तक ​​कि no interface to ask if your icon is visible or not भी है।

अपने जूते में मैं बस एक हॉटकी सेट अप करता हूं जो उपयोगकर्ता को आइकन के साथ शामिल किए बिना स्क्रीनशॉट लेने की अनुमति देता है (सभी स्क्रीन कैप्चर प्रोग्राम ऐसा करते हैं)।

यदि उपयोगकर्ता स्क्रीनशॉट लेने से पहले सही क्लिक करना पसंद करता है, तो वे उपरोक्त वर्णित टास्कबार गुणों के माध्यम से हमेशा अपनी वरीयता बदल सकते हैं।

+1

यह एक प्रकार का एप्लिकेशन नहीं है जिसके लिए ग्लोबल हॉटकी की आवश्यकता होती है, क्योंकि जब वे स्वेच्छा से परीक्षण के लिए त्रुटि रिपोर्ट के साथ स्क्रीन शॉट प्रदान करना चाहते हैं। इसके लिए एक विशिष्ट हॉटकी संयोजन को याद या छोड़ना, ट्रे में दिखने से ज्यादा घुसपैठ कर रहा है। – Drake

+0

@ ड्रेक: मैं नहीं कह रहा हूं * उन्हें ऐसा करने के लिए मजबूर करें *। मैं कह रहा हूं "उन्हें विकल्प दें, और यह उन लोगों के लिए आपकी वर्तमान समस्या को भी हल करेगा जो इसे लेते हैं"। – Jon

+2

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

0

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

7

मैं ऑनलाइन खोज रहा था और वास्तव में यह यादृच्छिक रूप से पाया।

लंबी कहानी लघु, पावरशेल (स्क्रिप्ट प्रदान की गई) और जीपीओ का संयोजन। अपनी पसंद के नाम का उपयोग कर एक PS1 फाइल के रूप में

param(
    [Parameter(Mandatory=$true,HelpMessage='The name of the program')][string]$ProgramName, 
    [Parameter(Mandatory=$true,HelpMessage='The setting (2 = show icon and notifications 1 = hide icon and notifications, 0 = only show notifications')] 
     [ValidateScript({if ($_ -lt 0 -or $_ -gt 2) { throw 'Invalid setting' } return $true})] 
     [Int16]$Setting 
    ) 

$encText = New-Object System.Text.UTF8Encoding 
[byte[]] $bytRegKey = @() 
$strRegKey = "" 
$bytRegKey = $(Get-ItemProperty $(Get-Item 'HKCU:\Software\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\TrayNotify').PSPath).IconStreams 
for($x=0; $x -le $bytRegKey.Count; $x++) 
{ 
    $tempString = [Convert]::ToString($bytRegKey[$x], 16) 
    switch($tempString.Length) 
    { 
     0 {$strRegKey += "00"} 
     1 {$strRegKey += "0" + $tempString} 
     2 {$strRegKey += $tempString} 
    } 
} 
[byte[]] $bytTempAppPath = @() 
$bytTempAppPath = $encText.GetBytes($ProgramName) 
[byte[]] $bytAppPath = @() 
$strAppPath = "" 

Function Rot13($byteToRot) 
{ 
    if($byteToRot -gt 64 -and $byteToRot -lt 91) 
    { 
     $bytRot = $($($byteToRot - 64 + 13) % 26 + 64) 
     return $bytRot 
    } 
    elseif($byteToRot -gt 96 -and $byteToRot -lt 123) 
    { 
     $bytRot = $($($byteToRot - 96 + 13) % 26 + 96) 
     return $bytRot 
    } 
    else 
    { 
     return $byteToRot 
    } 
} 

for($x = 0; $x -lt $bytTempAppPath.Count * 2; $x++) 
{ 
    If($x % 2 -eq 0) 
    { 
     $curbyte = $bytTempAppPath[$([Int]($x/2))] 
      $bytAppPath += Rot13($curbyte) 

    } 
    Else 
    { 
     $bytAppPath += 0 
    } 
} 

for($x=0; $x -lt $bytAppPath.Count; $x++) 
{ 
    $tempString = [Convert]::ToString($bytAppPath[$x], 16) 
    switch($tempString.Length) 
    { 
     0 {$strAppPath += "00"} 
     1 {$strAppPath += "0" + $tempString} 
     2 {$strAppPath += $tempString} 
    } 
} 
if(-not $strRegKey.Contains($strAppPath)) 
{ 
    Write-Host Program not found. Programs are case sensitive. 
    break 
} 

[byte[]] $header = @() 
$items = @{} 
for($x=0; $x -lt 20; $x++) 
{ 
    $header += $bytRegKey[$x] 
} 

for($x=0; $x -lt $(($bytRegKey.Count-20)/1640); $x++) 
{ 
    [byte[]] [email protected]() 
    $startingByte = 20 + ($x*1640) 
    $item += $bytRegKey[$($startingByte)..$($startingByte+1639)] 
    $items.Add($startingByte.ToString(), $item) 
} 

foreach($key in $items.Keys) 
{ 
$item = $items[$key] 
    $strItem = "" 
    $tempString = "" 

    for($x=0; $x -le $item.Count; $x++) 
    { 
     $tempString = [Convert]::ToString($item[$x], 16) 
     switch($tempString.Length) 
     { 
      0 {$strItem += "00"} 
      1 {$strItem += "0" + $tempString} 
      2 {$strItem += $tempString} 
     } 
    } 
    if($strItem.Contains($strAppPath)) 
    { 
     Write-Host Item Found with $ProgramName in item starting with byte $key 
      $bytRegKey[$([Convert]::ToInt32($key)+528)] = $setting 
      Set-ItemProperty $($(Get-Item 'HKCU:\Software\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\TrayNotify').PSPath) -name IconStreams -value $bytRegKey 
    } 
} 

यह सहेजें:

http://4sysops.com/archives/forcing-notification-area-icons-to-always-show-in-windows-7-or-windows-8/

लंबी कहानी, एक PowerShell स्क्रिप्ट निम्नलिखित युक्त पैदा करते हैं।

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

कॉपी स्क्रिप्ट तुम सिर्फ Explorer विंडो कि बस पास खोला और फिर खिड़की से बाहर में बनाया।

लॉगिन स्क्रिप्ट गुण विंडो में, स्क्रिप्ट नाम में एक नई पावरशेल स्क्रिप्ट जोड़ें, आपके द्वारा उपयोग की जाने वाली स्क्रिप्ट का नाम दर्ज करें (उदाहरण: NotifyIcon.ps1), और फिर पैरामीटर में, प्रोग्राम नाम दर्ज करें (केस ! संवेदी) की स्थापना के बाद उपयोग करने के लिए:

0 = केवल शो नोटिफिकेशन आइकन 1 = छिपाने और सूचनाएं 2 = शो आइकन और नोटिफिकेशन < --- एक आप की जरूरत

उदाहरण के लिए, यदि आप RealVNC की जरूरत सर्वर हमेशा प्रकट करने के लिए, आप लिखेंगे:

winvnc4.exe 2

paramenters

आप इस तरह के एक रन संवाद बॉक्स और टाइपिंग msconfig खोलने और स्टार्टअप प्रोग्राम को देख, मैन्युअल रूप से नेविगेट स्थापना निर्देशिका के लिए सी के रूप में एक जोड़े को अलग अलग तरीकों से, में निष्पादन का नाम पता कर सकते हैं के रूप में

: \ प्रोग्राम फ़ाइलें {आपका प्रोग्राम}, या कार्य प्रबंधक में चल रही प्रक्रियाओं को देखकर वांछित प्रोग्राम से मिलान करने का प्रयास कर रहा है। 10 में से 9 बार इससे सफलता मिलेगी।

इस काम के लिए, उपयोगकर्ता को पहले एप्लिकेशन चलाया जाना चाहिए था, और उसके बाद ठीक से लॉग आउट होना चाहिए, ताकि explorer.exe को अद्यतन सूचना क्षेत्र इतिहास रजिस्ट्री में लिखने का मौका मिले। बाद के लॉगिन पर, स्क्रिप्ट को सफलतापूर्वक इतिहास में प्रोग्राम का पता लगाना चाहिए, और हमेशा दिखाने के लिए अपनी सेटिंग अपडेट करना चाहिए।

आप पावरशेल प्रॉम्प्ट से मैन्युअल रूप से स्क्रिप्ट को चलाने का प्रयास भी कर सकते हैं, लेकिन आपको इसे चलाने से पहले explorer.exe ('taskkill/f/im explorer.exe') को मारना होगा, अन्यथा एक्सप्लोरर आपके अपडेट को नहीं देख पाएगा , और इसे छोड़ने पर इसे ओवरराइट कर देगा।

मैं इस प्रक्रिया के लिए कोई क्रेडिट ले लो। मैंने इसे नहीं लिखा, मैंने अभी पाया। लिपि के लिए क्रेडिट मीका रोवलैंड जाता है। जीपीओ प्रक्रिया के लिए क्रेडिट ज्योफ केंडल

पर्याप्त नहीं प्रतिष्ठा के लिए चला जाता है, मूल लेखकों से जोड़ने के लिए शीर्ष पर एक के अपवाद के साथ।

+1

@MatthewR। धन्यवाद, संपादित। – jparnell8839

0

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

हो सकता है कि अगर माइक्रोसॉफ्ट ने अधिसूचना क्षेत्र आइकन (टास्कबार की तरह) पर एक सही क्लिक पिन/अनपिन विकल्प की पेशकश की हो, या प्रोग्राम की आसानी से ऐसी सुविधा प्रदान करने की क्षमता के लिए हम इस चर्चा को नहीं करेंगे।

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