D7代码到XE后无效

myyebin 2013-11-23 03:40:47
procedure TForm1.btn1Click(Sender: TObject);
var
h:HWND;
cmd:string;
cpd : COPYDATASTRUCT;
begin
h := FindWindow('ACG!',nil);
cmd := 'connect 61.152.242.114:27014';
cpd.cbData := Length(cmd)+1;
cpd.lpData := pchar(cmd);
SendMessage(h,WM_COPYDATA,$12,Lparam(@cpd));
end;

这个代码在D7下是能编译也有效果,到XE后能编译但是执行后没有效果不知道问题出在那里
...全文
132 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
myyebin 2013-11-23
  • 打赏
  • 举报
回复
使用 cpd.lpData := PChar(AnsiString(cmd)); 可以了谢谢楼上的。
sololie 2013-11-23
  • 打赏
  • 举报
回复
或者说如果ACG这个程序不是你写的,你不能修改它,比如说ACG这个程序是使用ansi字符的, 那么你发送消息这边也使用ansi就得了 var cmd:ansistring; .... cpd.lpData := pansichar(cmd);
sololie 2013-11-23
  • 打赏
  • 举报
回复
接收WM_COPYDATA的那头,即ACG这个窗口处,接收这个数据也得俺WideString(WideChar)来处理
sololie 2013-11-23
  • 打赏
  • 举报
回复
也得看你接收WM_COPYDATA消息处处的代码是怎么写的

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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