VC++の初心者です。あるプログラムとのインタフェース問題を解決しようとしているのですが、そのやり方がわかりません。教えてください。
プログラムの中で起こっているイベントに対して、そのメッセージを新しいプログラムで取らなければならないけど、、、Win32イベントだそうです。
宜しくお願いします。
「プログラム中で起こっているイベント」とは具体的になんのことでしょうか?
メッセージを送るならSendMessageでできると思いますが。
ありがとうございます。
基のプログラムの中でボタンを押し、イベントを起こしています。
そしてメッセージを送ってくるのですが、新しいプログラムでそのメッセージをキャッチすることです。宜しくお願いします。
別のプログラム中にあるボタンを押すと、そのプログラムから自プログラムにメッセージが送られてくる。
それをこちらでキャッチしたい。
…ということでよろしいでしょうか?
開発に MFC を使っているかどうかで方法は大きく異なります。
まずは MFC の有無等含め、環境を書いてください。
イベントを起こすとは? SetEvent のことですか?
>そしてメッセージを送ってくるのですが、
どうやってメッセージを送っているのですか?
具体的なコードを提示した方がレスしやすいと思います。
すでに存在するプログラム中の画面で(ソースがない。イベント名はある)ボタンを押して起こされているイベントがメッセージ(画面に表示されている基本情報など)を送ります。
そのメッセージを自プロ不ラムで取りたいのです。開発環境はVisual Studio.netを使っています。宜しくお願いします。
なんだかますますよくわからなくなりました。
一旦整理してください。
・相手のプログラムはどの言語で書かれていますか?
・「イベント」とは何ですか?
Win32 のイベントオブジェクトなのか、VB や C# のイベントのようなものなのか、あるいはまったく別のものなのか。
・「メッセージ」とは何ですか?
SendMessage 関数で送られるものですか? それとも別のものですか?
・MFC は使っていますか?
すみません。分かり辛くて。
いったん整理します。
1.基のプログラムはVBで作成されたものでソースは公開されてません。
2.そのプログラム中の画面上のボタンでイベントを起こしています。
3.その時にWin32のイベント形式で画面上の情報(メッセージ)を送ります。
4.そのメッセージをとりたいです。
5.イベント名などを提供してくれます。
6.今の開発環境はVisual Studio.netでMFCを使います。
先輩達:宜しくお願いします。
Win32のイベント形式とかメッセージとか言われても何のことだか分かりません。
シャノンさんの
>Win32 のイベントオブジェクトなのか、VB や C# のイベントのような
>ものなのか、あるいはまったく別のものなのか。
>SendMessage 関数で送られるものですか? それとも別のものですか?
に答えてください。
そのプログラムが市販のライブラリであれば、サンプルソースなどはないのですか?
なければ販売元に問い合わせたほうが早いのでは?
> イベント
これが「メッセージ」のことなら、メッセージフックとか。
イベントって、ActiveXとかCOM関係? 訳分からん。
# 他のプログラムとの「連結」ではなく「連携」では?
教科書的なオブジェクト指向の説明では、データの周囲に手続きがあるものをオブジェクトとし、それに「メッセージを送って」動作させる、と言いますね。実際にはメソッド呼び出しのことなんでしょうけど。
教科書的プログラミング用語は分かりづらいです…。
まぁ、とりあえず置いといて…
> そのプログラム中の画面上のボタンでイベントを起こしています
VB のプログラムがボタンでイベントを起こしているということは、いわゆる
Button_Click イベントとか、そういうイベントのことですか?
> その時にWin32のイベント形式で画面上の情報(メッセージ)を送ります
Win32 のイベントというと、CreateEvent API 関数で作成する「イベントオブジェクト」という解釈が自然だと思いますが、話の流れからは不自然ですね。イベントオブジェクトでは「他の何かに情報を送る」という動作は不可能です。
イベントが VB の「イベントプロシージャ」であったと考えても、イベントプロシージャは「自プログラムに」何かが起こったことを通知するものであり、他プログラムに何かすることはできません。イベントを契機として他プログラムに働きかけることはできますが、それは「イベント形式でメッセージを送る」とは言わないと思います。
また、「メッセージ」という用語の意味も不明です。一般的に Windows プログラムでメッセージというと、WM_CREATE など、WM_ で始まる名前がつけられた整数値のことを言います。しかし、問題のプログラムでは「画面上の情報」と書かれていることから、フォーム上のラベルか何かに表示されているテキストではないかという解釈もできます。
たとえば、MessageBox(VB では MsgBox)は「メッセージボックス」ですが、ここに表示される文字列を一般的に「メッセージ」とは言いません。
きつい言い方になって申し訳ありませんが、ここは VC++ の掲示板であり、あなたも VC++ で MFC を使ってプログラムを作ろうとされています。
ならば、用語などは VB 流ではなく、VC++ 流でお願いします。
#混乱しそうならここは読まないでください。ますますわからなくなるかもしれません。
Windows プログラミングで一般的に言う「メッセージ」と VB での「イベント」はほぼ同じ意味です。
Windows プログラミングで一般的に言う「イベント」と VB での「イベント」はまったく違います。
VB では「メッセージ」という用語は基本的に使わないはずです。
例えば、フォーム上にあるボタンを押したとき、OS はフォームに「ボタンが押されたよ」という通知を送るための「メッセージ(整数値)」を渡します。フォームはこれを受け取って、Button_Click という「イベント」を発生させます。
> 「ボタンが押されたよ」という通知を送るための「メッセージ(整数値)」
とあるように、「何かを送る」のはメッセージの役割です。
VB における「イベント」は発生するものであり、送るものではありません。
故に、
> その時にWin32のイベント形式で画面上の情報(メッセージ)を送ります
という言い方はおかしいです。
この「Win32のイベント形式」というのが何なのか不明ですが、VB のイベントだとするなら、イベントは送れないからです。
一般的に「イベント」というと、Win32 のイベントオブジェクトを指します。これは VB でいう「発生するもの」とは違い、強いて言えば「発生する時を待つもの/待たせるもの」と言えるでしょうか。
ツイート | ![]() |