問題タブ [createprocess]

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 に答える
18166 参照

64-bit - CreateProcess (C++) から 64 ビット版の javaw.exe を起動する方法

Windows で Java ベースの GUI アプリケーションを起動するランチャーを C++ で作成しています。CreateProcess「javaw.exe」の起動に使用しています。「javaw.exe」の 32 ビット バージョンが常に起動されるという事実を除いて、すべてが機能します。

Java がインストールされると、実行可能ファイル「java.exe」および「javaw.exe」が%windir%\System3232 ビット Windows に配置されます。64 ビット Windows では、同じ実行可能ファイルを%windir%\SysWow64.

3 つの可能性があります。

  1. 32 ビット Windows で実行される 32 ビット ランチャー:%windir%\System32は検索パスにあり、32 ビットの javaw.exe が見つかります。GUI が起動します。すべてが機能します。

  2. 64 ビット ウィンドウで実行される 32 ビット ランチャー:%windir%\System32検索パスにあります。%windir%\System32にリダイレクトされ%windir%\SysWow64ます (この場合、私のランチャーは 32 ビットであるため)。32 ビットの javaw.exe が見つかりました。GUI が起動します。すべてが機能します。

  3. 64 ビット Windows で実行される 64 ビット ランチャー:%windir%\System32検索パスにあります。リダイレクトは発生しません。実行可能 javaw.exe は含まれていません。ランチャーが失敗します。

3 番目のケースで 64 ビットの javaw.exe を起動するにはどうすればよいですか?

0 投票する
8 に答える
38613 参照

c++ - Linux CreateProcess?

Linuxプラットフォームで開発しています。

現在実行中のイメージを置き換えずに、ライブラリに新しいプロセスを作成したいと思います。

私はライブラリを開発しているので、主な機能はありません。

そして、呼び出し側アプリケーションが閉じた後も新しいプロセスを続行したいと思います(CreateProcessWindows APIと同じように)。

Linuxで可能かどうか?

この関数のようなもの:

ノート:

  • system()現在のプロセスをブロックします、それは良くありません。現在のプロセスを継続したいと思います。

  • exec()ファミリは現在実行中のイメージを置き換えます、それは良くありません。

  • popen()現在のプロセスが閉じている場合は、新しいプロセスを閉じます。

0 投票する
3 に答える
11574 参照

c++ - win32 CreateProcess関数を使用して、子がファイルへの書き込みを完了するまで待機する方法

こんにちは、私はwin32プログラマーではなく、まったく新しいものです。親のwin32アプリケーションからプロセスを開くのが好きです(これは方法を知っています)。次に、子プロセスをテキストファイルに書き込んで、自分で閉じます。親アプリケーションで、子アプリケーションがテキストファイルへの書き込みを行ったことをどのように検出できますか。次に、親アプリからテキストファイルを読み取ります。これはすべてwin32c++にありますありがとう

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

printing - C++ で外部実行可能ファイル (.exe) を実行する方法

私は開発者ではありません。私たち (私と私たちのチーム) は、PDF を印刷できるツール (Send a PDF to printer) を C++ で作成したいと考えています。CreateProcessW と cmd /c を使用して、コマンド ライン pdfprint.exe などの外部ツールを使用しようとしましたが、問題が発生しました。Windows XP ではツールに問題はありませんが、Windows Vista では問題があり、pdfprint.exe などのツールを使用できません。

CreateProcessW と "cmd /c" を使用して別のプログラム内で外部ツールを起動するには、Windows XP と Vista で違いがありますか?

ありがとう

オロンゾ

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

c++ - 作成プロセスに渡される無効なコマンドを検出する方法

現在、ユーザーが指定したプログラムを起動するプログラムに取り組んでいます。渡されるのは、ユーザーが入力したwstringです。私の質問は、どうすれば例外をスローするか、「passedIn」が有効かどうかを確認する方法です。現在、ユーザーが「notepad.exe」と入力すると正しく起動しますが、「asdf」などの偽物を入力すると、プロセスが作成されます。

私は自分の漁獲量がそれをつかむことを望んでいましたが、そうではありません。それが有効かどうかを確認するために私ができることはありますか?

ありがとう!

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

c++ - CreateProcessはすべてのアプリケーションで機能するわけではありません

他の外部実行可能ファイルを起動するために使用される小さなGUIアプリケーションを書いています。1つを除いて、必要なすべての実行可能ファイルで動作します。これが私が使用しているコードです:

外部アプリに、別の実行可能ファイルによる実行を防ぐメカニズムが組み込まれている可能性はありますか?

どうもありがとうございます

0 投票する
0 に答える
944 参照

delphi - DelphiのCreateProcess():実行可能コマンドからの出力をリダイレクトします

重複の可能性:
DOS出力を取得する方法。眺望のあるdelphi2009で。

opensslで証明書を検証するためにCreateprocess()を使用しています。回答をリダイレクトして、.txtに書き込んでそこから読み取る必要がないようにします。文字列に直接リダイレクトしたい。基本的なコードは次のとおりです。

> C:\ certificat\outdelphi.txtを使いたくありません。出力を文字列にリダイレクトしたい。どうすればいいですか?

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

winapi - CreateProcess() が機能しないのはなぜですか?

Windows 7 でエクスプローラーを再起動しようとするプログラムがあります。最初にプロセスを終了してから、再び開始します。

単純?

そのように見えます-実際に機能しているようです。しかし、何かおかしいことに気付きました:プログラム (たとえば、XP の Power Calculator powertoy) を互換モードで起動しようとすると、動作しなくなりました! 何も起こりません -- プロセスが作成され、すぐに終了します。

タスク マネージャーの [ファイル名を指定して実行] ダイアログからエクスプローラーを実行すると、プログラムは正常に実行されます。

どうしたの?!

編集1:

  • WOW64 リダイレクトが無効になっている 32 ビットであるという事実は、違いはありませんでした。64ビットにしましたが、問題は同じでした。
  • 試してみShellExecuteましたが、うまくいきませんでした。

編集2:

同じ正確なコードが数回機能し、その後再び機能しなくなりました...え?

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

c++ - CreateProcessで作成したプロセスの名前を設定するにはどうすればよいですか?

私はグーグルで見つけた式に従ってCreateProcessでプロセスを始めています。私が疑問に思っているのは、作成されたプロセスのプロセス名を、タスクマネージャーで明確になるように設定できますか?

ありがとう、-
ダグラス

0 投票する
6 に答える
1557 参照

c++ - 特定のアプリケーションが単一インスタンスかどうかを確認する方法は?

特定のアプリケーション (app.exe など) が単一インスタンスかどうかを効率的に調べる方法を探しています。私はこれらの次のソルを考えました:

  1. CreateProcess() を 2 回実行し、そのアプリケーションのインスタンスが 2 つ以上実行されているかどうかを確認しますか? いいえの場合は、単一インスタンス アプリケーションです。しかし、これは効率的ではありません。
  2. CreateProcess() を実行し、1 ~ 2 秒待ちます。このインスタンスが強制終了された場合 (インスタンスが既に実行されているため)、単一インスタンス アプリになります。

しかし、私は上記の両方のソルに納得していません。Windowsでそれを行う他の効率的な方法はありますか?

そのアプリケーションの既に実行中のインスタンス (存在する場合) を強制終了したり変更したりしないことに注意してください。