VB中ShellExecute语法问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VB中ShellExecute语法问题相关的知识,希望对你有一定的参考价值。

网上说要加#include <shellapi.h>,为什么vb中却提示说语法错误

这个你可以从ShellExecute的声明语句中看出:

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

第1个参数hwnd是指父窗口的句柄,类型是Long,一般可以设为0表示没有父窗口,也可以设为当前窗口的句柄Me.hWnd;
第2个参数lpOperation是操作字串,比如“Open”是打开文档,“Print”是打印文档,等等。如果设为vbNullString,则默认为“Open”;
第3个参数lpFile则是要操作的文件名,可以是可执行文件,也可以是已经与某个应用程序建立关联的文档;
第4个参数lpParameters,则表示如果上述第3个参数是可执行文件,这里就是可执行文件的命令行参数,如果没有就可以设为空字符串"",或者是vbNullString;
第5个参数lpDirectory是程序启动时的默认路径,可以设为空字符串""或vbNullString,表示使用当前的默认路径;
第6个参数nShowCmd是程序启动后的窗口状态,比如SW_Hide(或数字0)是隐藏窗口,SW_NORMAL(或数字1)是普通窗口,SW_MAXIMIZE(或数字3)是最大化窗口,SW_MINIMIZE(或数字6)是最小化窗口,等等。

也就是说究竟用0还是空字符串要根据参数的类型来定。
参考技术A 开什么玩笑, #include <shellapi.h> 这是C语言家族里的东西,不是VB的语法,当然报语法错误了. 参考技术B 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
Private Sub Command1_Click()
Dim 密码 As String
密码 = Text1.Text
If 密码 = "12321" Then
ShellExecute Me.hwnd, "open", "d:\", "", "", 1

Else
text2.Text = "密码错误"

End If
End Sub追问

求解。。

追答

XP,WIN7都测试过没问题哦~
你重新新建一个工程 只添加一个按钮 2个文本 复制代码

本回答被提问者和网友采纳
参考技术C 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
在最前面加上这句话,API函数使用前要先声明。

ShellExecute 不打开默认 Web 浏览器

【中文标题】ShellExecute 不打开默认 Web 浏览器【英文标题】:ShellExecute Does not open Default Web Browser 【发布时间】:2014-06-27 06:41:25 【问题描述】:

问题是我的 exe 是由服务启动的,在该 exe 中,我调用了 ShellExecute 以打开链接。在这种情况下,ShellExecute 总是在 IE 而不是默认 Web 浏览器中打开链接。

我认为当我通过服务执行 exe 时,它​​不会在用户上下文中运行,因此它不会在默认 Web 浏览器中打开链接。

谁能帮我在这种情况下如何在默认网络浏览器中打开链接。

【问题讨论】:

Is it possible for a Windows service impersonate a user without a password?的可能重复 【参考方案1】:

您需要在服务中模拟用户帐户/上下文。使用this link 了解如何在服务中模拟活动用户上下文。

【讨论】:

只提供链接答案是不好的,因为链接可能无效,因此答案变得无用。请将链接中的要点复制到您的答案中。 确实,我的第一行答案是链接中内容的摘要。我也考虑过 1)链接在 *** 中 2)通过复制而不是出于自己的想法/经验添加更多信息有点接近窃取 3)如果“那个”*** 链接有用,那么该链接应该得到一个赞成票,而不是我的。 @ πάντα ῥεῖ :您错过了该规则的要点。这里的链接不是问题的答案,但它解释了如何实现答案。实际规则涵盖链接指向答案本身的情况。

以上是关于VB中ShellExecute语法问题的主要内容,如果未能解决你的问题,请参考以下文章

vb 关于 ShellExecute 的问题

vb代码之---打开文件或文件夹属性

VB中shell函数有哪些?举些例子。

VB 函数调用中参数的正确语法

更新语句中的 VB.NET 语法错误

ShellExecute 不打开默认 Web 浏览器