0

突然、windwos バージョン (winver)、calc などのほとんどの win アプリケーションは、Windows または System32 フォルダーにある実行可能ファイルであることが頭に浮かびました。

そのように、Win+R ショートカットを使用している Run Command も実行可能ファイルですか? これは実行可能ファイルとして Windows システム フォルダのどこでも利用できますか?

[ファイルの場所を開く] をクリックしようとすると、デスクトップが開いています。実際、ショートカットをクリックするとどこから始まるのでしょうか?

4

1 に答える 1

3

いいえ、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();

ただし、必要に応じてバッチファイルから呼び出すこともできます。

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

またはエクスプローラーのコマンドラインから:

explorer.exe Shell:::{2559a1f3-21d7-11d4-bdaf-00c04f60b9f0}
于 2014-07-25T09:16:47.550 に答える