问题标签 [shellexecuteex]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
588 浏览

c++ - 在 Windows 10 中从 C++ 启动 Microsoft Edge 的方式在 Windows Server 2016 中不起作用

以下文件 test.cc 用于启动具有特定 URL 的 Microsoft Edge:

编译:

它适用于 Windows 10(Edge 打开到特定 URL),但在 Windows Server 2016 中,此程序会弹出一个错误窗口:

标题:microsoft-edge:http://www.stackoverflow.com

内容:This file does not have a program associated with it for performing this action. Please install a program or, if one is already installed, create an association in the Default Programs control panel.

我在控制面板中检查了“默认程序”,并在 Microsoft Edge 页面中选择了“将此程序设置为默认程序”。

0 投票
0 回答
72 浏览

windows - 由 ShellExecuteEx 启动的 Windows Server 最大进程限制

我用 C++ 编写了一个小型 Windows 服务,它通过 ShellExecuteEx 定期运行 .cmd 文件。有时会出现问题:ShellExecute 返回 true - 一切正常 - 但没有启动子 cmd.exe 进程并且 SHELLEXECUTEINFO.hProcess 为 NULL,尽管我指定了 SHELLEXECUTEINFO.fMask = SEE_MASK_NOCLOSEPROCESS。即使它没有启动一个简单的.cmd: date /T >> file.txt

通常 .cmd 文件包含运行 php 脚本的 php 命令。

当整个系统通过这个在 NETWORK_SERVICE 帐户下运行的 Windows 服务运行大约 100 个子 cmd.exe 进程时,就会出现此问题。手动从资源管理器中我能够运行这样的 cmd 进程。

ShellExecuteEx 启动的最大进程是否有 Windows 系统限制?

0 投票
1 回答
944 浏览

delphi - 如何 ShellExecute 一个程序,然后发送它的命令行文本

我可以用 ShellExec 打开一个外部程序

但后来我想向它发送如下命令:

这可能吗?

0 投票
1 回答
187 浏览

visual-c++ - ShellExecuteEx 将焦点转移到先前打开的应用程序上,并在短时间内再次返回到 .exe

ShellExecuteEx(&ShExecInfo)用于启动一个.exe,当.exe从我的应用程序启动时,Windows 焦点在 1 秒左右的很短的时间内转移到先前打开的应用程序(如 Windows 探索),然后返回到.exe. 我希望我的重点应该放在 exe 上,而不是在短时间内进入任何应用程序。

参考代码:

0 投票
1 回答
814 浏览

batch-file - 使用 ShellExecuteEx 从 Inno Setup 中的批处理文件中获取退出代码

我有几个从 Inno Setup 执行的批处理文件。我ShellExecuteEx()用来执行批处理文件:

但无论我尝试什么,我都无法从批处理文件中获取退出代码ResultCode(我总是返回 0)。

在研究这个问题时,我读到该批次不能使用exit /b NN. 所以我删除了/b开关,但我仍然总是得到 0。

我必须怎么做才能成功地从批处理文件中获取退出代码?

丹尼斯

0 投票
1 回答
409 浏览

c - 使用 ShellExecuteEx() 将 UAC 窗口置于顶部

我正在使用 Microsoft Visual Studio 2010,并且正在用 C/C++ 编写代码。

我有自动启动安装过程的代码。在这种情况下,安装过程需要 UAC,所以我使用带有动词ShellExecuteEx()的 API 函数:runas

InstallCreateWindow()函数创建信息窗口,它还创建单独的窗口消息线程。窗口是可见的,最上面的,它响应消息。我必须创建它,因为我已经阅读hwnd了结构中需要正确的参数SHELLEXECUTEINFO才能将 UAC 提示窗口保持在顶部。

但这不起作用。有时 UAC 窗口会最大化运行,但主要是在任务栏中最小化并突出显示。无论如何,有没有一种方法可以将 UAC 窗口置于顶部?

0 投票
1 回答
5282 浏览

inno-setup - 启动使用 Inno Setup 创建的安装程序时出现 ShellExecuteEx 错误 299

我使用 Inno Setup 创建我的第一个安装程序。
但是当安装程序启动时,在窗口屏幕询问执行此文件的权限之前,我收到一个带有此错误的窗口:

ShellExecuteEx 一个 échoué :代码 299
Seule une partie d'une requete ReadProcessMemory 或 WriteProcessMemory 一个été effectuée。

英语(来自 WinError.h):

ERROR_PARTIAL_COPY - 仅完成了 ReadProcessMemory 或 WriteProcessMemory 请求的一部分。

然后启动安装程序。但是,大约 10 秒后,它会自行再次启动。

这是我的ISS文件:

即使我使用向导创建了新的安装程序,我也遇到了这个问题。我在 Inno Studio 中添加了一个日志,但它只有编译的日志,没有错误。

有谁知道这个问题来自哪里?

0 投票
1 回答
865 浏览

uac - 如何禁用特定应用程序的 UAC 提示

我有一个用于某种目的的命令行实用程序。我使用 ShellExecuteEx 函数从 COM DLL 启动此实用程序。当调用 ShellExecuteEx 时,我将 lpVerb 参数指定为“runas”,以便提升实用程序启动。我在启动时从 exe 客户端调用 COM 接口函数。因此,当我启动客户端 exe 时,该实用程序也会启动。我的问题是,由于该实用程序启动提升,它总是要求 UAC 确认提示。我受不了这个,因为在这个过程中不会有人工干预。所以我需要在不显示 UAC 提示的情况下启动该实用程序,但在我启动客户端 exe 时仍会提升。有什么办法可以做到这一点?我更喜欢在实用程序本身内进行一些更改,例如更改清单文件,而不是更改一些系统设置。

0 投票
1 回答
7706 浏览

delphi - 从 Delphi 打开和关闭外部程序

在我的应用程序(Delphi XE10)中,我想用用户的默认编辑器(MSword 或 OpenOffice writter 或其他)打开一个文件(RTF),并能够从我的应用程序中关闭这个编辑器。我尝试使用下面的代码,但没有成功关闭编辑器

在哪里:

编辑器打开,但是当它必须用 KillProcess 关闭时,ovExitCode 始终为零,因此 TerminateProcess 不会执行。我也尝试在任何情况下执行 TerminateProcess,但编辑器(在这种情况下为 MSword)没有关闭。

你能帮我吗 ?提前致谢

0 投票
1 回答
1582 浏览

c# - Process.Start is very slow

I'm currently using this method and it works perfectly:

I then tried it on another computer and its also working there but it's VERY slow (more that one minute to open my mail editor!).
I debugged the Process.Start (in System.dll) method and found out that the problem was at the end the NativeMethod.ShellExecuteEx method that runs very slowly.

I also noticed that specifying the name of the program that should open to send the email

solves the problem but that does not explain why it's working correctly on a computer and not on the other and it doesn't do the same thing: not specifing the program automatically opens the default one.

So the question is quite simple: Why this behavior and how to workaround it?