কীভাবে উইন্ডোজ ডেস্কটপ ব্যাকগ্রাউন্ড আপডেট করতে বা রিফ্রেশ করতে বাধ্য করবেন


17

আমি যদি রেজিস্ট্রিটিতে ম্যানুয়ালি ব্যাকগ্রাউন্ড চিত্রটি পরিবর্তন করি তবে আমি কীভাবে এটি লগ-অফ না করে রিফ্রেশ করতে বাধ্য করতে পারি?

আমি জানি যে বিগিনফো এটি করে, তবে আমি বিষয়গুলি সহজ রাখতে এবং কোনও সফ্টওয়্যার ব্যবহার না করা চাই।

উত্তর:


16
RUNDLL32.EXE USER32.DLL,UpdatePerUserSystemParameters 1, True

7
এটি win7 x64 এ কাজ করবে বলে মনে হচ্ছে না ... কারওর জন্য এমন কিছু আছে যা এর জন্য কাজ করে?
জন ক্লসকে

3
RUNDLL32.EXE USER32.DLL,UpdatePerUserSystemParameters 1, Trueআমার মেশিনে যেমন কাজ করা হয়েছে বলে মনে হচ্ছে এটি ব্যবহার করুন (আপডেটপির ব্যবহারকারী সিস্টেমের প্যারামিটারগুলির পিছনে অনুপস্থিত কমাটি নোট করুন)
নীহারিকা

নিশ্চিত করতে পারেন, উইন 7 x64 এ ডেস্কটপটি রিফ্রেশ করবেন না। শুধু ক্ষেত্রে ক্ষেত্রে রানডেলের উভয় সংস্করণে কল করার চেষ্টা করা হয়েছে।
ওকুমা.স্কট

3
  • টাস্ক ম্যানেজার খুলুন
  • এক্সপ্লোরারকে মেরে ফেলুন
  • শেলটি সঙ্গে সঙ্গে পুনরায় চালু না হলে
  • মেনু থেকে ফাইল> নতুন টাস্ক নির্বাচন করুন
  • "Explorerr.exe" টাইপ করুন এবং এন্টার টিপুন।

ভাল চিন্তা, কিন্তু এটি কেবল এটি সমাধান করে না।
নাথান স্ট্রুটজ

2

আমি অনুরূপ কিছু করার চেষ্টা করছিলাম - শুরু মেনুর জন্য একটি রেজিস্ট্রি সেটিংস আপডেট করুন এবং তারপরে অবিলম্বে শুরু মেনুতে পরিবর্তনগুলি প্রতিফলিত করুন।

এই এমএসডিএন প্রশ্নের সমাধান আমার পক্ষে নিখুঁতভাবে কাজ করেছে।

আপনি কোনও WM_SETTINGCHANGEবার্তা সম্প্রচারের চেষ্টা করতে পারেন । উদাহরণ স্বরূপ:

class Program
{
    [DllImport("user32.dll", SetLastError = true)]
    private static extern IntPtr SendMessageTimeout(IntPtr hWnd, int Msg, IntPtr wParam, string lParam, uint fuFlags, uint uTimeout, IntPtr lpdwResult);

    private static readonly IntPtr HWND_BROADCAST = new IntPtr(0xffff);
    private const int WM_SETTINGCHANGE = 0x1a;
    private const int SMTO_ABORTIFHUNG = 0x0002;

    static void Main(string[] args)
    {
        SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, IntPtr.Zero, null, SMTO_ABORTIFHUNG, 100, IntPtr.Zero);
    }
}

1

স্ক্রীন রেজোলিউশন পরিবর্তন করুন, তারপরে রিভার্ট বিকল্পটি চয়ন করুন। আপনার রেজোলিউশন একই থাকবে এবং পটভূমি পরিবর্তন হবে।

বিকল্পভাবে, ডিসপ্লে কানেক্ট এবং ডিসপ্লে কেবলটি পুনরায় সংযোগ করুন।


