我正在开发的一个程序是读取注册表来弄清楚如何打开从另一个应用程序给出的文件(我们没有使用ShellExecute,因为我们需要处理id,我没有密切关注ShellExecuteEx足以看到它给了进程处理,现在已经太晚了,无论如何).它已经有效,所以这更适合我自己的启发,但是有谁知道为什么有些条目使用%l或%L而不是%1?至少对于"%l",它可能是一个错字,但"%L"似乎不太可能.实际上,Media Player在打开命令中使用"%L"来表示各种音频文件.我很确定它和%1的意思相同,只是因为我无法想到其他任何东西.
我目前最喜欢的理论是,关于l和1如何容易混淆是一个笑话.或者它可能代表"位置",但那将是跛脚:)
成功时,ShellExecute返回一个句柄.
我们需要关闭这个句柄,如果是这样,怎么样?
根据已公布的我微软的例子,我们需要不关闭该句柄.但ShellExecute本身的文档在这个主题上是静音的.你能否证实我们确实不需要关闭这个手柄?
但是,一个句柄如何有效并且不需要被关闭?以下哪个陈述是真实的:
问题是如何从c ++以编程方式打开Run?我知道有一些功能可以替代它,比如shellexec,winexec但是对于某些任务我只需要运行对话框来显示.
我正在做一些构建自动化,并希望从我正在使用Delphi XE编写的应用程序中运行Delphi 7 IDE.
我的Delphi 7 IDE位于:
'C:\Program Files\Borland\Delphi7\Bin\delphi32.exe'
Run Code Online (Sandbox Code Playgroud)
还在做:
ShellExecute( Handle, 'Open', 'C:\Program Files\Borland\Delphi7\Bin\delphi32.exe', '', '', sw_ShowNormal );
Run Code Online (Sandbox Code Playgroud)
最终进入Delphi 7 IDE,但只有在很多丢失的包错误之后.
这样做:
ShellExecute( Handle, 'Open', 'C:\windows\notepad.exe', '', '', sw_ShowNormal );
Run Code Online (Sandbox Code Playgroud)
工程文件打开记事本.
我还有一个名为'Delphi7IDE.bat'的批处理文件,当我点击批处理文件时打开Delphi 7,但是:
ShellExecute( Handle, 'Open', 'C:\sys\batch\Delphi7IDE.bat', '', '', sw_ShowNormal );
Run Code Online (Sandbox Code Playgroud)
产生与上述相同的错误.
我尝试使用我的Delphi 7菜单快捷方式中指定的directoy(即调用:
ShellExecute( Handle, 'Open', 'C:\Program Files\Borland\Delphi7\Bin\delphi32.exe', '', 'C:\Program Files\Borland\Delphi7\Projects\', sw_ShowNormal );"
Run Code Online (Sandbox Code Playgroud)
但这会产生相同的错误(这是可以预料到的,因为上面的批处理文件示例没有固定的目录,单击时运行正常).
有多个错误,但一个示例是 
我做错了什么?
我在CentOS上使用apache中的php.我需要为用户提供服务,他们可以通过点击删除大文件.试图使用shell_exec.但它不在后台运行.它运行并使用户等待.
我的命令:
$ D_command ="rm -rf videos /'$ Mdelete'";
了shell_exec($ D_command);
谢谢!
如何edit从Windows下的命令行打开文件?
主要是我希望在与之关联的默认编辑器中打开该文件(不要与此文件类型的默认操作混淆).
这不仅仅是"执行"文件,因此start filename不是解决方案.
注意:这需要以某种方式使用ShellExecute.
更新:我添加了Python作为替代batch.
我在我的Delphi 6应用程序中使用Chromium Web浏览器控件.
每当用户点击当前正在显示的不在我的主网站上的网页中的网页链接时,我通过使用带有"打开"动词的Windows ShellExecute()函数打开URL来启动带有URL的默认Web浏览器.我从BeforeBrowse()事件处理程序执行此操作并同时取消导航.
换句话说,我不在Chromium控件中显示外部URL,而是在用户的默认Web浏览器中显示它们.
它工作正常,但有时我也会得到一个由我的应用程序拥有的独立窗口弹出窗口,它占据了大约一半的完全空的屏幕(我的Windows主题的空白白色客户区).窗口的Windows类名是"webviewhost".
谁能告诉我如何压制这个"鬼"窗口?
我没有在帮助中找到Shellexec和Exec之间差异的详尽解释.是个
Shellexec('','program.exe',params,'',SW_HIDE,ewWaitUntilTerminated,ResultCode)
Run Code Online (Sandbox Code Playgroud)
相当于
Exec('program.exe',params,'',SW_HIDE,ewWaitUntilTerminated,ResultCode)
Run Code Online (Sandbox Code Playgroud)
使用exe文件时?当然,当我想要执行与exe或批处理不同的文件时,请使用Shellexec.
然而,有时候,我无法让Shellexec和Exec正确地工作.唯一可行的解决方案是编写批处理文件并通过shellexec运行它.我个人不喜欢这个解决方案,因为我必须处理一个临时文件,我不相信获得的结果代码.现在我将不得不回到批处理文件解决方案,因为我不知道如何使这个指令工作:(错误是如果目标文件不存在,它会在命令提示符下引发指令失败即使目标文件不存在,该指令仍然有效.
mysqldump := 'C:\Program Files (x86)\MySQL\MySQL Server 5.0\bin\mysqldump.exe';
params := '-uroot -ppassword myschema>C:\myappdir\backup\newbackup.sql';
//the destination folder exists, the file newbackup.sql does not exist
Shellexec('',mysqldump,params,'',SW_HIDE,ewWaitUntilTerminated,ResultCode);
Run Code Online (Sandbox Code Playgroud)
我正在使用Windows 7 64位,该程序(Inno安装程序安装程序)以管理权限运行
这是我的代码
if (Desktop.isDesktopSupported()) {
Desktop desktop = Desktop.getDesktop();
if (desktop.isSupported(Desktop.Action.OPEN)) {
try {
desktop.open(file.getCanonicalFile());
} catch (Exception ex) {
ex.printStackTrace();
}
} else {
System.out.println("Desktop open action is not supported");
}
} else {
System.out.println("Desktop is not supported");
}
Run Code Online (Sandbox Code Playgroud)
我知道安装MagicISO(从这个Java bug中获取)会使这段代码不起作用.但为什么?MagicISO具体做什么?我可以阻止它发生或工作吗?
更糟糕的是,此代码不会抛出任何异常.它只是在那里保持沉默.这真的让我发疯了.
当我调用ShellExecute时,我得到了返回值 - 一个整数.我在哪里可以获得相关的错误消息?我知道它们很通用,但我在MS文档中看到了消息.