一个关于窗口句柄操作按键无效的有关问题。请大家快来帮帮忙
一个关于窗口句柄操作按键无效的问题。请大家快来帮帮忙。
代码如下:
procedure TForm1.Button1Click(Sender: TObject);
var
pTel : PChar;
begin
//输号码窗口
hDial := findwindow( 'TFrmPBarDialPanel ', '拨出... ');
//外拨等待窗口
hResp := findwindow( 'TFrmPBarWaitResponse ', '拨出... ');
if hDial = 0 then showmessage( '未发现拨出窗口 ')
else
begin
HTelEdit := FindWindowEx(hDial, 0, 'TComboBox ', nil);
HCallButton:= FindWindowEx(hDial, 0, 'TMusicBtn ', '拨出 ');
if HCallButton=0 then
begin
showmessage( '未发现拨出按钮 ');
exit;
end;
pTel := stralloc(8*sizeof(Char)) ;
strpcopy(pTel, '88888888 ');
SendMessage(HTelEdit, WM_SETTEXT, 0, Integer(pTel));
POSTMESSAGE(HCallButton, WM_LBUTTONDOWN, 0, 0);
POSTMESSAGE(HCallButton, WM_LBUTTONUP, 0, 0);
end;
end;
可是我按了“拨出”键后,根本不响应开始拨出电话。
可是如果我把“拨出...”的窗体先激活再按Button就可以拨出!我感觉好像
窗体要先做一个什么操作就是找不到怎么做。我给窗体发送了WM_SETFOCUS、WM_ENABLE、WM_ACTIVATE都没用。请高手帮帮忙。
------解决方案--------------------
SendMessage(HTelEdit, WM_SETTEXT, 0, Integer(pTel));
SendMessage(ComboBox1.Handle, CN_COMMAND, MakeLong(0, CBN_EDITCHANGE), 0); // < < <触发OnChange事件
POSTMESSAGE(HCallButton, WM_LBUTTONDOWN, 0, 0);
POSTMESSAGE(HCallButton, WM_LBUTTONUP, 0, 0);
------解决方案--------------------
做了个程序模拟,没问题。是不是 "拨出 "按钮中有其他判断啊。
------解决方案--------------------
对按钮发送点击事件,采用这个方法看看呢?
SendMessage(HCallButton,BM_CLICK,0,0)
代码如下:
procedure TForm1.Button1Click(Sender: TObject);
var
pTel : PChar;
begin
//输号码窗口
hDial := findwindow( 'TFrmPBarDialPanel ', '拨出... ');
//外拨等待窗口
hResp := findwindow( 'TFrmPBarWaitResponse ', '拨出... ');
if hDial = 0 then showmessage( '未发现拨出窗口 ')
else
begin
HTelEdit := FindWindowEx(hDial, 0, 'TComboBox ', nil);
HCallButton:= FindWindowEx(hDial, 0, 'TMusicBtn ', '拨出 ');
if HCallButton=0 then
begin
showmessage( '未发现拨出按钮 ');
exit;
end;
pTel := stralloc(8*sizeof(Char)) ;
strpcopy(pTel, '88888888 ');
SendMessage(HTelEdit, WM_SETTEXT, 0, Integer(pTel));
POSTMESSAGE(HCallButton, WM_LBUTTONDOWN, 0, 0);
POSTMESSAGE(HCallButton, WM_LBUTTONUP, 0, 0);
end;
end;
可是我按了“拨出”键后,根本不响应开始拨出电话。
可是如果我把“拨出...”的窗体先激活再按Button就可以拨出!我感觉好像
窗体要先做一个什么操作就是找不到怎么做。我给窗体发送了WM_SETFOCUS、WM_ENABLE、WM_ACTIVATE都没用。请高手帮帮忙。
------解决方案--------------------
SendMessage(HTelEdit, WM_SETTEXT, 0, Integer(pTel));
SendMessage(ComboBox1.Handle, CN_COMMAND, MakeLong(0, CBN_EDITCHANGE), 0); // < < <触发OnChange事件
POSTMESSAGE(HCallButton, WM_LBUTTONDOWN, 0, 0);
POSTMESSAGE(HCallButton, WM_LBUTTONUP, 0, 0);
------解决方案--------------------
做了个程序模拟,没问题。是不是 "拨出 "按钮中有其他判断啊。
------解决方案--------------------
对按钮发送点击事件,采用这个方法看看呢?
SendMessage(HCallButton,BM_CLICK,0,0)