画像ファイル
画像ファイル  プロセス間通信(SendMessage)
プロセス間通信
1プロセス間通信(送信側)
2-->プロセス間通信(受信側) -->

VB.NET C#全般
1羊の皮を着た狼 VB.NET
2Form1、Form2の相互参照
3Form1、Form2の相互参照 2
4VB.NET C# データ型の基本
5VB.NET C# 文字列
6VB.NET タイマー精度
7BackgroundWorkerの魅力1..
8BackgroundWorkerの魅力2..
9VB6のタイマー
10コントロールの配列をインデクサ..
11コントロールの配列はジェネリク..
12インデクサ(C#、VB.NET)
13インデクサでBit操作
14Unicode 入門
15デリゲート入門
16マルチスレッド入門
17イベント入門
18デリゲートとイベント
18インターフェースの基本

RichTextBox関係
1RichTextBoxの不思議
2テキスト色付け高速化計画
3VB.NET RichTextBox1
4VB.NET RichTextBox 2

RS-232C関係
1RS-232Cの基礎
2RS-232Cの何が変わった..
3SerialPortクラス
4Unicode(ユニコード)の壁
5マルチスレッドの壁
6RS-232C サンプルコード
7RS-232CのHEXモニタ
8RS-232C 送信モジュール
9RS-232Cのループテスト
10RS-232Cのピンチェンジ..

Socket通信
1C#、VB2005 でSocket通信
2サーバー 複数接続


質問、意見はこちらに
画像ファイル


受信側のコード
受信側のコードは簡単です。
.NETでは簡単にFormに送られてくるメッセージをフックできます。
それにはFormクラスのWndProcメソッドを自分のフォームでオーバーライドすればよいのです。
あとはメッセージの種類により数値データか文字データかを判断して、数値データであれば、 そのまま文字にして表示ます。
文字列の場合は、WinProcには引数としてSystem.Windows.Forms.Message構造体が参照で渡されてきます。
この参照データからMessage構造体が持つGetLParamメソドでLParamを取得し、 「OPYDATASTRUCT」でキャストして文字列を取り出します。

仕様
画像ファイル
フォームの構造は簡単で、送られたデータを表示するだけです。

C# 全てのコード
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace getmessagec
{
public partial class FomGetMessage : Form
{
//COPYDATASTRUCT構造体
public struct COPYDATASTRUCT
{
public Int32 dwData;   //送信する32ビット値
public Int32 cbData;    //lpDataのバイト数
public string lpData;   //送信するデータへのポインタ(0も可能)
}
public const int WM_COPYDATA = 0x4A;
public const int WM_USER = 0x400;
public FomGetMessage()
{
InitializeComponent();
}

protected override void WndProc(ref Message m)
{
switch (m.Msg)
{
case WM_USER:
//数値が送信されて来た
txtInt1.Text = m.WParam.ToString();
txtInt2.Text = m.LParam.ToString();
break;
case WM_COPYDATA:
//文字が送信されて来た
COPYDATASTRUCT mystr = new COPYDATASTRUCT();
Type mytype = mystr.GetType();
mystr = (COPYDATASTRUCT)m.GetLParam(mytype);
txtMessage.Text = mystr.lpData ;
break;
}
base.WndProc(ref m);
}
//テキストボックスのクリア
private void butCls_Click(object sender, EventArgs e)
{
txtMessage.Text = string.Empty;
txtInt1.Text = string.Empty;
txtInt2.Text = string.Empty;
}
}
}
VB.NET 全てのコード
Public Class FomGetMessage
'COPYDATASTRUCT構造体
Public Structure COPYDATASTRUCT
Public dwData As IntPtr '送信するビット値
Public cbData As Int32 'lpDataのバイト数
Public lpData As String '送信するデータへのポインタ(0も可能)
End Structure

Public Const WM_COPYDATA As Int32 = &H4A
Public Const WM_USER As Int32 = &H400

Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)

Select Case m.Msg

Case WM_USER
'数値が送信されて来た
txtInt1.Text = m.WParam.ToString()
txtInt2.Text = m.LParam.ToString()

Case WM_COPYDATA
'文字が送信されて来た
Dim mystr As COPYDATASTRUCT = New COPYDATASTRUCT()
Dim mytype As Type = mystr.GetType()
mystr = CType(m.GetLParam(mytype), COPYDATASTRUCT)
txtMessage.Text = mystr.lpData
End Select
MyBase.WndProc(m)
End Sub
'テキストボックスのクリア
Private Sub butCls_Click(ByVal sender As System.Object, _
ByVal
e As System.EventArgs) Handles butCls.Click
txtMessage.Text = String.Empty
txtInt1.Text = String.Empty
txtInt2.Text = String.Empty
End Sub
End Class


画像ファイル