वर्तमान विंडोज 8 डेस्कटॉप पृष्ठभूमि खोजें


2

जब मेरे पास विंडोज 7 था, मैंने उपयोग किया यह धागा एक कार्यक्षमता जोड़ने के लिए जो मुझे डेस्कटॉप पर राइट क्लिक करता है और वर्तमान में उपयोग की जा रही पृष्ठभूमि को खोजने के लिए क्लिक करता है। हालाँकि, विंडोज 8.1 को अपडेट करने के बाद से मैं एक ही तकनीक का उपयोग करके समान कार्यक्षमता को जोड़ने में सक्षम नहीं हूं।

मैंने regedit में नेविगेट किया है HKEY_CURRENT_USER\Control Panel\Desktop\Wallpaper, जो मुझे निम्नलिखित मार्ग देता है: C:\Users\UserName\AppData\Roaming\Microsoft\Windows\Themes\TranscodedWallpaper। जब मैंने यह रास्ता FileExplorer में डाला तो उसने मुझे अपने एक छवि संपादक / दर्शकों का उपयोग करके छवि को खोलने के लिए कहा। जब मैं करता हूं, यह सही छवि है, लेकिन यह वह नहीं है जिसकी मुझे तलाश है। मुझे वास्तविक छवि की फ़ाइलपथ की तलाश है ताकि मैं मूल फ़ोटो को हटा सकूं। TranscodedWallpaper प्रत्येक पृष्ठभूमि परिवर्तन के साथ अद्यतन करने के लिए लगता है।

मैं एक तथ्य के लिए जानता हूं कि सभी पृष्ठभूमि में पाए जाते हैं D:\Users\MyUser\Pictures\Backgrounds (विंडोज सी ड्राइव पर है), लेकिन लगभग 1.4k चित्र हैं इसलिए हर बार उनके माध्यम से देखने पर छवि के लिए बहुत परेशानी होगी।

तो, मैं इस कार्यक्षमता को अपने सेटअप में वापस कैसे जोड़ सकता हूं? बहुत कम से कम, मैं वर्तमान पृष्ठभूमि छवि का फ़ाइल पथ कैसे प्राप्त कर सकता हूं?

जवाबों:


2

हालाँकि यह अब एक पुराना प्रश्न है, मैंने सोचा कि यह अभी भी निम्नलिखित पोस्ट बनाने के लायक है। हाल ही में जब तक मैं विंडोज 7 नहीं चला रहा था और कुछ साल पहले एक अभ्यास के रूप में एक सरल प्रोग्राम लिखा था जो कि सिस्टम ट्रे आइकन के साथ चल रहा है ताकि वर्तमान डेस्कटॉप पृष्ठभूमि छवि के लिए रास्ता खोजा जा सके। जब मैंने विंडोज 10 में अपग्रेड किया तो यह निश्चित रूप से काम नहीं कर रहा था, इसलिए मैंने रमेश श्रीनिवासन के ब्लॉग और जॉन डेंजरब्रुक की लिपियों को देखा और पाया। नतीजतन, मैंने विंडोज 8 और उससे आगे के लिए काम करने के लिए और मल्टी-मॉनिटर वातावरण के लिए अलग-अलग छवियों के लिए काम करने के लिए अपने कार्यक्रम को अपडेट किया है, जबकि विंडोज 7 के साथ पीछे की संगतता भी बनाए रखी है।

मैं इस कार्यक्रम को व्यापक समुदाय के साथ साझा कर रहा हूँ अगर किसी को सिस्टम ट्रे टूल के रूप में होने का विचार पसंद आता है। यह C # में लिखा गया है और इसके लिए .Net फ्रेमवर्क v4 की आवश्यकता है, और x86 (32-बिट) और x64 (64-बिट) वातावरणों के लिए अलग .zip फ़ाइलों के रूप में उपलब्ध है। कोई इंस्टॉलर नहीं है, यह एक रीडमी फ़ाइल के साथ एक साधारण निष्पादन योग्य है। व्यक्तिगत रूप से मैं इसे स्वचालित रूप से HKEY_CURRENT_USER \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Run कुंजी का उपयोग करके प्रारंभ करता हूं, लेकिन मैं आपके लिए वह विवरण छोड़ देता हूं। अधिक विवरण readme में हैं।

ज़िप फ़ाइलें यहाँ स्थित हैं https://onedrive.live.com/redir?resid=B2EA2CF6592EC937!839&authkey=!AMNZgrGbt9raflQ&ithint=folder%2czip । (पुराना छोटा लिंक http://1drv.ms/1OoQRti प्रतीत होता है कि कोई और काम नहीं करता है - क्या Microsoft ने OneDrive फ़ोल्डरों के लिए लघु लिंक उत्पन्न करने की क्षमता को हटा दिया है?)


क्या आपके पास कोई विचार है कि इसे अलग-अलग पृष्ठभूमि के साथ कई मॉनिटरों को संभालने के लिए कैसे संशोधित किया जा सकता है?
Zach Saucier

1
कार्यक्रम को कई मॉनिटरों पर विभिन्न पृष्ठभूमि के लिए काम करना चाहिए। हालाँकि, 63 अक्षरों के टूलटिप पाठ की लंबाई पर प्रतिबंध है इसलिए मैंने टूलटिप में केवल एक छवि पथ प्रदर्शित करने के लिए चुना। हालाँकि यदि आप सिस्टम ट्रे आइकन पर राइट क्लिक करते हैं, तो आपको पॉपअप मेनू में प्रदर्शित अपने प्रत्येक मॉनिटर के लिए छवि पथ देखना चाहिए और इनमें से किसी एक का चयन करने की क्षमता होनी चाहिए जैसे कि अन्य मेनू आइटम चयनित छवि पथ पर काम करते हैं। यह सही नहीं है, लेकिन मुझे यह आसान लगता है।
Dunc

