Apri Run … dialogo dal command

Vorrei eseguire la window di dialogo Run … ( Win + R ) da un command batch? In C:\Users\USER\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\System Tools c'è un colpo di scorrimento, ma la scossa non va da nessuna parte, il bersaglio è solo "Esegui …" e la directory di destinazione è il mio desktop.

Come posso eseguire la window di dialogo da un command?

Vista o successiva

Se sei in Windows Vista o versione successiva, verrà fornito con PowerShell. Il one-liner PowerShell (New-Object -ComObject "Shell.Application").FileRun() functionrà.

È ansible eseguirlo direttamente dalla row di command legacy (o all'interno di un file batch) con i seguenti elementi:

 powershell -c (New-Object -ComObject "Shell.Application").FileRun() 

Questo è un adattamento del command VBScript descritto di seguito.


Pre-Vista

Per le versioni precedenti di Windows (questo functionrà anche in versioni più recenti, ma richiede un file aggiuntivo), è ansible eseguire questa operazione tramite VBScript utilizzando l'object Shell:

 dim oShell = CreateObject("shell.application") oShell.FileRun() 

Riducendo in una linea:

 CreateObject("shell.application").FileRun() 

Semplice mettere quella row nel suo file di text normale e salvarlo con l'estensione .vbs , ad esempio ShowRunDialog.vbs . Quindi eseguire ShowRunDialog.vbs dalla row di command.

Esegue indirettamente la function RunFileDlg contenuta all'interno di shell32.dll . Vedi qui .

Questo command può essere lanciato da qualsiasi programma / script per visualizzare la window di dialogo "Esegui":

 explorer.exe Shell:::{2559a1f3-21d7-11d4-bdaf-00c04f60b9f0} 

Sono solo un programmatore amatoriale, ma mi sembra che sia più breve e più efficiente mettere il command per quello che vuoi nel file batch piuttosto che la procedura rischiosa di call per aprire la window di dialogo Esegui.

Le cose cattive potrebbero accadere al file batch se un utente era presente quando il .bat era in esecuzione. Sembra semplicemente una programmazione più veloce per dare un'istruzione di row di command da quel file batch.

Il modo più saggio è usare AutoHotKey per submit letteralmente il command Win + R al sistema operativo:

 SendInput, {LWin down}r{LWin up} 

Sono andato avanti e ho caricato un ZIP contenente uno script AutoHotKey e un .exe compilato dello script. Mi scuso se c'è un modo migliore per gestire questo problema; una volta che trovo un modo per lavorare mi muovo sulla cosa successiva!

Sotto i lavori per le mie 32 bit di Windows:

 c:\WINDOWS\system32\rundll32.exe shell32.dll,#61 

Chiunque conosce la versione a 64 bit?