
No.4ベストアンサー
- 回答日時:
>プログラムAに、「1のファイルを開け!というコマンドラインを渡し、
>プログラムAからそのコマンドラインをプログラムBに渡し、
>プログラムBからファイルを開くということがしたいのです。
>プログラムAB共に自分で開発しており、
>ファイルを開いて見れるアプリなのです。
プロセス間通信によりプログラムAからプログラムB
にコマンドラインを送信し、
プログラムB側で、
受け取ったコマンドラインを解析して
ファイルを開けば良いのでは?
プロセス間通信は、WM_COPYDATAでも、
共有ファイルでもいいし、他にも名前付きパイプ等色々あります。
受け側では、プロセス間通信により
受け取ったコマンドラインを解析し、
ファイルを開く関数にファイル名を引き渡し、
開かせればよいのではないでしょうか?
自分で開発したプログラムなのですから
ファイル名を引数で与えて開く関数は
作ってあるでしょう?
No.3
- 回答日時:
> すでに起動しているプログラムB
このプログラムBも kgyqk433さんが開発しているものですか?
または、ソースがあり内容を変更できるのでしょうか
どのようなものを想定しているのかをもう少し具体的にしたほうが的確な回答を得やすいかと思います
たとえば
1) 自分で開発しているコンソール型のアプリ
2) 既存のWindows付属のメモ帳など GUI系のアプリ
3) 自分で開発している GUI系のアプリ
私の言葉不足ですみません。。。
プログラムAでGetCommandLine()で取得したコマンドラインをプログラムBにコマンドラインとして渡したいのです。。
プログラムAに、「1のファイルを開け!というコマンドラインを渡し、プログラムAからそのコマンドラインをプログラムBに渡し、プログラムBからファイルを開くということがしたいのです。
言葉不足で大変もうしわけございません。
プログラムAB共に自分で開発しており、ファイルを開いて見れるアプリなのです。
お手数ですがよろしくお願いします。
No.2
- 回答日時:
>SendMessage()でWM_COPYDATAメッセージを
>プログラムBに向かって送りつけるのが楽かもしれません。
一つのアイディアだと思います。
しかし、問題があります。
送り元のプログラムは、送信先のウィンドウ・ハンドルをどうやって
入手するのでしょう?
FindWindow()等で検索する必要があると思います。
ちょっと面倒です。
さらに、受け取りたいのがアプリのメインウィンドウならば良いのですが、
メインウィンドウ以外の場合
(ex MFC Doc/View のViewで受け取り、クライアント領域に
描画したい場合)
メインウィンドウからルーティングしなければなりません。
これも面倒です。
私は、シンプルに”ファイル"(共有ファイル)をお勧めします。
適当なフォルダ
(決め打ちでもいいですし、
GetTempPath()で取得してもかまいません)
に決め打ちのファイルを作ることにします。
送信元はただ書き込むのみです。
受信側は、必要な場所で読み込めばOKです。
Viewで必要なら、
Viewのタイマーかなんかでチェックし、
読み終わったら削除し、タイマーを切ればよいのです。
ウィンドウハンドルを気にする必要もないし、
メインウィンドウからルーティングしてもらう必要もありません。
WM_COPYDATAに比し、弱点は
1)ハードディスクを使うので、I/Oエラーを処理する必要があります。
2)ハードディスクを使うので、速度が遅いです。
しかし、SendMessage()の場合も、相手がビジーであれば遅くなります。
むしろ、ファイルの場合は完全非同期なので、
相手がビジー状態であってもすぐに戻れるメリットがあります。
PostMessage()に代えれば?
という声もありますが、
残念なことにWM_COPYDATAはPostMessageできません。
http://mrxray.on.coocan.jp/Halbow/Notes/N012.html
結論としては
A)受け手が安定したプログラム(何秒もビジーになったりしない)で、
FindWindow()で簡単にウィンドウを見つけられる
(独自のウィンドウ・クラスを登録してる、
独自のキャプションを付けている等)
この場合は、WM_COPYDATAがお勧めできます
B)上記に該当しない場合
不安定なプログラムであったり、
MFCのデフォルトのウィンドウ・クラス名をそのまま流用していたり、
キャプションもアプリ名を省いたものに代えていたりとういう場合
ファイルベースがお勧めです
私の言葉不足ですみません。。。
プログラムAでGetCommandLine()で取得したコマンドラインをプログラムBにコマンドラインとして渡したいのです。。
プログラムAに、「1のファイルを開け!というコマンドラインを渡し、プログラムAからそのコマンドラインをプログラムBに渡し、プログラムBからファイルを開くということがしたいのです。
言葉不足で大変もうしわけございません。
No.1
- 回答日時:
こんばんは。
SendMessage()でWM_COPYDATAメッセージをプログラムBに向かって送りつけるのが楽かもしれません。
送信側
http://msdn.microsoft.com/ja-jp/library/ms649011 …
受信側
http://msdn.microsoft.com/ja-jp/library/5hcat2sc …
其の他、当方は試した事はないのですが、受信側に受け付け用のエディットボックスを用意しておき、送信側が其のエディットボックスに向かって、WM_SETTEXTで文字列を送信しても、容易に出来るのだそうです。
私の言葉不足ですみません。。。
プログラムAでGetCommandLine()で取得したコマンドラインをプログラムBにコマンドラインとして渡したいのです。。
プログラムAに、「1のファイルを開け!というコマンドラインを渡し、プログラムAからそのコマンドラインをプログラムBに渡し、プログラムBからファイルを開くということがしたいのです。
言葉不足で大変もうしわけございません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語 コマンドライン引数 4 2023/02/09 18:47
- Ruby MacBookAir起動時にRubyソースコードをコマンドラインで実行するには? MacのOS起動時 1 2022/04/18 01:55
- CAD・DTP Autocad Scriptファイルからの入力とコマンドラインからの入力が違う 1 2023/08/01 09:13
- C言語・C++・C# C言語で 英文字のみからなる文字列、”Radar”、”WasItACatISaw”、”a”、””(空 5 2022/12/20 15:17
- C言語・C++・C# 10個の実数に対する降順ソート結果を出力するプログラムを作りたいのですが、写真のプログラムをどう直せ 2 2022/07/09 21:13
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- PHP 掲示板を資料を参考にして開発中ですが、画像がアップされません? 1 2022/11/21 06:44
- C言語・C++・C# 10個の実数に対する降順ソート結果を出力するプログラムを作りたいのですが、以下のプログラムをどう直せ 1 2022/07/09 22:16
- Windows 10 Visual StudioとVisual C++ Build Toolsについて 1 2023/04/16 03:42
- その他(ビジネス・キャリア) グーグルの障害者訓練プログラム募集あるがどうだろ?6時間勤務で月収22万!! 1 2023/02/17 20:36
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAでユーザーフォームが自動的...
-
javaからAS400のプログラム起動
-
あるプログラムのコマンドライ...
-
Excelで4096点以上のFFTの方法
-
銃を発砲するならともかく、日...
-
OS入ってる機器のソフト・アプ...
-
XnViewにwebpを「いつも開く」...
-
円周率を求めるC言語のプログラム
-
Excelに埋め込んだVBAのプログ...
-
方対数グラフを書く為の計算方...
-
ニュースを取得してホームペー...
-
プログラムを終了しても消えな...
-
エクセルとワードをデスクトッ...
-
PICマイコンのコピー(クローン...
-
RGBの識別
-
Javaで2の0乗から-8乗まで表示...
-
USBカメラ
-
グラフィックボードにウイルス...
-
C言語でプロセスをWAITさせる方...
-
FORTRANでGUIプログラム
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
あるプログラムのコマンドライ...
-
OS入ってる機器のソフト・アプ...
-
VBAにてメール作成した際、一部...
-
読み込み中にアクセス違反が発...
-
Excelで4096点以上のFFTの方法
-
XnViewにwebpを「いつも開く」...
-
ドロップダウンリストの文字を...
-
PICマイコンのコピー(クローン...
-
「Outlookが他のプログラムによ...
-
Vba UserFormを前面に出す方法...
-
VBAでユーザーフォームが自動的...
-
未使用の変数を一括検索する方法
-
UWSCで指定のフォルダを開きたい。
-
Excelに埋め込んだVBAのプログ...
-
自動クエリとはどういうもので...
-
モジュール、アプリケーション...
-
画像を読み込むのと取り込むの...
-
main関数を先頭に置くデメリット
-
エクセルVBA 検索時に除外を設...
-
WORD印刷できるがEXCE...
おすすめ情報