问题标签 [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.
windows - 如何通过禁用兼容模式以编程方式启动 EXE?
用户启动我的 EXE 以兼容模式运行,该模式启动另一个 EXE,但我不希望子 EXE 继承兼容模式设置。我如何实现它?找不到任何使这项工作的资源。
我试过 CREATE_NEW_PROCESS_GROUP 但它不起作用。
我ShellExecuteEx
用来启动子 EXE(它需要管理权限)
c++ - ShellExecuteEx 的意外/不一致行为
我正在使用 Qt 在 Visual C++ (2015) 中创建自配置软件工具,该工具根据需要运行其他几个第 3 方安装程序。当软件发现它需要一个不可用的库或驱动程序时,它将使用 ShellExecuteEx 调用相应的安装程序来打开相应的可执行文件。
如果只需要安装一件事(ShellExecuteEx 只运行一次),一切都会正常运行。如果需要同时安装两件东西,那么大约 25% 的情况下,安装程序将正确运行,而另一个将打开包含可执行文件的文件夹,而不是运行可执行文件。对于正确运行的是第一个操作还是第二个操作没有一致性。
ShellExecuteEx 声称在这两种情况下都正确运行(返回 true)。我已经验证每次都提供了可执行文件(和工作目录)的正确路径。我尝试在 ShellExecuteEx 中同时使用动词“open”和“NULL”,但行为没有改变。
如果重要,两个可执行文件都请求管理权限。当一切正常时,他们都会按预期进行。当一个失败时,它不会要求管理员权限。
我找不到任何有类似问题的人的记录,这可能意味着我以某种基本方式滥用 ShellExecuteEx,但我没有看到它。提前感谢您的任何建议或意见。
这是代码:
编辑:我不正确。如果只运行一个可执行文件,我会观察到这种行为的频率要低得多,因此它与运行两个操作没有内在联系。
编辑 2: PaulMckenzie 指出我没有正确初始化结构,这很尴尬。不幸的是,修复它并没有改变行为。不过谢谢!
c++ - 如何隐藏 ShellExecuteEx 控制台窗口而不是应用程序窗口?
我有一个程序需要调用另一个程序。
因此,经过一番研究,我找到ShellExecuteEx
了适合SHELLEXECUTEINFO
调用外部程序的命令。到目前为止效果很好,但它实际上弹出了两个窗口:命令行和带有窗口的 Qt 应用程序。
如果我单独执行 Qt 应用程序,则没有命令行窗口。
我现在想要实现的是摆脱控制台窗口,只显示 Qt 应用程序的窗口。我试图将nShow
属性设置SHELLEXECUTEINFO
为SW_HIDE
但两个窗口都被隐藏了。
我不知道这是否重要,但调用程序是用 vs2010 编译的,被调用程序是用 Visual Studio 2017 编译的,都是 32 位应用程序。
winapi - 等待由 IShellDispatch2.ShellExecute 启动的进程
如Raymond Chen 的文章中所述,我正在使用IShellDispatch2.ShellExecute
提升的进程在标准用户下运行进程。与ShellExecuteEx不同,此方法不返回有关进程的任何信息。
我需要知道启动的进程何时完成,我可能需要它的退出代码。有没有办法获得这个过程的句柄(除了拍摄快照之外的任何其他方式)?
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 版本的行为是什么。
delphi - 如何使用 TShellExecuteInfo 发送命令行开关和参数字符串
我正在使用 Delphi 6(是的,我知道,但我是老派)。
我有一个问题TShellExecuteInfo
。我想运行这个命令:C:\delphi\bin\Convert.exe -b-i
加上一个参数字符串(文件夹和文件名)。
如果我把它放在-b-i
后面Executeinfo.lpfile
然后ShellExecuteEx()
找不到Convert.exe
,如果我把它放在Paramstring
后面Convert.exe
就找不到文件。
我已经花了3天的时间,所以我希望你能帮助。
顺便说一句,为什么 Delphi 会突然开始将我的文件保存为文本?
c++ - 绕行 ShellExecuteEx 的问题,有什么想法吗?
我有一个进程 X,我将我的 DLL 注入其中以绕过一些函数,并制作一些内存补丁。我需要绕道ShellExecuteEx()
,因为这个进程运行其他进程,然后我也需要将我的 DLL 注入到子进程中。
我的迂回函数似乎调用得很好,当我调用原始函数时,它返回 TRUE。但是,注入我的 DLL 的进程会在几秒钟后关闭,此时调用它(还没有注入子进程,因为我还没有对其进行编码)。知道为什么吗?
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?
感谢您对此的所有帮助...
delphi - 通过Delphi带参数执行tregsvr.exe
我正在使用tregsvr.exe
Delphi 附带的程序来注册 OCX。
使用这个程序而不是的原因regsrv32.exe
是可以传递一个-c
参数,该参数只允许当前用户注册。
我通过函数执行程序ExecAndWait()
,复制如下。它使用ShellExecuteEx()
(而不是CreateProcess()
),正是因为(只要我没有设法为当前用户传递参数)我必须要求提升,这是通过传递Adm
修复的布尔值来完成的'runas'
(我阅读了另一种方法应用程序清单,但没有设法让它工作,也许这是另一个问题)。
在此使用示例中,变量Path
是 OCX 的完整路径,tregsvr.exe
并且Server
是 OCX 的完整路径。它运作良好(它完成了注册工作):
但是当我尝试传递-c
或其他参数时,我的问题就出现了,比如在任何这些尝试中,函数都不成功:
c++ - 通过 SHELLEXECUTEINFO 向 .exe 发送参数
我有一个带有 2 个参数的 .exe。我需要在运行时在我的程序之间运行 .exe 文件。我曾经ShellExecuteEx
运行过 .exe 文件,但它没有接受参数。请帮助我哪里出错了。我在下面发布我的代码。