VBA:跑步"提升"命令(Shell vs. ShellExecute)

时间:2014-07-14 17:08:12

标签: vba command-line windows-7 cmd shellexecute

在我的VBA程序中,我需要运行应用程序“Skitch”并使用它来打开JPEG文件。这是我一直在使用的命令:

ReturnValue = Shell(“C:\ Program Files(x86)\ Evernote \ Skitch \ Skitch.exe”&“”“”& aPic&“”“”,1)

...其中“aPic”是路径和文件名。

经过一些实验,我认为我需要运行命令,就像它在Elevated Command窗口中一样(换句话说,以“Administrator”的身份运行它)。是否可以运行Shell升级?

如果那是不可能的:如果我理解正确,使用ShellExecute而不是Shell会自动提升命令。但我对它不太熟悉。有人可以告诉我如何使用ShellExecute运行我的命令吗? (顺便说一下,我知道ShellExecute适合运行与文件类型相关的命令,但是在这个用户的计算机上* .jpg可能不会与Skitch相关联。)

感谢。

1 个答案:

答案 0 :(得分:3)

试试这个:

Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" ( _
    ByVal hWnd As Long, _
    ByVal lpOperation As String, _
    ByVal lpFile As String, _
    ByVal lpParameters As String, _
    ByVal lpDirectory As String, _
    ByVal nShowCmd As Long) As Long

Const SW_SHOWNORMAL = 1

Public Sub test()

  ShellExecute 0, "runas", "C:\Program Files (x86)\Evernote\Skitch\Skitch.exe", aPic, vbNullString, SW_SHOWNORMAL

End Sub

我没有skitch所以不能尝试这个,但它应该有效。

有关ShellExecuteclick here的更多信息,请查看MSDN。