Команда Выполнить в исполняемом файле 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();