問題タブ [external-process]
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.
c - C - エクスポートされた関数なしで外部プロセスから関数を呼び出す
関数をエクスポートせずに呼び出す方法を見つけようとしています。
さて、「add」が定義されたexeファイルがあります。このexeはwin32コンソールアプリケーションで、DLLをロードします。DLL は、exe ファイルから追加機能を使用することも目的としています (エクスポートなし)。
これが私のメインの win32 コンソール アプリケーション ファイルです。
hook.dll のコードは次のとおりです。
add 関数のアドレスを見つけるために、win32 コンソール アプリケーションを逆アセンブルしました。
問題は、LoadLibrary を呼び出すと、エラー コード アクセス違反であると思われる 998 が返されることです。そのメモリ領域はおそらく保護されているので、これは理にかなっていると思います。
任意のヒント?
(また、私が使用した逆アセンブラは Ida Pro フリー版で、迂回ライブラリは Microsoft から提供されています。)
visual-studio - VS2010 デバッガーがブレークポイントで停止しないのはなぜですか?
私は VS2010 で C#.NET クラス ライブラリ プロジェクトに取り組んでいます。私のプロジェクト設定 -> デバッグ設定では、非常に単純な jscript ファイル (test.js) を実行する外部プログラム (C:\Windows\SysWOW64\wscript.exe) を開始するようにプロジェクトを設定しています。スクリプトは単にクラスのインスタンスを作成し、そのメソッドの 1 つを呼び出します。
問題は、デバッグを開始したときに、VS2010 がどのブレークポイントでも停止しないことです。VS2008 でまったく同じプロジェクトを開くと、ブレーク ポイントで停止します。ブレークポイントがヒットするのを妨げている新しい設定がどこかにありますか? 他の誰かがこの問題に遭遇しましたか?
c# - Process.start なしで Web サイトを開く
なしでブラウザでウェブサイトの URL を開く方法Process.start(...):
Windows Service で使用できませんProcess.Start()。理由がわかりません。
java - ProcessBuilderとRuntime.exec()
Inkscapeのコマンドライン機能を使用してバッチSVG変換を処理するフロントエンドアプリをJavaで作成しようとしています。https://sourceforge.net/projects/conversionsvg/からコードを取得して更新しています。元の開発者がRuntime.getRuntime()。exec(String)によるInkscapeの呼び出しを処理した方法。私が遭遇している問題は、methodAとmethodBの使用の間のいくつかの矛盾です。実行されているさまざまなアクションを示すために、単純なJavaテストプロジェクトを作成しました。
CallerTest.java
RuntimeExecCaller.java
ProcessBuilderCaller.java
結果
methodA(String)呼び出しは両方とも機能しますが、methodB (String [])が呼び出されると、Inkscapeが開始され、引数が正しく渡されません。methodB(String [])を実行した後、各発言に対してInkscapeエラーダイアログが表示されます
要求されたファイルのロードに失敗しました-fC:/test.svg -D -w 100 -h 100 -e C:\ RuntimeExec-methodB.png
要求されたファイルのロードに失敗しました-fC:/test.svg -D -w 100 -h 100 -e C:\ ProcessBuilder-methodB.png
ダイアログで[閉じる]をクリックすると、Inkscapeがポップアップして新しい空白のドキュメントが表示されます。だから、私はいくつかの質問があると思います:
Runtime.getRuntime()。exec(String)とRuntime.getRuntime()。exec(String [])の違いは何ですか?
JavaDocによると、Runtime.exec(String)はRuntime.exec(command、null)(Runtime.exec(String cmd、String [] envp))を呼び出し、Runtime.exec(cmdarray、envp)(Runtime )を呼び出します。 .exec(String [] cmdarray、String [] envp))。それで、Runtime.getRuntime()。exec(String)がRuntime.exec(String [])を呼び出している場合、異なるメソッドを使用すると、なぜ異なる結果が得られるのですか?
どのメソッドが呼び出されるかによって、Javaが環境を異なる方法でセットアップする舞台裏で何かが起こっていますか?
c++ - Windows サービスから外部プログラム (pscp) を実行しても機能しない
C++ (Visual Studio 2010) で Windows サービスを作成していますが、このサービスはセキュア コピーを介してリモート サーバーにファイルを送信する必要があります (そのために pscp.exe を使用しています)。
そのため、関数を使用してsystempscp.exe を起動していますが、通常のアプリケーションとして実行するとすべて正常に動作します。
しかし、サービスとして実行しようとすると、サービスは pscp.exe を起動します (これはタスク マネージャーで確認できます) が、pscp.exe はフリーズし、リモート ホストに何も送信しません。また、サービスを停止しても、自分で pscp プロセスを強制終了する必要があります。
サービスが「デスクトップと対話」できるようにするためにいくつかのフォーラムを読みましたが、これで問題は解決しません。
また、サービスがログオンするユーザー アカウントを変更しようとしましたが、結果はありませんでした。
何か案は?
外部プログラムに pscp.exe のような GUI がなくても、Windows サービスから外部プログラムを実行するのは非常に難しいようです。
ありがとう!
-- アウグスト・カリンジ
java - 外部プロセスを実行するためのリモートクロスプラットフォームの方法はありますか?
ややクロスプラットフォームのプロセスを実行する方法についてのアドバイスを探していました。
私は自分のアプリのJavaとRubyの実装を作成しましたが、言語固有の問題ではなく、プラットフォーム固有の問題です。
Ubuntu / usr / bin /のEGは、私が行うことをすべて検索します
Windowsの場合、実行中の現在のディレクトリを検索します。ただし、Windowsの実行可能ファイルを現在のディレクトリにコピーすると、ランタイムリンクエラーが発生してクラッシュします(DLLが存在しません)。
HandBrakeCLIのデフォルトのインストールパスは「ProgramFiles(x86)/ HandBrake」(64ビットでのみx86)ですが、私が知る限り、ProgramFilesは検索パスに含まれていません。
MacOSXの場合、「open」コマンドを使用する以外に、コマンドラインからMacの「ApplicationFolders」を実行する方法がわかりません。しかし、私が本当に求めているのは、通常の実行可能ファイルであるHandBrakeCLIであるため、これはそれほど問題ではありません。ただし、HandBrakeCLIは/ usr/binまたは/usr/ local / bin(またはそのバリエーション)にはインストールされません。
私の最善のアイデアは、HandBrakeCLIへのパスを持つ構成ファイルを作成することです。私がそのルートに行く場合、私がどのプラットフォームを使用しているかを検出できることが理想的ですが、それはすべて一緒に別の問題です。1つは、C #ifdefセクションでのみ実行し、RubyやJavaでは実行していません。
ありとあらゆるご意見をいただければ幸いです。
java - JavaからのC++プロセスとの通信
最初に、サイトでこの問題に関するいくつかのQを確認しましたが、問題を解決する回答は見つかりませんでした。
私はJavaで書かれたプログラムを持っていて、それはC++で書かれたcmdプログラムを呼び出します。(実際のソースがないため、これは前提です)C++プログラムの予想されるI/ Oを知っています。コマンドでは、2行の出力であり、文字列の入力を待ちます。プログラムの最初の出力行がエラーストリームを経由していることを知っており、正しく受信します(これは予想されます)が、エラーまたは入力ストリームで2番目の行を取得しません。最初の行(エラー行)の直後にプログラムに書き込もうとしましたが、スタックしませんでしたが、応答がありませんでした。ストリームごとに3つの異なるスレッドを使用してみましたが、最初の行以降の入力/エラーストリームで何も受信されず、プログラムは出力ストリームを介した書き込みに応答しませんでした。
私の初期化子は次のとおりです。
それはまったく可能ですか、それともC ++プログラムに依存しますか?
ありがとう、Binyamin
java - 外部プログラムを呼び出すための Java ライブラリ
外部プログラムの実行を容易にする Java ライブラリを探しています。今、私はそれらを別のスレッドで「手動で」実行し、I/O をキャプチャします。
実行するいくつかの異なる外部ツールがあり、必要なのはそれを行うための統一されたアプローチです。私が処理しなければならないタスクは次のとおりです。 - 定義済みのテンプレートに従って入力ファイルを準備する - コマンドを実行する - 結果を待ち、出力ファイルを解析する - パイプラインを維持する
パイプライン全体は、外部ツールをノードとして、データ フローをエッジとして持つグラフと見なすことができます。データフローが許せば、ソフトウェアがいくつかのコマンドを並列スレッドで実行できれば素晴らしいことです。
そのような問題の既存の解決策はありますか?
私が得た答えに基づいて、明確にする必要があると感じています.パイプは必要ありません。とにかく必要なファイルでデータフローを解決できます。さらに、パイプは線形でなければなりません (1 出力 -> 1 入力) が、グラフが必要です
私はすでにPythonで一種のプロトタイプを持っています - たくさんのスクリプトです。それは良いですが、私にとってはスケーラブルではありません。さらに、私が呼び出すプログラムの一部は Java で作成されているため、すべてを Java で作成すると便利です。ベスト、ティム
java - Javaで外部プログラムを起動しますか?
問題:一定の時間が経過すると、プログラムを自動的に閉じます。
解決策:これが私の問題を解決するために思いついたものです(UbuntuのRhythmboxで動作します):
}
python - C ++:外部プログラムが実行されているかどうかを確認する方法は?
C++で外部プログラムを実行します。
プロセスがn秒を超えて実行された場合、プロセスを強制終了したいと思います。私は次のようにPythonでそれを行うことができます:
C ++でのp.poll()とp.terminate()の代替は何ですか?
ありがとうございました
WinAPIを含むPSソリューションも大歓迎です。