3

मुझे एक वेबसाइट मिली है जिसमें एक स्क्रिप्ट है जिसे आप अपनी मशीन पर डाउनलोड और चला सकते हैं, यह आपको आपकी पृष्ठभूमि पर चलने वाली छवि के स्थान और नाम के लिए एक पॉपअप देता है। कारण यह है कि आप अपने विंडोज 7 को काम करने के लिए नहीं पा सकते हैं, क्योंकि जानकारी विंडोज 8 में रजिस्ट्री में अलग तरीके से संग्रहीत है। विंडोज 7 में यह सादे पाठ (सादे अंग्रेजी) में है और विंडोज 8 में यह कच्चे बाइनरी में संग्रहीत है

01010100 01101000 01100101 00100000 01100001 01101110 01110011 01110111 01100101
01110010 01110011 00100000 01110100 01101111 00100000 01100001 01101100 01101100
00100000 01101111 01100110 00100000 01111001 01101111 01110101 01110010 00100000
01110001 01110101 01100101 01110011 01110100 01101001 01101111 01101110 01110011
00100000 01100001 01110010 01100101 00100000 01101111 01101110 00100000 01000111
01101111 01101111 01100111 01101100 01100101 00101110 01100011 01101111 01101101
00101110 00101110 00101110

आप स्क्रिप्ट पा सकते हैं यहाँ


1

सम्बन्ध कि रीव्स पोस्ट एक बनाने के लिए नेतृत्व किया .ps1 साथ फाइल करें यह स्क्रिप्ट इसके अंदर। विंडोज पावर शेल में इस नई फ़ाइल को चलाने से बैकग्राउंड इमेज की ओर इशारा करते हुए फाइल एक्सप्लोरर खुल गया। मुझे बदलना पड़ा ExecutionPolicy PS .ps1 फ़ाइलों को चलाने के लिए अनुमति देने के लिए।

हालाँकि, हर बार पीएस खोलना और फिर चलने की आज्ञा मेरे लिए एक परेशानी से अधिक थी, इसलिए मैं इस एसओ पोस्ट को पढ़ें और मेरे डेस्कटॉप पर एक शॉर्टकट बनाया जिसका एक लक्ष्य था

powershell.exe -command "& 'C:\A path to the new ps1 file\MyScript.ps1'"

यहां लिपि की एक कॉपी का उपयोग किया गया है .ps1 मामले में लिंक नीचे जाता है:

Try 
{
  # Get script name
  $ScriptName=(Get-Item $PSCommandPath).Name

  # Load Windows Forms and initialize visual styles
  # Not needed for Windows 8. But I still don't know whether it is running on Windows 8.
  [void][System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
  [System.Windows.Forms.Application]::EnableVisualStyles()

  # Check Windows verison
  $vers=[System.Environment]::OSVersion.Version
  If (!(($vers.Major -eq 6) -and ($vers.Minor -ge 2) -and ($vers.Minor -le 3))) {
    $result=[System.Windows.Forms.MessageBox]::Show("This operating system is not supported. This script only supports Windows NT 6.2 or 6.3. (i.e. Windows 8, Windows Server 2012, Windows 8.1 or Windows Server 2012 R2). You seem to be running:`r`r"+[System.Environment]::OSVersion.VersionString, "Script", "OK", "Error");
    break;
  }

  # Initialize counters
  $Path_Start_Delta=24  #The offset at which the image path starts
  $Path_End_Delta=-1    #The offset at which the image path ends... is still unknown

  # First, access Windows Registry and get the property containing wallpaper path
  try {
    $TranscodedImageCache=(Get-ItemProperty 'HKCU:\Control Panel\Desktop' TranscodedImageCache -ErrorAction Stop).TranscodedImageCache
  }
  catch [System.Management.Automation.ItemNotFoundException],[System.Management.Automation.PSArgumentException]  {
    $result=[System.Windows.Forms.MessageBox]::Show("Windows does not seem to be holding a record of a wallpaper at this time.`r`r"+$Error[0].Exception.Message,"Script","OK","Error");
    break;
  }

  # Decode the property containing the path
  # First, let's assume the path ends at the last byte of $TranscodedImageCache
  $Path_End_Delta=$TranscodedImageCache.length-1

  # A sequence of 0x00 0x00 marks the end of string. Find it.
  # The array that we are searching contains a UTF-16 string. Each character is a little-endian WORD,
  # so we can search the array's even indexes only.
  for ($i = $Path_Start_Delta; $i -lt ($TranscodedImageCache.length); $i += 2) {
    if ($TranscodedImageCache[($i+2)..($i+3)] -eq 0) {
      $Path_End_Delta=$i + 1;
      Break;
    }
  }

  # Convert the bytes holding the wallpaper path to a Unicode string
  $UnicodeObject=New-Object System.Text.UnicodeEncoding
  $WallpaperSource=$UnicodeObject.GetString($TranscodedImageCache[$Path_Start_Delta..$Path_End_Delta]);


  # Test item's existence
  Get-Item $WallpaperSource -Force -ErrorAction Stop | Out-Null


  # Wallpaper should by now have been found.
  # Present it to the user. If he so chooses, launch Explorer to take him were wallpaper is.
  $result=[System.Windows.Forms.MessageBox]::Show("Wallpaper location: `r$WallpaperSource`r`rLaunch Explorer?", "Script", "YesNo", "Asterisk");
  if ($result -eq "Yes")
  {
      Start-Process explorer.exe -ArgumentList "/select,`"$WallpaperSource`""
  }
}
Catch
{
  $result=[System.Windows.Forms.MessageBox]::Show("Error!`r`r"+$Error[0], "Script", "OK", "Error");
  break;
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.