Команда Выполнить в исполняемом файле Windows?

Внезапно у меня возникла мысль, что большинство приложений win, таких как windwos version(winver), calc и все, являются исполняемыми файлами, которые будут находиться в папке Windows или System32.

Таким образом, команда запуска, которую мы используем ярлык Win+R, также исполняемый файл? это доступно в любом месте в системной папке Windows в виде исполняемого файла?

Когда я попытался нажать Открыть местоположение файла, он открывает рабочий стол. на самом деле, откуда это начинается, когда мы нажимаем на ярлык?

1 ответ

Нет, это не exe, это диалоговое окно оболочки, которое вы найдете в библиотеке динамических ссылок C:\Windows\System32\shell32.dll

Вы можете вызвать его из VBScript следующим образом:

 dim objShell
 set objShell = CreateObject("shell.application")
 objShell.FileRun

Из JScript вот так:

var objShell = new ActiveXObject("shell.application");
objShell.FileRun();

С VB6 вот так:

Private Sub fnShellFileRunVB()
    Dim objShell As Shell

    Set objShell = New Shell
    objShell.FileRun

    Set objShell = Nothing
End Sub

С современным VB.NET это становится:

Dim t2 As Type = Type.GetTypeFromProgID("Shell.Application")
Dim obj2 = Activator.CreateInstance(t2) ' dynamic 
obj2.FileRun()

Если опция strict имеет значение "ON", то путь таков:

Dim t As Type = Type.GetTypeFromProgID("Shell.Application")
Dim obj As Object = Activator.CreateInstance(t)
t.InvokeMember("FileRun", System.Reflection.BindingFlags.InvokeMethod, Nothing, obj, Nothing)

Вариант C#:

Type t = Type.GetTypeFromProgID("Shell.Application");
object obj = Activator.CreateInstance(t);
t.InvokeMember("FileRun", System.Reflection.BindingFlags.InvokeMethod, null, obj, null);


//If the C # 4.0, the Dynamic Lookup presence of, it can be:
Type t2 = Type.GetTypeFromProgID("Shell.Application");
dynamic obj2 = Activator.CreateInstance(t2);
obj2.FileRun();
Другие вопросы по тегам