- PR -

ウィンドウメッセージの取得方法

1
投稿者投稿内容
しでと
会議室デビュー日: 2004/01/19
投稿数: 9
投稿日時: 2004-05-27 19:39
いつも拝見させていただいております。
早速ですが、VC++で書かれたDLLから、ウィンドウメッセージを受け取ること
ってできるのでしょうか?
そのDLLには、イベントを登録するAPIがあり、ハンドルとメッセージを登録
できます。
そのAPIに、C#で作ったFormのハンドルを渡し、Form内でWndProcをオーバ
ライドすれば取得できるのでしょうか?
どなたか、見識者の方、ご教授願います。
CHN
ぬし
会議室デビュー日: 2002/03/07
投稿数: 382
投稿日時: 2004-05-27 20:22
こんばんは。

ハンドルちゃんさえもらってしまえば。。
できるんじゃ。。ない。。ですかね。
たぶん。

実際やられてみて無理でした?

_________________
しでと
会議室デビュー日: 2004/01/19
投稿数: 9
投稿日時: 2004-05-27 20:36
ご返答ありがとうございます。
実際にやってみてるのですが、、、うまくいかないのです。
私も、ハンドルさえ取れれば、できると確信してはじまったはいいが、
うまくいかないのです。
できることさえ確信がもてれば、どこかほかの場所が悪いとみるので
すが。
CHN
ぬし
会議室デビュー日: 2002/03/07
投稿数: 382
投稿日時: 2004-05-27 20:44
あー気持ちよくわかります

できることさえわかれば、あとは頑張るだけ、
しかしそもそもできないことをいくら頑張ってもしょうがないって
ことですね〜。

自分も書かれたことをやったことがありませんので、
できることかどうかは不明です。
お力になれません。

_________________
しでと
会議室デビュー日: 2004/01/19
投稿数: 9
投稿日時: 2004-05-27 20:59
CHNさん、ご返信ありがとうございました。
可能な限りがんばってみます
Jubei
ぬし
会議室デビュー日: 2002/03/02
投稿数: 830
お住まい・勤務地: 関西
投稿日時: 2004-05-27 22:11
諸農です。

引用:

実際にやってみてるのですが、、、うまくいかないのです。



どううまくいかないのでしょうか?

DelphiでWin32DLLを作成して試してみましたが、
こちらではうまくいきました。

コード:

const int MyMess = 0x0384;//900
[DllImport("MyMessage.dll")]
private static extern void MySendMes(IntPtr AHWnd,int AMes);

protected override void WndProc(ref Message m)
{
if (m.Msg == MyMess) listBox1.Items.Add("Mes has come");
base.WndProc (ref m);
}

private void button1_Click(object sender, System.EventArgs e)
{
MySendMes(this.Handle,MyMess);
}



Delphi側はSendMessageしているだけです。

コード:

procedure MySendMes(AHWnd:HWnd;AMes:Cardinal); stdcall;
begin
SendMessage(AHWnd,AMes,0,0);
end;
exports
MySendMes;
begin
end.




--追加--
そもそも、これが出来ないと、Win32APIそのものが
.NETから呼べないって事になるのでは?


_________________
諸農和岳
Powered by Borland Delphi/C++Builder & Microsoft VS.NET

[ メッセージ編集済み 編集者: Jubei 編集日時 2004-05-27 22:17 ]
しでと
会議室デビュー日: 2004/01/19
投稿数: 9
投稿日時: 2004-05-30 14:33
無事解決いたしました。
Jubeiさんの投稿をみて、間違いなくほかの部分だと確信し、二晩探し続けて
ようやくわかりました。
このDLLを使用する際の初期化の仕方が間違っていたようです
みなさんには大変ご迷惑をおかけいたしました。
また、このような投稿に付き合っていただいて、ありがとうごさいました。
1

スキルアップ/キャリアアップ(JOB@IT)