問題タブ [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 スクリプトを実行する

いくつかのコマンド ライン パラメーターと共に呼び出してメールを送信できる小さな Ruby スクリプトを作成しました。

コマンドラインでは、これは機能します:

しかし、試してみても、Delphi 2007 for Win32 では動作しません。最新の試みは次のとおりです。

ShellExecute の 2 番目のパラメータとして「open」を使用しようとしましたが、役に立ちません。ShellExecute 自体は 42 を返します。これは、他の Web サイトで見つけたものからわかる限り、「エラーなし」を意味します。

0 投票する
1 に答える
305 参照

shellexecute - ShellExecuteとCプログラムで起動したファイルを閉じるイベントを通知する

ac プログラムで ShellExecute() を使用して、インターネット エクスプローラーで .doc ファイルを開きました。エクスプローラーで開いたファイルが閉じられたときに、ShellExecute() を呼び出したプログラムが通知を受ける方法はありますか?

0 投票する
2 に答える
1593 参照

c++ - ShellExecute() 経由で Dymo LabelWriter Turbo に印刷する際のランダムな遅延

ShellExecute を使用してアプリケーションから呼び出されるいくつかの引数 (PrintLabel) を受け取る外部プログラムがあります。PrintLabel を以下に示します。場合によっては、ラベルの印刷に 15 ~ 20 秒かかることがあります。時間の経過とともに悪化するようです。PC を再起動すると、印刷速度は再び向上しますが、時間の経過とともに遅くなります。ランダムな場合もあります (つまり、速い場合と遅い場合)。ユーザーに毎回コンソール ダイアログ ボックスを表示させたくないので、SW_HIDE を使用しています。通常のプリンターのように数秒かかることは理解していますが、15 ~ 20 秒では長すぎるようです。Dymo LabelWriter の問題ですか、それとも ShellExecute の問題ですか? ShellExecute は UI スレッド内で呼び出されます。手がかりはありますか?

アプリケーションからの ShellExecute ステートメント:

PrintLabel コード:

...

...

CDymoAddIn4.h は次のとおりです。

0 投票する
2 に答える
1340 参照

delphi - ShellExecute が失敗する可能性があるのはいつですか? (デルファイ)

Delphi 2007 で記述されたアプリケーションのアップデーターに ShellExecute を使用することを計画しています。ShellExecute が Win を搭載したほとんどのコンピューターで動作するかどうか、またはユーザーの許可などのために簡単に失敗する可能性があるかどうか疑問に思っていました。

0 投票する
5 に答える
42175 参照

delphi - Delphi プログラムは、DEFAULT 電子メール クライアントを介して、添付ファイル付きの電子メールをどのように送信できますか?

私のプログラムでは、ユーザーのマシンにインストールされているデフォルトの電子メール クライアント ソフトウェアを使用して送信する電子メールを作成しています。

mailto アドレス、件名、複数行の本文を作成し、いくつかの添付ファイルを含める必要があります。

次のように、mailtoとShellExecuteを使用して、これをほぼ機能させました。

Windows Vista マシンで Delphi 2009 を使用すると、Microsoft Mail の [メールの作成] ウィンドウが開き、宛先、件名、本文が正しく入力されます。ただし、ファイルは添付されません。

これを調査したところ、この手法はすべてのメール クライアントで機能するとは限らないというコメントがいくつかあることに気付きました。ただし、これは非常に古い手法であることがわかっているため、ほとんどの解説はかなり古いものです。

その後、Zarko Gajicが「このアプローチは問題ありませんが、この方法で添付ファイルを送信することはできません」と述べていることがわかりました。

Windows Simple Mail API (MAPI) も見たことがありますが、Zarko 氏によると、これはエンド ユーザーが MAPI 準拠の電子メール ソフトウェアを使用している場合にのみ機能します。Delphi で MAPI を使用する方法については十分に文書化されていますが (例: mapi を使用して電子メールを送信する)、MAPI が常に Windows にインストールされているとは限らないという免責事項があります。

その上、メッセージがユーザーのデフォルトの電子メール プログラムで最初に表示されるようにしたいので、ユーザーはそれを電子メール レコードの一部として保持し、編集して送信するかどうか、いつ送信するかを決定できます。MAPI がどのように機能するのか、それが機能するかどうかはわかりません。

だから私の要件は次のとおりです。

  1. ユーザーのメール プログラムで電子メールを表示します。

  2. 1 つ以上の添付ファイルを許可します。

  3. XP (つまり、XP、Vista、または 7) 以降の任意の Windows マシン上のすべての電子メール クライアントで (うまくいけば) 動作します。

そんな動物いる?または、添付ファイルを mailto/ShellExecute テクニックで動作させる方法を知っている人はいますか?

ほとんどの人は何をしますか?


編集:

MAPI ソリューションと Indy ソリューションでさえ、いくつかの回答がありました。

私が抱えている問題は、必ずしもデフォルトのメール クライアントを使用しているとは限らないことです。たとえば、私の Vista マシンでは、Windows メールを既定のクライアントとしてセットアップしました。MAPI 送信を行うと、Windows メールは表示されませんが、代わりに Outlook で電子メールが表示および設定されます。私はそれをしたくありません。

私のプログラムの 2 人のユーザーが不満を漏らしました。

デフォルトのメールクライアント(私の場合はサンダーバード)を使用するのではなく、何らかの理由でWindowsメールを開始しようとするため、デバッグルーチンはファイルの送信に失敗します

例外レポートに記入しようとしましたが、このサーバー、そのサーバーを要求されたときにあきらめました。それから Outlook が起動したので、私は本当にイライラしました。

MAPI や Indy のコードは必要ありません。それらはすぐに利用できます。しかし、MAPI または Indy をお勧めする場合、私が本当に必要としているのは、既定のクライアントを見つけて、送信する電子メールが確実にそのクライアントに渡されるようにする方法です。

また、MAPI がユニバーサルになったかどうかを知る必要があります。5 年前は、オペレーティング システムの一部としてインストールされていなかったため、すべてのマシンで動作することが保証されていませんでした。それとも、MAPI は Windows XP、Vista、および 7 にデフォルトで付属していますか?

Indy またはその他の提案された解決策についても同じ質問が当てはまります。デフォルトのクライアントで動作し、ほとんどすべての Windows XP 以降のマシンで動作しますか?

"mailto" ソリューションが優れている理由は、Web ページにある HTML の mailto ステートメントを処理するために、すべてのマシンがそれをサポートしなければならないからです。これを使用して添付ファイルを追加できれば...


考えられる解決策: mjustin は、オペレーティング システムの sendto コマンドを利用する代替案を指摘しました。それはおそらく行く方法です。

mailto は、HTML の mailto のように 256 文字に制限されていませんでしたが、最終的に 2048 文字に制限されていることを知り、打ちのめされました。幸いなことに、数時間後、mjustin が答えをくれました。

その実装がうまくいけば、彼の答えは私のためにそれを行ったでしょう. そうでない場合は、ここにコメントを追加します。


いいえ。結局のところ、sendto ソリューションは常にデフォルトの電子メール プログラムを開くわけではありません。私のマシンでは、既定のメーラーが Windows メールの場合に Outlook が開きます。残念な。2048 文字の制限にもかかわらず、mailto メソッドに戻らなければなりませんでした。

ただし、次の記事で見つけました: SendTo メール受信者:

この時点で、レジストリで宣言されている実際の mailto コマンド ラインを使用して、よく考えられた ::WinExec 呼び出しで ::ShellExecute を置き換え、現在の電子メール クライアントをターゲットにすることができます (たとえば、"%ProgramFiles%\Outlook Express\msimn .exe" /mailurl:%1)。ただし、制限は 32 KB です。結論として、mailto プロトコルを使用して 32KB を超える電子メールを送信する方法はありません。

しかし、その場合、メール クライアントが誰であるかをそれぞれの場合に判断する必要があります。それがさらなる複雑化につながると思います。

もう 1 つ分かったのは、mailto では "to"、"cc"、"bcc"、"subject"、"body" を設定できますが、添付ファイルは設定できないということです。sendto は添付ファイルのみを許可し、デフォルトのメッセージを含むデフォルトの電子メールを設定しますが、さまざまなフィールドや本文を設定する方法はありません。

0 投票する
2 に答える
167 参照

mysql - MySQLからプログラムを実行する方法は?

解決策はありますか?

0 投票する
4 に答える
4709 参照

windows - Windowsの「ShellExecute」関数を使用してデータをファイルにパイプする

Windows Vista で「<strong>ShellExecute」機能を使用しています

出力をファイルにパイプする方法はありますか?

すなわち

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

ここに私のコード

編集:

私が試してみました

しかし、これは機能しません

0 投票する
2 に答える
1183 参照

windows - Delphi で外部アプリケーションがいつ終了するかを知る方法

ShellExecute を使用して外部アプリケーションを実行していますが、外部アプリケーションがいつ終了するかを知るにはどうすればよいですか?

ここに私のコード

0 投票する
2 に答える
893 参照

.net - ShellExecuteを介してアプリケーションが呼び出されたときにアプリケーション構成ファイルが読み取られない

ShellExecuteを使用してDelphiプログラムを介して起動される.NETアプリケーションがあります。残念ながら、この方法で起動すると、ファイルが存在しないかのように、アプリケーションがapp.configファイルを正しく読み取っていないように見えます。

他のシナリオでアプリケーションをテストしてみました。たとえば、作業ディレクトリを別のフォルダに設定してショートカットから呼び出すと、正常に実行されます。

[編集]Environment.CurrentDirectoryプロパティは、Delphiプログラムのディレクトリを返します。

どんなアイデアでも本当にありがたいです。

乾杯、

ジェームズ

0 投票する
1 に答える
5801 参照

mfc - MFC で外部の exe を起動しています。既に開いている場合、exe を前面に表示するにはどうすればよいですか?

MFC アプリケーションで外部プログラムを開く必要がありますが、これは機能しますが、既にボタンをクリックしている場合は、別のインスタンスを開くのではなく、前面に表示するだけです。ドキュメントには、SW_SHOWNORMAL パラメーターがこれを行うと書かれていますが、私にとってはうまくいきません。呼び出されたプログラムもこれをセットアップする必要がありますか?

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

ありがとう、CP