1
# first in powershell, second both. cmd.exe + powershell.exe

# Refresh Desktop Ability
$definition = @'
    [System.Runtime.InteropServices.DllImport("Shell32.dll")] 
    private static extern int SHChangeNotify(int eventId, int flags, IntPtr item1, IntPtr item2);
    public static void Refresh() {
        SHChangeNotify(0x8000000, 0x1000, IntPtr.Zero, IntPtr.Zero);    
    }
'@
Add-Type -MemberDefinition $definition -Namespace WinAPI -Name Explorer

# Set Safe within deleted days and get physical drive letters
$ignoreDeletedWithinDays = 2
$drives = (gwmi -Class Win32_LogicalDisk | ? {$_.drivetype -eq 3}).deviceid

# Process discovered drives
$drives | % {$drive = $_
    gci -Path ($drive+'\$Recycle.Bin\*\$I*') -Recurse -Force | ? {($_.LastWriteTime -lt [datetime]::Now.AddDays(-$ignoreDeletedWithinDays)) -and ($_.name -like "`$*.*")} | % {

        # Just a few calcs
        $infoFile         = $_
        $originalFile     = gi ($drive+"\`$Recycle.Bin\*\`$R$($infoFile.Name.Substring(2))") -Force
        $originalLocation = [regex]::match([string](gc $infoFile.FullName -Force -Encoding Unicode),($drive+'[^<>:"/|?*]+\.[\w\-_\+]+')).Value
        $deletedDate      = $infoFile.LastWriteTime
        $sid              = $infoFile.FullName.split('\') | ? {$_ -like "S-1-5*"}
        $user             = try{(gpv "HKLM:\Software\Microsoft\Windows NT\CurrentVersion\ProfileList\$($sid)" -Name ProfileImagePath).replace("$(gpv 'HKLM:\Software\Microsoft\Windows NT\CurrentVersion\ProfileList' -Name ProfilesDirectory)\",'')}catch{$Sid}

        #' Various info
        $originalLocation
        $deletedDate
        $user
        $sid
        $infoFile.Fullname
        ((gi $infoFile -force).length / 1mb).ToString('0.00MB')
        $originalFile.fullname
        ((gi $originalFile -force).length / 1mb).ToString('0.00MB')
        ""

        # Blow it all Away
        #ri $InfoFile -Recurse -Force -Confirm:$false -WhatIf
        #ri $OriginalFile -Recurse -Force -Confirm:$false- WhatIf
        # remove comment before two lines above and the '-WhatIf' statement to delete files
    }
}

# Refresh desktop icons
[WinAPI.Explorer]::Refresh()

or 

ie4uinit.exe -ClearIconCache

end scripting enjoy.
#end

1
এটি দেখতে দুর্দান্ত লাগছে, তবে সেখানে সমস্ত ড্রাইভের জিনিস কেন ?
not2qubit

0

গৃহীত উত্তর থেকে রেখাটি আমার জন্য খুব বিক্ষিপ্তভাবে কাজ করেছিল। আমি 25 বার ব্যাকগ্রাউন্ডে নীরবে কোডটি কল করতে কিছুক্ষণ লুপ লিখে শেষ করেছি। আশাকরি এটা সাহায্য করবে.

গৃহীত উত্তর থেকে কোড:

RUNDLL32.EXE USER32.DLL,UpdatePerUserSystemParameters 1, True

আমার বাশ স্ক্রিপ্টের শীর্ষ থেকে কোড:

desktop () {

i=0

# Tell the desktop to refresh 25 times.
while [ $i -le 25 ]
do
  echo "RUNDLL32.EXE USER32.DLL,UpdatePerUserSystemParameters, 1 True"| "C:/Windows/System32/WindowsPowerShell/v1.0/powershell"
  ((i++))
done

}


# This runs the function silently as a background process
desktop &>/dev/null &
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.