Your Run call is not running synchronously, so your script will continue without waiting for Run complete. This is great, and this is what you need in your situation. But if it takes more than 1600 ms to run the Desktop Properties dialog box, then AppActivate and your SendKeys commands are sent to a nonexistent window. Have you tried to increase your sleep time to make sure it works?
You can also check for window availability in a loop. AppActivate returns True if the window is found and False otherwise. For example, here is a fragment that tries to see for 10 seconds whether a window appears (checking every second) ...
For i = 1 To 10 WScript.Sleep 1000 If WshShell.AppActivate("Desktop Properties") Then WshShell.Sendkeys "%FC" WshShell.Sendkeys "{F4}" Exit For End If Next ' If i > 10, it failed to find the window.
source share