能力值:
( LV12,RANK:290 )
|
-
-
2 楼
请往下看
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
最初由 WAKU 发布 WM_CHAR不能发送中文
这个说法有问题吧!
一个汉字产生两个WM_CHAR消息而已。
C我不会,我在masm中逐个字节的发到notepad中是没问题的。
|
能力值:
( LV12,RANK:290 )
|
-
-
4 楼
请往下看
|
能力值:
( LV12,RANK:290 )
|
-
-
5 楼
发送中文我想用剪贴版比较好吧
|
能力值:
( 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
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
UNICODE 怎么样?
#include<windows.h>
TCHAR szChar[] = TEXT("中文");
|
能力值:
( LV12,RANK:290 )
|
-
-
8 楼
最初由 ahaisoft 发布 罗云彬的书中有一个向notepad发送字符的代码,英文中文都能成功发送过去。 一个字节一个字节的发就行了,中英没什么区别。
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> _SendtoNotepad proc _lpsz ........
这个例子我也看到了,但是没看到有中文发送?
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
最初由 WAKU 发布 这个例子我也看到了,但是没看到有中文发送?
你定义一个中文字串试下不就知道了?
事实上你用spy++抓下窗口的消息就知道的,汉字不过是连着发了两次wm_char消息而已。
至于楼主那个行不通,因我对C不懂,我猜想上面那个for循环每次取出的应该不是BYTE,估计一次循环取的是WORD。
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
可以发送中文的。
|
能力值:
( 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
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
谢谢各位帮助。。我会了。。。
|
|
|