从本机代码使用SendMessage返回字符串 [英] Return string using SendMessage from native code

查看:94
本文介绍了从本机代码使用SendMessage返回字符串的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好,

在C#系统服务中,我需要通过SendMessage()API调用从MFC主机获取一些字符串

窗口。我设法发送消息,但是可以

找不到将字符串返回到C#app的方法。

是否可以从返回值接收字符串返回值,wparam

或lparam?


如果有人这样做,请发布示例,


我会非常感激,

罗马

解决方案

罗马,


是的,它是。您可以将参数(lParam或wParam)声明为

StringBuilder实例(因为我假设MFC代码只写入已经分配的
内存。如果是

声明SendMessage API。


希望这会有所帮助。

-

- Nicholas Paldino [.NET / C#MVP]

- mv*@spam.guard .caspershouse.com


< mu ****** @ hotmail.com>在消息中写道

news:11 ********************** @ g49g2000cwa.googlegr oups.com ...

大家好,

在C#系统服务中,我需要通过SendMessage()API调用从MFC主机窗口获取一些字符串。我设法发送消息,但是无法找到将字符串返回到C#app的方法。
是否可以从C#中返回字符串返回值,wparam
或lparam?

如果有人这样做,请发布示例,

我将不胜感激,
罗马



< blockquote>谢谢,为了快速响应,

实际上我是这样做的:

C#side

StringBuilder sb = new StringBuilder(256);

SendMessage(process.MainWindowHandle,WM_GET_AUTH_MEMBER,0,sb);


C ++方

CString member =" SomeString" ;

strcpy((char *)lParam,member.GetBuffer());


然后在C#方面sb尚未更改

有什么想法吗?

谢谢


您对SendMessage的声明是什么?

- -

- Nicholas Paldino [.NET / C#MVP]

- mv * @ spam.gua rd.caspershouse.com


< mu ****** @ hotmail.com>在消息中写道

news:11 ********************** @ g14g2000cwa.googlegr oups.com ...

谢谢,为了快速回复,
实际上我是这样做的:
C#side
StringBuilder sb = new StringBuilder(256);
SendMessage(process.MainWindowHandle, WM_GET_AUTH_MEMBER,0,sb);

C ++方
CString成员=" SomeString" ;;
strcpy((char *)lParam,member.GetBuffer());

那么在C#方面sb还没有改变
有什么想法吗?
谢谢



Hi all,

In C# system service I need to get some string from MFC mainframe
window by SendMessage() API call. I managed to send message, but can
not find the way to return string to C# app.
Is that possible to receive string back in C# from return value, wparam
or lparam?

Please if someone did it post the example,

I would greatly appreciate,
Roman

解决方案

Roman,

Yes, it is. You can declare the parameter (lParam or wParam) as a
StringBuilder instance (since I assume that the MFC code is only writing to
memory that is already allocated. If it is not, then shame on it) when
declaring the SendMessage API.

Hope this helps.
--
- Nicholas Paldino [.NET/C# MVP]
- mv*@spam.guard.caspershouse.com

<mu******@hotmail.com> wrote in message
news:11**********************@g49g2000cwa.googlegr oups.com...

Hi all,

In C# system service I need to get some string from MFC mainframe
window by SendMessage() API call. I managed to send message, but can
not find the way to return string to C# app.
Is that possible to receive string back in C# from return value, wparam
or lparam?

Please if someone did it post the example,

I would greatly appreciate,
Roman



Thanks, for quick response,
actually I did it like this:
C# side
StringBuilder sb = new StringBuilder(256);
SendMessage(process.MainWindowHandle, WM_GET_AUTH_MEMBER, 0, sb);

C++ side
CString member = "SomeString";
strcpy((char*)lParam, member.GetBuffer());

Then on C# side sb has not been changed
Any idea ?
Thanks


What is your declaration of SendMessage?
--
- Nicholas Paldino [.NET/C# MVP]
- mv*@spam.guard.caspershouse.com

<mu******@hotmail.com> wrote in message
news:11**********************@g14g2000cwa.googlegr oups.com...

Thanks, for quick response,
actually I did it like this:
C# side
StringBuilder sb = new StringBuilder(256);
SendMessage(process.MainWindowHandle, WM_GET_AUTH_MEMBER, 0, sb);

C++ side
CString member = "SomeString";
strcpy((char*)lParam, member.GetBuffer());

Then on C# side sb has not been changed
Any idea ?
Thanks



这篇关于从本机代码使用SendMessage返回字符串的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