C# sendmessage怎么向C++编译的程序发消息

publicconstintWM_SETTEXT=0x0C;[DllImport("User32.dll",EntryPoint="SendMessage")]priva... public const int WM_SETTEXT = 0x0C;
[DllImport("User32.dll", EntryPoint = "SendMessage")]
private static extern int SendMessage(
int hWnd, // handle to destination window
int Msg, // message
int wParam, // first message parameter
string lParam
// int lParam // second message parameter

);
private static int HdForm = 0;//窗体句柄
private static int HdText = 0;//文本框句柄
static void Main(string[] args)
{
HdForm = FindWindow("#3270", "DMUnms");
HdText = FindWindowEx(HdForm, 0, "Edit", "");
int hwdText = SendMessage(HdText, WM_SETTEXT, 0, "你好");
Console.ReadKey();
}
//用Spy++查看句柄是正确的,为什么消息发送失败呢,我用C#做了一个简单的窗口做测试,是成功的,说明语法没有错误,那么应该是参数有错,谁能教教
展开
 我来答
peacexf
2012-11-26 · TA获得超过293个赞
知道小有建树答主
回答量:476
采纳率:100%
帮助的人:409万
展开全部
你这里的"你好"字符串是托管代码管理的内存空间,c++不能访问托管空间的,需要复制到非托管的
Marshall用这个类有托管和非托管的内容转化。
追问
[MarshalAs(UnmanagedType.LPStr)] string IParam 是这样改么??
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式