問題タブ [cross-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.
windows - 他のアプリ ウィンドウのタイトル バーにボタンを追加する方法 (XP/Vista)
プロセスによって必ずしも開かれていない開いているウィンドウのハンドラーがあります。そのウィンドウにボタンを追加し、クリックしたときにボタンが特定のアプリケーション (.exe) を呼び出すようにするにはどうすればよいですか? ボタンは、システム メニューまたは最小化ボタンの横にある可能性があります。これは、XP と Vista の両方で機能するはずです (バージョンごとに異なるアプローチで問題ありません)。
python - Pythonで名前付きセマフォ?
実行中の同時スクリプトの特定の量を超えて使用できないリソースを使用するPythonのスクリプトがあります。
古典的には、これは名前付きのセマフォによって解決されますが、マルチプロセッシングモジュールまたはスレッドのドキュメントでそれらを見つけることができません。
私は何かが足りないのですか、それともPythonによって実装/公開されていない名前のセマフォですか?さらに重要なことに、答えが「いいえ」の場合、それをエミュレートするための最良の方法は何ですか?
ありがとう、ボアズ
PS。この質問とはあまり関係のない理由で、タスクを継続的に実行されているプロセス/デーモンに集約したり、生成されたプロセスを操作したりすることはできません。どちらもpythonAPIで動作したようです。
.net - クロスプロセス読み書き同期プリミティブ.NET?
プロセス間で機能する読み取り/書き込みロック メカニズムはありますか (Mutex に似ていますが、排他ロックではなく読み取り/書き込み)? 同時読み取りアクセスを許可したいのですが、書き込みアクセスは排他的です。
c# - 別のコンピューターでアプリケーションを開始/停止するにはどうすればよいですか?
1 つの C# (デスクトップ) アプリケーションが別のマシンでアプリケーションを開始および停止することは可能ですか?
私は悪意のある意味ではなく、インターネット上でさえも意味しません. 部屋に 2 台のコンピューターがあり、一方にアプリを起動 (および停止) し、もう一方にアプリが必要です。
私の頭の中には、ターゲット コンピューターで補助プログラムを使用する方法がありました。
vb.net - VB.netを介してWordの自動化を行う場合のクロスプロセス呼び出しの回避
短いバージョン VB.netとVSTOにWordAddinがあり、Word.COMAddins.Objectを介してCOM互換オブジェクトを公開します。これにより、Word自体へのアクセスをクロスプロセスせずに、Addin機能をWordの外部で呼び出すことができます。 。
この手法はVB6で機能しましたが、VB.netでも機能しますが、タスクペインを介してアドインから直接実行される同じコードよりもはるかに低速であり、呼び出しがすべてクロスプロセスである必要がないかのようになります。バツ
ロングバージョン このアドインは、基本的にWordドキュメントで大量の処理を実行します。アドインは2つの方法で実行できます。
- Word内から、タスクペインを使用して
- 外部的には、COMに公開されている一連のクラスを介して(VB6クライアントアプリへの機能へのアクセスを提供する必要があるため)。
しかし、ここにこすりがあります。Wordの自動化を行ったことのある人なら誰でも、Wordで完全に許容範囲内でINPROCで実行されるコード(この場合、Word自体がロードするADDINのインスタンス)は、通常、許容できないほどゆっくりとプロセス外(またはクロスプロセス)で実行されることを知っています。
このアプリも例外ではありません。
何年も前に、私はこの問題を回避するために便利なトリックを利用しました。
- 通常どおりWordアドインを作成します
- Word.COMAddin.Objectプロパティを介してオブジェクトを公開し、外部コードがアドインにアクセスできるようにします。
- 外部プロジェクトでは、Wordを直接操作する代わりに、Application.COMAddinsコレクションを使用して、アドインを見つけ、そこから公開されたCOMAddin.Objectプロパティを取得してから、そのオブジェクトで作業を行うメソッドを呼び出します。
もちろん、COMAddin.Objectオブジェクトの呼び出しはクロスプロセスのままですが、Wordで処理中のアドインで実行が行われると、アドインは必要なすべてのWordオブジェクト操作を実行できるようになり、高速になります。その時点ですべての処理中の呼び出しを再実行します。
それはVB6COMの時代に機能しました。
しかし、私はこのVB.net vstoアドインをまとめ、VSTOのConnectオブジェクトのRequestComAddInAutomationService関数を介してアドインオブジェクトを公開します。
アドインを外部から呼び出すことができます。これらはすべて、期待どおりに機能します。ただし、Wordを呼び出すコードが、Wordを呼び出すコードであっても、Wordへの呼び出しがクロスプロセスで実行されているのと非常によく似ています。 Wordによって処理中にロードされたアドインdllの一部です!
そして、約10対1のように遅くなります。作業ウィンドウを介してADDINから直接実行する場合、実行に3秒かかりますが、COMADDIN.objectオブジェクトを介して外部コードから呼び出される場合、実行に約30秒かかります。
.net APPDOMAINSなどで何らかの問題が発生していて、.netで+実際に+がクロスプロシージャ呼び出しを構成していると推測していますが、これまでのところ、この種のことを示唆するものは何も見つかりませんでした。
私の次のステップは、いくつかの神秘的な洞察を除いて、再現をコード化することです。これは、プレイ中の要素の数が非常に多いため、トリッキーになる可能性があります。
何かご意見は?
winapi - 「クロスプロセスサブクラス化」に関する問題
2つの質問。
1)これは期待される結果であるに違いないことは理解していますが、誰かが私が間違っていることを教えてくれるかもしれません。グローバルフックですべてのウィンドウクラスをサブクラス化しようとしていますが、正常にショップを閉じることができず、フックを最初に登録したプログラムがフックの登録を解除して終了すると、サブクラス化されたアプリケーションがクラッシュし始めます。
これが私がやろうとしている方法です。
DllMainでは、DLL_PROCESS_DETACHに対して何もしません。代わりに、ClearHooks()は、フックを最初に登録したプログラムから呼び出され、フックがEnumWindows操作を実行したことを通知するメッセージを送信した後にのみ呼び出されます(元のwndprocを復元します。上記を参照)。
WndProcフックでウィンドウをサブクラス化します。メッセージを受信し、現在のwndprocがdll内のウィンドウではない、表示されているすべてのウィンドウがサブクラス化されます。
基本的に、すべての(私が知る限り)アプリケーションは、Windowsがwndprocを置き換えられたときの状態に戻しているように見えるにもかかわらず、終了時にクラッシュします。誰かが私が間違っているかもしれないことの手がかりを持っていますか?
2)これは、WM_MINMAXINFOをインターセプトし、ウィンドウが最大化されるたびにウィンドウのmaxsizeを変更するために必要です。残念ながら、dllでこれを行うことはできませんが、サイズ情報を取得するためにプログラムと通信する必要があります。それで、そのウィンドウと話すための最良の方法は何ですか。元のWM_MINMAXINFOメッセージに付属していた構造を変更できるように、いくつかの情報を返すために必要です。WM_COPYDATAの構造体は、SendMessageTimeoutの呼び出しが返されるまで、そのデータを保持しますか?
ありがとう
c++ - 別のプロセスでQtリストボックスの内容に関する情報を取得する方法
Qt を使用してアプリケーションを作成しました。Qt リストボックスのデータを読みたいと思います。LB_GETTEXT やその他の Windows メッセージに応答しません。別のプロセスからデータを取得する良い方法はありますか?
外部プログラムであるQtプロセスにアクセスできません。C# から LB コンテンツにアクセスする方法を探しています。
結局のところ、必要な操作のサポートを提供することになっている Qt 用のアクセシビリティ プラグインがあります。ただし、私は QT に慣れていないため、アプリケーションをアクセシビリティを許可してビルドする必要があるのか 、それともアプリケーションのオンとオフを切り替えることができる機能なのか (または、アクセシビリティが明示的に無効にされていないデフォルトのビルド アプリケーション) かどうかは不明です。
私が読んだところ、 export QT_ACCESSIBILITY=1 を実行し、qt.confファイルを配置し、アクセス可能なフォルダーをメインルートのQtアプリに配置する必要があると書かれています。QT_ACCESSIBILITY=1 にする方法と、アプリケーションがアクセス可能になるのに十分な場所を完全に理解していないと思います。コンピューターのプロパティの環境変数に QT_ACCESSIBILITY=1 を追加しました。または export QT_ACCESSIBILITY=1 は別のものです。
ありがとう
c++ - ブースト IPC は有効ですか?
クロスプラットフォーム IPC のデフォルトの選択肢はブーストですが、それについて尋ねたところ、2 つの異なるフォーラムで批判されているのを見て、気になりました。おそらくこれは単なる偶然だったので、ブースト IPC とクロスプラットフォーム C++ IPC ライブラリの選択について一般的にどのような考えがありますか?
Windows dev では、参照用に VC++ 2008 を使用しています。
編集:これは私が見たコメントの例です(今はすべてを見つけることができません):
ブーストのために、それはがらくたです。少なくともWindowsでは。Mutexes は WinAPI を使用せず、独自のファイルベースの実装 (WinAPI = Kernel-Objects) を作成します。プログラムがクラッシュしても、ファイルは削除されません。次回プログラムを起動すると、既存のファイルが原因でミューテックスを作成できません。
c# - SSISクロスプロセス通信にはどのようなオプションがありますか?
インクリメントおよびデクリメントされる整数変数(同時リクエストを外部APIに制限するためのカウントセマフォ)を格納したいと思います。これは簡単ですが、並列SQLエージェントジョブで実行されるSSISパッケージからこの変数を読み書きする方法が必要です。現在、SQLエージェントジョブのインスタンスは0〜5個ある可能性があるため、SSISパッケージが同時に実行されます。
この変数を読み書きするための私のオプションは何ですか?この変数を使用するコードは、.NETでカスタムSSISタスクとして記述されています。
値が正確に正しいことは特に重要ではありませんが、一般的に近い限り、許容範囲内にあります。正確は素晴らしいですが、必須ではありません。
ファイルシステム、レジストリ、データベース、サーバー、およびSSISエージェント全体にアクセスできますが、この変数を15〜30スレッドで頻繁にチェックしたいので、これまでファイルシステム方式を使用すると問題が発生していました(私はおそらくそれを間違っています)、そしてデータベースに保存するにはIMOが多すぎます。私が間違っている場合は私を訂正してください。レジストリに保存すると、サーバーファーム全体で変数にアクセスできなくなります。
助けてくれる人がいたら、私は喜んであなたの年季奉公になります。
c++ - C++でのクロスプロセスの相互作用
助けてください、どうすればプロセス-プロセスデータ交換を整理できますか(それが重要な場合は、Windowsで)?
いくつかのコマンドライン引数を使用したprocess1.exe
呼び出しがあります。fromprocess2.exe
の「進捗状況」を追跡したい(たとえば、何らかの値)。それ(その値)は、永続的に、または各Xミリ秒からアクセスできます-関係ありません。process2
process1
int
int
process1
WinApiまたはQtなどのあらゆるソリューションに役立ちます。
みなさん、ありがとうございました!すべての答えはとても役に立ちます!:) どうもありがとう!!