有一个应用程序(不是我写的),其中有一个功能是只要按下键盘的PgUp和PgDn键就可以显示上一个数据或下一个数据。
我现在想写一个程序模似PgDn键让那个应用程序显示下一个数据。
我用sendmessage(HWndCalculator,wm_CLOSE,0,0)能关闭这个应用程序.如下
procedure TForm1.Button1Click(Sender: TObject);
var
HWndCalculator : HWnd;
begin
// find the exist calculator window
HWndCalculator := FindWindow(nil,'广发广州一 - 广发网上股票交易分析系统 V3.55'); // close the exist Calculator
if HWndCalculator <> 0 then
sendmessage(HWndCalculator,wm_keydown,22,0);//pagedown
end;
end.
但是我用SendMessage(HWndCalculator,WM_KEYDOWN,VK_NEXT,0)应用程序却没有反应。如下
procedure TForm1.Button1Click(Sender: TObject);
var
HWndCalculator : HWnd;
begin
// find the exist calculator window
HWndCalculator := FindWindow(nil,'广发广州一 - 广发网上股票交易分析系统 V3.55'); // close the exist Calculator
if HWndCalculator <> 0 then
sendmessage(HWndCalculator,wm_keydown,vk_next,0);//pagedown
end;
end.请问如何解决这个问题
我现在想写一个程序模似PgDn键让那个应用程序显示下一个数据。
我用sendmessage(HWndCalculator,wm_CLOSE,0,0)能关闭这个应用程序.如下
procedure TForm1.Button1Click(Sender: TObject);
var
HWndCalculator : HWnd;
begin
// find the exist calculator window
HWndCalculator := FindWindow(nil,'广发广州一 - 广发网上股票交易分析系统 V3.55'); // close the exist Calculator
if HWndCalculator <> 0 then
sendmessage(HWndCalculator,wm_keydown,22,0);//pagedown
end;
end.
但是我用SendMessage(HWndCalculator,WM_KEYDOWN,VK_NEXT,0)应用程序却没有反应。如下
procedure TForm1.Button1Click(Sender: TObject);
var
HWndCalculator : HWnd;
begin
// find the exist calculator window
HWndCalculator := FindWindow(nil,'广发广州一 - 广发网上股票交易分析系统 V3.55'); // close the exist Calculator
if HWndCalculator <> 0 then
sendmessage(HWndCalculator,wm_keydown,vk_next,0);//pagedown
end;
end.请问如何解决这个问题
WM_KEYUP
发两次试试
procedure TForm1.Button1Click(Sender: TObject);
var
HWndCalculator : HWnd;
begin
// find the exist calculator window
HWndCalculator := FindWindow(nil,'广发广州一 - 广发网上股票交易分析系统 V3.55'); // close the exist Calculator
if HWndCalculator <> 0 then
begin
PostMessage(HWndCalculator,wm_keyup,vk_next,0);
PostMessage(HWndCalculator,wm_keydown,vk_next,0);//pagedown
PostMessage(HWndCalculator,wm_keydown,vk_next,0);
PostMessage(HWndCalculator,wm_keyup,vk_next,0);
PostMessage(HWndCalculator,wm_keyup,vk_next,0);end;
也不行........
苦.
英雄!帮一忙
PostMessage(HWndCalculator,wm_keydown,vk_next,0);
PostMessage(HWndCalculator,wm_keyup,vk_next,0);
就行了, 另外接收这个键是不是这个窗口的子窗口(子控件)呀
还有就是,这个控件有没有自己的处理VK_NEXT键被按下的消息处理函数(其实应该说是WM_KEYDOWN消息处理函数)。如果没有,当然不会有反应
PostMessage(HWnd,wm_keyup,vk_next,0);
直接发给父窗口应该就可!!