问题标签 [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 投票
1 回答
118 浏览

windows - 如何通过禁用兼容模式以编程方式启动 EXE?

用户启动我的 EXE 以兼容模式运行,该模式启动另一个 EXE,但我不希望子 EXE 继承兼容模式设置。我如何实现它?找不到任何使这项工作的资源。

我试过 CREATE_NEW_PROCESS_GROUP 但它不起作用。

ShellExecuteEx用来启动子 EXE(它需要管理权限)

0 投票
1 回答
86 浏览

c++ - ShellExecuteEx 的意外/不一致行为

我正在使用 Qt 在 Visual C++ (2015) 中创建自配置软件工具,该工具根据需要运行其他几个第 3 方安装程序。当软件发现它需要一个不可用的库或驱动程序时,它将使用 ShellExecuteEx 调用相应的安装程序来打开相应的可执行文件。

如果只需要安装一件事(ShellExecuteEx 只运行一次),一切都会正常运行。如果需要同时安装件东西,那么大约 25% 的情况下,安装程序将正确运行,而另一个将打开包含可执行文件的文件夹,而不是运行可执行文件。对于正确运行的是第一个操作还是第二个操作没有一致性。

ShellExecuteEx 声称在这两种情况下都正确运行(返回 true)。我已经验证每次都提供了可执行文件(和工作目录)的正确路径。我尝试在 ShellExecuteEx 中同时使用动词“open”和“NULL”,但行为没有改变。

如果重要,两个可执行文件都请求管理权限。当一切正常时,他们都会按预期进行。当一个失败时,它不会要求管理员权限。

我找不到任何有类似问题的人的记录,这可能意味着我以某种基本方式滥用 ShellExecuteEx,但我没有看到它。提前感谢您的任何建议或意见。

这是代码:

编辑:我不正确。如果只运行一个可执行文件,我会观察到这种行为的频率要低得多,因此它与运行两个操作没有内在联系。

编辑 2: PaulMckenzie 指出我没有正确初始化结构,这很尴尬。不幸的是,修复它并没有改变行为。不过谢谢!

0 投票
0 回答
1304 浏览

c++ - 如何隐藏 ShellExecuteEx 控制台窗口而不是应用程序窗口?

我有一个程序需要调用另一个程序。

因此,经过一番研究,我找到ShellExecuteEx了适合SHELLEXECUTEINFO调用外部程序的命令。到目前为止效果很好,但它实际上弹出了两个窗口:命令行和带有窗口的 Qt 应用程序。

如果我单独执行 Qt 应用程序,则没有命令行窗口。

我现在想要实现的是摆脱控制台窗口,只显示 Qt 应用程序的窗口。我试图将nShow属性设置SHELLEXECUTEINFOSW_HIDE但两个窗口都被隐藏了。

我不知道这是否重要,但调用程序是用 vs2010 编译的,被调用程序是用 Visual Studio 2017 编译的,都是 32 位应用程序。

0 投票
2 回答
270 浏览

winapi - 等待由 IShellDispatch2.ShellExecute 启动的进程

如Raymond Chen 的文章中所述,我正在使用IShellDispatch2.ShellExecute提升的进程在标准用户下运行进程。与ShellExecuteEx不同,此方法不返回有关进程的任何信息。

我需要知道启动的进程何时完成,我可能需要它的退出代码。有没有办法获得这个过程的句柄(除了拍摄快照之外的任何其他方式)?

0 投票
1 回答
284 浏览

windows - 带有 SEE_MASK_FLAG_NO_UI 的 ShellExecuteEx 仍然显示消息

在我的系统上,.xyz 扩展名根本没有注册。因此,当我在资源管理器中双击 .xyz 文件时,Windows 10 会弹出标准的“你想如何打开此文件”对话框,这是预期的。

现在,当我运行这个简短的代码片段时,会显示与上面相同的对话框,即使我将SEE_MASK_FLAG_NO_UI标志放入sei.fMask

  • 文件"C:\\Users\\Test\\Documents\\temp\\Temp.xyz"存在。

  • sei.lpFile指向现有 .txt的相同代码按预期使用记事本打开它。

文档假装不应该与SEE_MASK_FLAG_NO_UI.

那么我该怎么做ShellExecuteEx才不会弹出任何消息,而是返回错误代码呢?

我只在 Windows 10 上检查过这个,我不知道旧 Windows 版本的行为是什么。

0 投票
1 回答
125 浏览

delphi - 如何使用 TShellExecuteInfo 发送命令行开关和参数字符串

我正在使用 Delphi 6(是的,我知道,但我是老派)。

我有一个问题TShellExecuteInfo。我想运行这个命令:C:\delphi\bin\Convert.exe -b-i加上一个参数字符串(文件夹和文件名)。

如果我把它放在-b-i后面Executeinfo.lpfile然后ShellExecuteEx()找不到Convert.exe,如果我把它放在Paramstring后面Convert.exe就找不到文件。

我已经花了3天的时间,所以我希望你能帮助。

顺便说一句,为什么 Delphi 会突然开始将我的文件保存为文本?

0 投票
1 回答
162 浏览

c++ - 绕行 ShellExecuteEx 的问题,有什么想法吗?

我有一个进程 X,我将我的 DLL 注入其中以绕过一些函数,并制作一些内存补丁。我需要绕道ShellExecuteEx(),因为这个进程运行其他进程,然后我也需要将我的 DLL 注入到子进程中。

我的迂回函数似乎调用得很好,当我调用原始函数时,它返回 TRUE。但是,注入我的 DLL 的进程会在几秒钟后关闭,此时调用它(还没有注入子进程,因为我还没有对其进行编码)。知道为什么吗?

0 投票
1 回答
545 浏览

python - ShellExecuteEx 和 getexitcode 进程

使用 ShellExecuteEx(..) 午餐 python 脚本和 python 脚本从 python main 使用 sys.exit(0) 成功或其他错误值返回一个值。如何读取 python 脚本退出代码?

启动应用程序后,使用 MsgWaitForMultipleObjects (...) 等待完成脚本,然后调用 GetExitCodeProcess(...) 出于某种原因,我总是从 getExitCodeprocess(..) 读取值 1

蟒蛇代码:

C++ 代码:

在这段代码中,作为 Python 脚本以 15 退出,我期望从 GetExitCodeProcess(rSEI.hProcess, &dwCode) 的 dwCode 中读取 15?

感谢您对此的所有帮助...

0 投票
1 回答
220 浏览

delphi - 通过Delphi带参数执行tregsvr.exe

我正在使用tregsvr.exeDelphi 附带的程序来注册 OCX。

使用这个程序而不是的原因regsrv32.exe是可以传递一个-c参数,该参数只允许当前用户注册。

我通过函数执行程序ExecAndWait(),复制如下。它使用ShellExecuteEx()(而不是CreateProcess()),正是因为(只要我没有设法为当前用户传递参数)我必须要求提升,这是通过传递Adm修复的布尔值来完成的'runas'(我阅读了另一种方法应用程序清单,但没有设法让它工作,也许这是另一个问题)。

在此使用示例中,变量Path是 OCX 的完整路径,tregsvr.exe并且Server是 OCX 的完整路径。它运作良好(它完成了注册工作):

但是当我尝试传递-c或其他参数时,我的问题就出现了,比如在任何这些尝试中,函数都不成功:

0 投票
1 回答
99 浏览

c++ - 通过 SHELLEXECUTEINFO 向 .exe 发送参数

我有一个带有 2 个参数的 .exe。我需要在运行时在我的程序之间运行 .exe 文件。我曾经ShellExecuteEx运行过 .exe 文件,但它没有接受参数。请帮助我哪里出错了。我在下面发布我的代码。