[DllImport("User32.dll", EntryPoint = "SendMessage")]
private static extern int SendMessage(
IntPtr hWnd, // 信息發往的窗口的句柄
int Msg, // 消息ID
int wParam, // 參數1
string lParam
);
[DllImport("User32.dll", EntryPoint = "SendMessage")]
private static extern int SendMessage2(
IntPtr hWnd, // 信息發往的窗口的句柄
int Msg, // 消息ID
int wParam, // 參數1
IntPtr lParam
);
[DllImport("User32.dll", EntryPoint = "FindWindow")]
private extern static IntPtr FindWindow(string lpClassName, string lpWindowName);
[DllImport("User32.dll", EntryPoint = "FindWindowEx")]
private static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpClassName, string lpWindowName);
private void button4_Click(object sender, EventArgs e)
{
IntPtr hwnd= FindWindow(null, "testForm");
string info = "my info:ΑΒβδγζηθ";
IntPtr pinfo= Marshal.StringToHGlobalAnsi(info);
SendMessage2(hwnd, Form2.USERMESSAGEID, 12, pinfo);
SendMessage(hwnd, Form2.USERMESSAGEID, 12, info);
}
public const int USERMESSAGEID =0x2021;
protected override void WndProc(ref Message m)
{
switch(m.Msg)
{
case USERMESSAGEID:
{
int wparam= m.WParam.ToInt32();
string str = Marshal.PtrToStringAnsi(m.LParam);
break;
}
}
base.WndProc(ref m);
}
[DllImport("User32.dll", EntryPoint = "SendMessage")]
private static extern int SendMessage(
IntPtr hWnd, // 信息發往的窗口的句柄
int Msg, // 消息ID
int wParam, // 參數1
ref My_lParam lParam
);
IntPtr ptr = FindWindow(null, "主界面");
SendMessage(ptr, PublicCs.DefineConst.MYMESSAGE_SCAN_REAGENT, 1, ref m);//發送消息
protected override void DefWndProc(ref Message m)
{
try
{
switch (m.Msg)
{
//掃描試劑條消息處理
case PublicCs.DefineConst.MYMESSAGE_SCAN_REAGENT:
ReagentManager.FrmReagentScan.My_lParam ml_Scan = new ReagentManager.FrmReagentScan.My_lParam();
Type t_Scan = ml_Scan.GetType();
ml_Scan = (ReagentManager.FrmReagentScan.My_lParam)m.GetLParam(t_Scan);
for (int i = 0; i < ml_Scan.iReagent_Place.Count();i++ )
{
if (i_Scan_Reagent_Place[i]==0)
{
i_Scan_Reagent_Place[i] = ml_Scan.iReagent_Place[i];
}
}
#region 根據試劑位選擇掃描試劑架
// 試劑架1
for (int i = 0; i < 10;i++ )
{
if (ml_Scan.iReagent_Place[i]==1)
{
Scann_Reagent(0, ml_Scan.iArm);
break;
}
}
// 試劑架2
for (int i = 0; i < 10; i++)
{
if (ml_Scan.iReagent_Place[10+i] == 1)
{
Scann_Reagent(1, ml_Scan.iArm);
break;
}
}
// 試劑架3
for (int i = 0; i < 10; i++)
{
if (ml_Scan.iReagent_Place[20+i] == 1)
{
Scann_Reagent(2, ml_Scan.iArm);
break;
}