问题标签 [shellexecute]

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 投票
2 回答
1023 浏览

ruby - 通过 shellexecute 从 delphi 运行一个 ruby​​ 脚本

我写了一个小红宝石脚本,让我通过调用它和一些命令行参数来发送电子邮件。

在命令行中,这有效:

但尽我所能,我无法让它在 Delphi 2007 for Win32 中工作。这是最新的尝试:

我尝试在 ShellExecute 中使用“open”作为第二个参数,但它没有帮助。ShellExecute 本身返回 42,据我在其他网站上发现的内容,这意味着“没有错误”。

0 投票
1 回答
305 浏览

shellexecute - ShellExecute并通知c程序中关闭已启动文件的事件

我在 ac 程序中使用 ShellExecute() 在 Internet Explorer 中打开了一个 .doc 文件。当资源管理器中打开的文件关闭时,调用 ShellExecute() 的程序有什么办法得到通知?

0 投票
2 回答
1593 浏览

c++ - 通过 ShellExecute() 打印到 Dymo LabelWriter Turbo 时的随机延迟

我有一个外部程序,它接受一些参数(PrintLabel),这些参数是使用 ShellExecute 从我的应用程序调用的。PrintLabel 如下所示。有时打印标签可能需要 15 到 20 秒。随着时间的推移,情况似乎变得更糟。如果重新启动 PC,则打印速度会再次加快,但随着时间的推移会变慢。有时它是随机的(即快然后慢)。我使用 SW_HIDE 是因为我不希望用户每次都看到控制台对话框。我知道它应该像普通打印机一样需要几秒钟,但 15 - 20 秒似乎太长了。是 Dymo LabelWriter 问题还是 ShellExecute 问题?ShellExecute 在 UI 线程中调用。有什么线索吗?

来自应用程序的 ShellExecute 语句:

打印标签代码:

...

...

这是 CDymoAddIn4.h:

0 投票
2 回答
1340 浏览

delphi - ShellExecute 什么时候会失败?(德尔福)

我打算将 ShellExecute 用于用 delphi 2007 编写的应用程序的更新程序,我想知道 ShellExecute 是否可以在大多数带有 Win 的计算机上工作,或者它是否会因为某些用户权限或类似的东西而容易失败。

0 投票
5 回答
42175 浏览

delphi - Delphi 程序如何通过默认电子邮件客户端发送带附件的电子邮件?

在我的程序中,我正在编写一封电子邮件以使用安装在用户计算机上的默认电子邮件客户端软件发送。

我已经编写了邮件地址、主题、多行正文,并且还有几个附件要包含在内。

我几乎使用 mailto 和 ShellExecute 完成了这项工作,如下所示:

在 Windows Vista 机器上使用 Delphi 2009,这将打开一个 Microsoft Mail“创建邮件”窗口,其中正确填写了收件人、主题和正文。但是该文件没有附加。

当我对此进行研究时,我注意到一些评论指出这种技术不适用于所有邮件客户端。但是,大多数评论都相当陈旧,因为我意识到这是一种非常古老的技术。

然后我发现Zarko Gajic说“这种方式还可以,但是你不能用这种方式发送附件”。

我还看到了 Windows 简单邮件 API (MAPI),但 Zarko 说只有在最终用户拥有符合 MAPI 的电子邮件软件时才有效。有很多关于在 Delphi 中使用 MAPI 的技术(例如使用 mapi 发送电子邮件),但它们都有免责声明 MAPI 并不总是随 Windows 一起安装。

此外,我真的希望消息首先出现在用户的默认电子邮件程序中,以便他们将其作为电子邮件记录的一部分,他们可以对其进行编辑并决定是否以及何时发送。我不确定 MAPI 是如何工作的,以及它是否会这样做。

所以我的要求是:

  1. 在用户的邮件程序中显示电子邮件。

  2. 允许一个或多个附件。

  3. 从 XP 以上(即 XP、Vista 或 7)的任何 Windows 机器上使用(希望)所有电子邮件客户端。

有这样的动物吗?或者也许有人知道如何使用 mailto/ShellExecute 技术获取附件?

大多数人做什么?


编辑:

MAPI 解决方案甚至是 Indy 解决方案都有一些答案。

我对他们的问题是他们不一定使用默认邮件客户端。例如,在我的 Vista 机器上,我已将 Windows Mail 设置为我的默认客户端。当我进行 MAPI 发送时,它不会启动 Windows Mail,而是会在 Outlook 中启动并设置电子邮件。我不想要那个。

我的程序的两个用户抱怨说:

您的调试例程无法发送文件,因为它尝试启动 Windows 邮件,原因是它自己知道的某种原因,而不是使用默认邮件客户端(在我的情况下为雷鸟)

我试图填写异常报告,但当它要求这台服务器,那台服务器时放弃了!然后我真的很生气,因为它启动了 Outlook - 我从来没有,曾经使用它或想要使用它。

我不需要 MAPI 或 Indy 的代码。它们很容易获得。但是,如果您建议使用 MAPI 或 Indy,我真正需要的是一种找到默认客户端并确保它是通过要发送的电子邮件的客户端。

另外,我需要知道 MAPI 现在是否通用。5 年前,不能保证它可以在所有机器上运行,因为它没有作为操作系统的一部分安装。这仍然是真的,还是默认情况下 MAPI 现在随 Windows XP、Vista 和 7 一起提供?

同样的问题也适用于 Indy 或任何其他建议的解决方案。它可以与默认客户端一起使用吗?它可以在几乎所有 Windows XP 和更高版本的机器上运行吗?

“mailto”解决方案之所以这么好,是因为所有机器都必须支持它才能处理网页上的 HTML mailto 语句。现在要是我能用它来添加附件就好了……


找到了可能的解决方案:mjustin 指出了一种利用操作系统的 sendto 命令的替代方案。这很可能是要走的路。

mailto 并不像 HTML mailto 那样被限制为 256 个字符,但我很震惊地发现它最终被限制为 2048 个字符。好在几个小时后,mjustin给出了答案。

如果实施顺利,他的回答将为我完成。如果没有,我会在这里添加我的评论。


不。事实证明,sendto 解决方案不会总是打开默认的电子邮件程序。在我的机器上,当我的默认邮件程序是 Windows Mail 时,它会打开 Outlook。太糟糕了。尽管有 2048 个字符的限制,但我不得不回到 mailto 方法。

但是,我确实在文章中找到了:SendTo 邮件收件人

此时,您可以使用经过深思熟虑的 ::WinExec 调用替换 ::ShellExecute,使用注册表中声明的实际 mailto 命令行并以当前电子邮件客户端为目标(例如,“%ProgramFiles%\Outlook Express\msimn .exe" /mailurl:%1)。但是限制是 32 KB。总而言之,没有办法使用 mailto 协议发送大于 32KB 的电子邮件。

但是我必须在每种情况下确定邮件客户端是谁。我预计这会导致进一步的并发症。

我发现的另一件事是 mailto 允许设置“to”、“cc”、“bcc”、“subject”和“body”,但不允许设置附件。而 sendto 只允许附件,然后设置带有默认消息的默认电子邮件,您无法设置各种字段和正文。

0 投票
2 回答
167 浏览

mysql - 如何从 MySQL 运行程序?

有解决办法吗?

0 投票
4 回答
4709 浏览

windows - 使用 Windows 的“ShellExecute”功能将数据通过管道传输到文件

我在 windows vista 中使用 '<strong>ShellExecute' 函数

有没有办法将输出通过管道传输到文件?

IE

MySqlDump.exe '-u user1 -ppassword dbName > TheOutputFile.Sql

这是我的代码

编辑:

我试过了

但这不起作用

0 投票
2 回答
1183 浏览

windows - delphi 如何判断外部应用程序何时结束

我正在使用 ShellExecute 运行外部应用程序 我如何知道外部应用程序何时结束?

这是我的代码

0 投票
2 回答
893 浏览

.net - Application Configuration File Not Being Read When Application Called via ShellExecute

I have a .NET application that is launched via a Delphi program using ShellExecute. Unfortunately when launched in this manner, the application does not seem to be reading its app.config file correctly, as if the file did not exist.

I have tried testing the application in other scenarios, e.g. calling from a shortcut with the the working directory set to a different folder and it runs fine.

[Edit]The Environment.CurrentDirectory property returns the directory of the Delphi program.

Any ideas would be really appreciated.

Cheers,

James

0 投票
1 回答
5801 浏览

mfc - 在 MFC 中启动外部 exe,如果已打开,如何将 exe 置于最前面?

我必须在我的 MFC 应用程序中打开一个外部程序,它可以工作,但如果我已经单击了按钮,我不希望它打开另一个实例,而只是将它带到前面。文档说 SW_SHOWNORMAL 参数可以做到这一点,但它对我不起作用。被调用的程序是否也必须为此设置?

ShellExecute(NULL, "open", "C:\Test\blahblah.exe", NULL, NULL, SW_SHOWNORMAL);

谢谢,CP