台灣最大程式設計社群網站
線上人數
1392
 
會員總數:246037
討論主題:189624
歡迎您免費加入會員
討論區列表 >> 其他語言 >> BCB6.0程式如何與C#.net程式做資料交換
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
BCB6.0程式如何與C#.net程式做資料交換
價值 : 100 QP  點閱數:188 回應數:5
樓主

PinPin
門外漢
0 32
583 22
發送站內信

請問各位大大,BCB6.0程式如何與C#.net程式做資料交換? 謝謝


搜尋相關Tags的文章: [ BCB6.0 ] , [ 資料交換 ] ,
本篇文章發表於2020-06-13 12:20
1樓
回應

P陳
檢舉此回應
不知您要的是什麼? 用資料庫交換即可
本篇文章回覆於2020-06-13 13:28
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

PinPin
檢舉此回應
大大你好,有更簡單的方式嗎? 有範例嗎? 謝謝
本篇文章回覆於2020-06-13 14:05
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

P陳
檢舉此回應
你先把題目說清楚,這樣沒有人有辦法給範例的
最好將你寫的程式PO上來
本篇文章回覆於2020-06-13 16:53
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
回應

香帥
檢舉此回應
一般是編成Dll相互調用
例如參考
https://www.cnblogs.com/songr/p/5426439.html
本篇文章回覆於2020-06-13 22:05
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
作者回應

PinPin
檢舉此回應
各位大大不好意思,我今天使用SendMessage function測試, C# SendMessage to C#, BCB SendMessage to BCB 及 BCB SendMessage to C#沒都問題, 但C# SendMessage to BCB一直無法傳過去,請各大大幫忙了,謝謝
====================================================
BCB6 接收程式

(Unit2.h)
void __fastcall WMCopyData(TMessage &Message );
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(WM_COPYDATA, TMessage, WMCopyData)
END_MESSAGE_MAP(TForm)

(Unit.cpp) ==> 完全不會進到 WMCopyData 內
struct MyStruct
{
char szChar[255];
int iInt;
};

void __fastcall TForm2::WMCopyData(TMessage &Message)
{
COPYDATASTRUCT *CopyData = (COPYDATASTRUCT*) (Message.LParam);

MyStruct ms;
CopyMemory(&ms, CopyData->lpData, CopyData->cbData);
Memo1->Lines->Add(ms.szChar);
}
=======================================================
C# 傳送程式

[DllImport("user32.dll")]
public static extern IntPtr FindWindow(string lpClassName, String lpWindowName);
[DllImport("user32.dll")]
public static extern long SendMessage(IntPtr hWnd, uint Msg, uint wParam, ref COPYDATASTRUCT lParam);

[StructLayout(LayoutKind.Sequential)]
public struct COPYDATASTRUCT
{
public IntPtr dwData;
public int cbData;
public IntPtr lpData;
}

public uint WM_COPYDATA = 0x004A;

private void button1_Click(object sender, EventArgs e)
{
IntPtr WindowToFind = FindWindow(null, "Form2");
String strSend = textBox1.Text;
IntPtr ptr = Marshal.StringToHGlobalAnsi(strSend);
COPYDATASTRUCT cds = new COPYDATASTRUCT();
cds.dwData = IntPtr.Zero;
cds.cbData = strSend.Length;
cds.lpData = ptr;

SendMessage(WindowToFind, WM_COPYDATA, 0, ref cds);
Marshal.FreeHGlobal(ptr);
}
本篇文章回覆於2020-06-14 00:58
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.