帮我解决问题 我送他20个qq币(40)

  • 主题发起人 主题发起人 sury9
  • 开始时间 开始时间
S

sury9

Unregistered / Unconfirmed
GUEST, unregistred user!
帮我解决问题 我送他20个qq币,问题是这样的,在地下城与勇士中,我想写个喊话器,下面的代码编译后是一个字“邓”,本来之前直接用字符的,乱码,在其他比如qq聊天窗口 记事本都是正常的,我就想是不是地下城这个游戏和韩国人开发的有关,就进行了中文编码,结果依然是qq正常,游戏乱码。请高手帮我解决。一定送上qq币,如果解决不送,我老婆就是你的,不得好死,我真的头疼几天了。谢谢。下面的代码ahandle是地下城的句柄,由于腾讯特殊保护,一般是取不到的,为了方便大家调试,需要句柄的加我qq 1046496958 ,我发能获取的代码给你。帮帮忙 谢谢各位procedure TForm1.Button1Click(Sender: TObject); var Str: string; ahandle:thandle; i:integer;begin ahandle:=66980; Str:= chr($B5)+chr($CB); // for i:=1 to length(str) do begin PostMessage(aHandle,258,ord(str[1]),0); PostMessage(aHandle,258,ord(str[2]),0); PostMessage(aHandle,258,0,0); PostMessage(aHandle,258,0,0); PostMessage(aHandle,258,0,0); PostMessage(aHandle,258,0,0); // sleep(200); end;
 
刘麻子,如果你看到的话,我用的你的代码测试过,中英文是可以的,但是在这个游戏里面一个不行,乱码
 
给我20个Q币,告诉你解决捷径
 
Str: string;=>widestringStr = '邓';PostMessage(aHandle,258,ord(str[1]),0);//就是一个 '邓'谢谢 给我充吧!~
 
再加30个,一共50个 dstorm的依然是乱码
 
建议你发些英文字符,看看是什么符号,找出它们之间的差值,把这个差值加在你发送的内容上
 
英文没问题 数字 符号都没问题 就中文不行 怪只怪我身在中国 得考虑中文问题
 
把你获得地下城句柄的代码发给我,我试试,Thanksxyzboxhome@sina.com
 
Str: string;=>改成 Str:widestringStr = '邓';PostMessage改成PostMessageW(aHandle,258,ord(str[1]),0)
 
给我一份代码
 
依然没用,难道天下么人才了不?
 
Str:= chr(22909)+chr($CB); 你的 $CB 与 $B5 不是中文的, 给钱给钱。。。。
 
你试一下UTF8编码
 
procedure SendDBCSString2(hFocus: HWND; const sSend: string); // 发送字符var k : integer; ch : byte;begin k := 1; while k <= Length(sSend) do begin ch := byte(sSend[k]); if Windows.IsDBCSLeadByte(ch) then begin Inc(k); postMessage(hFocus, WM_IME_CHAR, MakeWord(byte(sSend[k]), ch), 0); end else postMessage(hFocus, WM_IME_CHAR, word(ch), 0); Inc(k); end;end;procedure TForm1.btn1Click(Sender: TObject);var ahandle: THandle; Str: string;begin ahandle := StrToInt(edt1.Text); Str := edt2.Text; // chr($B5)+chr($CB); SendDBCSString2(ahandle, Str);end;// 我试了一下, 可以发送到 QQ聊天回复框 和 大富翁论坛的回复框, 至于那个游戏的我不玩就没试了~~
 
上面的在 Word 应该程序上没通过~~~, 下面可以procedure SendDBCSString2(hFocus: HWND; const sSend: string); //发送字符var k : integer; ch : byte; w: Word;begin k := 1; while k <= Length(sSend) do begin ch := byte(sSend[k]); if Windows.IsDBCSLeadByte(ch) then begin Inc(k); w := MakeWord(byte(sSend[k]), ch); postMessage(hFocus, WM_CHAR, Hi(w), 0); postMessage(hFocus, WM_CHAR, Lo(w), 0);// postMessage(hFocus, WM_IME_CHAR, MakeWord(byte(sSend[k]), ch), 0); end else postMessage(hFocus, WM_CHAR, word(ch), 0); Inc(k); end;end;procedure TForm1.btn1Click(Sender: TObject);var ahandle: THandle; str: string;begin ahandle := StrToInt(edt1.Text); str := edt2.Text; SendDBCSString2(ahandle, str);end;
 
来自:xiaoyuezz, 时间:2009-12-4 13:41:36, ID:3983018 Str:= chr(22909)+chr($CB); 你的 $CB 与 $B5 不是中文的, 给钱给钱。。。。 搞笑 你自己编译代码测试看看 阿呆
 
liuls 我也是知道的 关键那个游戏是韩国人开发的 高不清楚 就是乱码
 
英文和数字都可以的话,那就是字符集编码的问题了,要和游戏所用的字符集对应。
 
上面的朋友用了widestring,最后却依然ord,发送的还是ASCII编码,估计游戏使用的是Unicode编码,你这样发过去,不乱码才怪。解决办法是发Unicode过去,肯定没错。对你qq币不感兴趣,能帮到你就好。
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部