首页
社区
课程
招聘
『求助 急』怎么发送中文字符(非常感谢)?
发表于: 2006-7-27 17:31 6457

『求助 急』怎么发送中文字符(非常感谢)?

2006-7-27 17:31
6457

我的部分如下:

char ch[]="给记事本发送中文字符";
for(int i=0;i<lstrlen(ch),i++)
{
   PostMessage(hNotepad,WM_CHAR,(LONG)ch,1)
}

怎么也行不通,肯请高手帮帮

小弟非常感谢了!!!!!


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 7
支持
分享
最新回复 (11)
雪    币: 179
活跃值: (131)
能力值: ( LV12,RANK:290 )
在线值:
发帖
回帖
粉丝
2
请往下看
2006-7-27 18:09
0
雪    币: 218
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
最初由 WAKU 发布
WM_CHAR不能发送中文


这个说法有问题吧!
一个汉字产生两个WM_CHAR消息而已。
C我不会,我在masm中逐个字节的发到notepad中是没问题的。
2006-7-30 00:14
0
雪    币: 179
活跃值: (131)
能力值: ( LV12,RANK:290 )
在线值:
发帖
回帖
粉丝
4
请往下看
2006-7-30 14:16
0
雪    币: 179
活跃值: (131)
能力值: ( LV12,RANK:290 )
在线值:
发帖
回帖
粉丝
5
发送中文我想用剪贴版比较好吧
2006-7-30 14:25
0
雪    币: 218
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
罗云彬的书中有一个向notepad发送字符的代码,英文中文都能成功发送过去。
一个字节一个字节的发就行了,中英没什么区别。

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_SendtoNotepad        proc        _lpsz
                local        @hWinNotepad

                pushad
                invoke        FindWindow,addr szDestClass,NULL
                .if        eax
                        mov        ecx,eax
                        invoke        ChildWindowFromPoint,ecx,20,20
                .endif
                .if        eax
                        mov        @hWinNotepad,eax
                        mov        esi,_lpsz
                        @@:
                        lodsb
                        or        al,al
                        jz        @F
                        movzx        eax,al
                        invoke        PostMessage,@hWinNotepad,WM_CHAR,eax,1
                        jmp        @B
                        @@:
                .endif
                popad
                ret

_SendtoNotepad        endp
2006-7-30 22:33
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
UNICODE 怎么样?
#include<windows.h>
TCHAR szChar[] = TEXT("中文");
2006-7-30 23:11
0
雪    币: 179
活跃值: (131)
能力值: ( LV12,RANK:290 )
在线值:
发帖
回帖
粉丝
8
最初由 ahaisoft 发布
罗云彬的书中有一个向notepad发送字符的代码,英文中文都能成功发送过去。
一个字节一个字节的发就行了,中英没什么区别。

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_SendtoNotepad proc _lpsz
........


这个例子我也看到了,但是没看到有中文发送?
2006-7-30 23:38
0
雪    币: 218
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
最初由 WAKU 发布
这个例子我也看到了,但是没看到有中文发送?


你定义一个中文字串试下不就知道了?
事实上你用spy++抓下窗口的消息就知道的,汉字不过是连着发了两次wm_char消息而已。
至于楼主那个行不通,因我对C不懂,我猜想上面那个for循环每次取出的应该不是BYTE,估计一次循环取的是WORD。
2006-7-31 10:01
0
雪    币: 117
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
可以发送中文的。
2006-7-31 11:11
0
雪    币: 179
活跃值: (131)
能力值: ( LV12,RANK:290 )
在线值:
发帖
回帖
粉丝
11
知道了,楼主那个失败的原因是因为WM_CHAR使用的UNICODE编码,ANSI格式的中文字符串会发送失败,这样天天睡也不用担心了

C发送中文字串源码如下:
#include <Windows.h>

void main()
{
        TCHAR* str = L"中文字串测试";
        HWND hNotepad = ::FindWindow(L"Notepad", NULL);
        HWND hEdit = NULL;
        POINT pt;

        if (hNotepad)
        {
                pt.x = 20; pt.y = 20;
                hEdit = ::ChildWindowFromPoint(hNotepad, pt);
                for (int i = 0; i < lstrlen(str); i++)
                {
                        ::PostMessage(hEdit, WM_CHAR, str[i], 1);
                }
        }
        else
        {
                MessageBox(NULL, L"没找到记事本窗口", NULL, MB_ICONINFORMATION);
        }
}
最后谢谢ahaisoft
2006-7-31 11:25
0
雪    币: 157
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
谢谢各位帮助。。我会了。。。
2006-8-18 10:45
0
游客
登录 | 注册 方可回帖
返回
//