SendMessage 获取文本消息

xengine-qyt 2009-09-26 02:39:14
extern "C" _declspec(dllexport) void __stdcall GetWndMessageA(HWND hWnd,LPCTSTR SaveText)//这第二个参数必须是 LPCTSTR
{
char ch1[100];
::SendMessageA(hWnd,WM_GETTEXT,100,(LPARAM)ch1);
strcpy_s((char *)SaveText,100,ch1);
}
是一个DLL 一调用这个模块程序就崩溃。 整了好久都不回。我们要如何把这个 ch1 赋值给 SaveText 这个变量并且让调用的程序取出他的值啊?

知道的麻烦说下!
...全文
145 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
xengine-qyt 2009-09-27
  • 打赏
  • 举报
回复
能改也不会拖这么久
gotooker 2009-09-27
  • 打赏
  • 举报
回复
LPCTSTR SaveText 你让别人把字符串考到这个缓存里,还不让别人动你的缓存,搞笑的啊,肯定要改类型的啊,协调下就好了,怎么可能连个类型都不让改啊
xengine-qyt 2009-09-26
  • 打赏
  • 举报
回复
静态不行

SaveText = (LPCTSTR)(char*)&ch1; 这个也不行!
zwfgdlc 2009-09-26
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 aaadddzxc 的回复:]
这样?  SaveText = (LPCTSTR)ch1;  还是不行
[/Quote]
ch1是过程级变量,函数执行完会销毁的。
除非你加前缀 static char[100] ch1.
feilinhe 2009-09-26
  • 打赏
  • 举报
回复
SaveText = (LPCTSTR)(char*)&ch1; 试试
xengine-qyt 2009-09-26
  • 打赏
  • 举报
回复
extern "C" _declspec(dllexport) void __stdcall GetWndMessageA(HWND hWnd,LPCTSTR &SaveText)
{
char ch1[10];
//strcpy_s((char *)SaveText,100,ch1);
::SendMessageA(hWnd,WM_GETTEXT,10,(LPARAM)ch1);
SaveText = (LPCTSTR)&ch1;
}
用取地址 或者 指针指向其 ch1 的地址 都不行 ,崩溃。。。

我山穷水尽了。。。 关键是 他的第二个参数必须是 LPCTSTR 这种类型的!
MoXiaoRab 2009-09-26
  • 打赏
  • 举报
回复
如果你的字符集是ANSI,直接让SaveText = ch1,让它指向ch1的内存空间

调试下看看
aofeng2009 2009-09-26
  • 打赏
  • 举报
回复
是否定义SaveText时有问题,是否有足够的空间支持。
使用strcpy_s函数会抛出一个异常,也可能由于非法内存访问程序挂掉。供参考~
xengine-qyt 2009-09-26
  • 打赏
  • 举报
回复
我也想这样 不过不支持!
OenAuth.Core 2009-09-26
  • 打赏
  • 举报
回复
你直接把ch1作为参数传进去不就OK?
xengine-qyt 2009-09-26
  • 打赏
  • 举报
回复
取出来的是空白!
xengine-qyt 2009-09-26
  • 打赏
  • 举报
回复
这样? SaveText = (LPCTSTR)ch1; 还是不行
MoXiaoRab 2009-09-26
  • 打赏
  • 举报
回复
直接SaveText=ch1
fox000002 2009-09-26
  • 打赏
  • 举报
回复
LPCTSTR 就是 const char *

怎么能用 strcpy

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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