小编Jam*_*DEV的帖子

C#到C++进程,WM_COPYDATA用字符串传递struct

从ac#program我想使用带有SendMessage的WM_COPYDATA与传统的c ++/cli MFC应用程序进行通信.

我想传递一个包含字符串对象的托管结构.

我可以找到c ++应用程序的句柄,以便与SendMessage一起使用.

我不知道的是如何在另一端编组和读取结构及其字符串.特别是因为它包含非blittables.

人们认为这是可行的吗?我会继续努力,但会很高兴有人做过这样的事情告诉我它是否会起作用.

这是一些演示代码,如果它是一个c ++/cli程序,并不难让它工作.但是,我希望它在.Net类库中,以便可以轻松地重复使用.

//Quick demonstation code only, not correctly styled
int WINAPI WinMain(HINSTANCE hInstance,
                 HINSTANCE hPrevInstance,
                 LPSTR lpCmdLine,
                 int nCmdShow)
{               
    struct MessageInfo
    {
        int     nVersion;
        char   szTest[ 10 ];        
    };

    MessageInfo sMessageInfo;

    sMessageInfo.nVersion = 100;
    strcpy( sMessageInfo.szTest, "TEST");   

    COPYDATASTRUCT CDS;

    CDS.dwData = 1; //just for test
    CDS.cbData = sizeof( sMessageInfo );
    CDS.lpData = &sMessageInfo;

    //find running processes and send them a message
    //can't just search for "MYAPP.exe" as will be called "MYAPP.exe …
Run Code Online (Sandbox Code Playgroud)

c# interop c++-cli marshalling wm-copydata

10
推荐指数
1
解决办法
8897
查看次数

标签 统计

c# ×1

c++-cli ×1

interop ×1

marshalling ×1

wm-copydata ×1