突然之间我有一件事让我觉得大多数win应用程序如windwos版本(winver),calc和所有这些都是Windows或System32文件夹中的可执行文件。
就像那样,我们使用Win + R快捷键的Run Command也是可执行文件?这在Windows系统文件夹中的任何位置都可用作可执行文件吗?
当我尝试点击打开文件位置时,它正在打开桌面。实际上,当我们点击快捷方式时从哪里开始?
答案 0 :(得分:2)
不,它不是exe,它是在动态链接库C:\ Windows \ System32 \ shell32.dll
中找到的shell对话框窗口您可以像这样从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()
如果选项严格是" 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#Variant:
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();