求QT给C#发消息的方法?

louis_liux 2016-08-10 12:39:09
再QT中,这样写的
HWND hwnd = FindWindow(NULL,L"Form1");
SendMessage(hwnd,WM_USER, NULL, (LPARAM)"msg");

C#代码
protected override void DefWndProc(ref System.Windows.Forms.Message m)
{
switch (m.Msg)
{
//接收CopyData消息,读取发送过来的数据
case WM_USER:
System.Windows.Forms.MessageBox.Show("strData", "Test");

break;
default:
base.DefWndProc(ref m);
break;
}
}

为啥收不到QT发过来的消息呢,QT查找C#标题的名字也找不到,求大神啊
...全文
285 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
louis_liux 2016-08-21
  • 打赏
  • 举报
回复
好使了,用的windows消息传递搞定的,谢谢各位大神们
Little柯南 2016-08-15
  • 打赏
  • 举报
回复
话说,你的程序使用的是MFC的机制,windows SDK API的hander,Qt没有这种机制; 再者,你需要了解进程间通信方式,如果说Qt的话,主要有localSocket与内存共享,当然使用QTcpSocket或者QUdpSocket也是可以的,你传输数据把你自己的防火墙关了就可以,不关的话你需要确认是自己行为让其做网络传输,这根本就不是问题; 同时,如果是文本数据,你甚至可以先讲数据写进剪切板,然后由另一个程序再读剪切板就行了,这也是进程间通信的一种潜在方式。
louis_liux 2016-08-13
  • 打赏
  • 举报
回复
引用 5 楼 aditboy 的回复:
使用WM_COPYDATA?
这个也用了,不好使啊
louis_liux 2016-08-13
  • 打赏
  • 举报
回复
引用 4 楼 tony2278 的回复:
socket通信
这种需要关闭防火墙吧
louis_liux 2016-08-13
  • 打赏
  • 举报
回复
引用 2 楼 u010111033 的回复:
Qt程序与C#是两个不同的程序,也就是2个不同的进程。明白了这点就方便了,那么采取进程间通信的方式: 1、内存共享(应用于一台机子上的情况); 2、socket通信,一台机子的话你采用QTcpSocket或者QUdpSocket都行,发送过去C#的程序确认
第二种方式是不是纯在一个防火墙的问题呢,第一种方式用两种语言用共享内存的方式可以吗? 尝试过吗?哥们
aditboy 2016-08-12
  • 打赏
  • 举报
回复
使用WM_COPYDATA?
tony2278 2016-08-11
  • 打赏
  • 举报
回复
socket通信
Little柯南 2016-08-10
  • 打赏
  • 举报
回复
这里不建议你直接使用win32_API,可操作性差,你使用MFC或者Qt库,几句就搞定,使用Win32_API你会感到半天没写完
Little柯南 2016-08-10
  • 打赏
  • 举报
回复
Qt程序与C#是两个不同的程序,也就是2个不同的进程。明白了这点就方便了,那么采取进程间通信的方式: 1、内存共享(应用于一台机子上的情况); 2、socket通信,一台机子的话你采用QTcpSocket或者QUdpSocket都行,发送过去C#的程序确认
wuqing1220 2016-08-10
  • 打赏
  • 举报
回复
直接发送无法接收可以考虑 将消息发送或者接收的部分封装成库函数调用,这样就可以实现不同语言之间的兼容问题. 例如将SendMessage或PostMessage封装下.然后再提供过C#程序调用

16,215

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