sendmessage向后台程序发送按键消息,为什么后台收不到???帮我看看哪错了。 ( 积分: 100 )

  • 主题发起人 主题发起人 zhenh
  • 开始时间 开始时间
Z

zhenh

Unregistered / Unconfirmed
GUEST, unregistred user!
var
aps:hwnd;
begin
aps:=findwindow(0,'aa - 记事本');
sendmessage(aps,wm_keydown,$65,0);
sendmessage(aps,wm_keyup,$65,0);
end

后台记事本没反应,是不是我的这$65错了呢,我是要发送按键A,要不该怎么写呢?请高手指点,谢谢了。
 
试试发送WM_CHAR
 
aps:=findwindow(nil,'aa - 记事本');
SendMessage(aps,WM_CHAR,65,0);
A的Ascii 是65 不是$65
 
用WM_CHAR也不行,是不是我哪写错了,有没有例子??
 
这样不行的啊 因为你找到的窗口是记事本的句柄 不是接受字符的窗口的句柄
你怎么不用SetWindowText啊
 
procedure TForm1.Button1Click(Sender: TObject);
var
WinHandle: HWND;
begin
WinHandle:= FindWindow(nil,Pchar('1.txt - 记事本'));
if WinHandle <> 0 then
begin
WinHandle:= GetWindow(WinHandle,GW_CHILD);
SendMessage(WinHandle,wm_char,65,0) ;
end
else
ShowMessage('没有找到窗口');
end;

还可以用SetWindowText()函数 我觉的这个好用
 
var
EditHandle: HWND;
begin
EditHandle := FindWindow(nil, '无标题 - 记事本');
if EditHandle <> 0 then
begin
EditHandle := FindWindowEx(EditHandle, 0, 'Edit', nil);
SendMessage(EditHandle, WM_CHAR, 65, 0);
end;
end;
 
谢谢,可以了。
 
后退
顶部