首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

一个关于窗口句柄操作按键无效的有关问题。请大家快来帮帮忙

2012-02-12 
一个关于窗口句柄操作按键无效的问题。请大家快来帮帮忙。代码如下:procedureTForm1.Button1Click(Sender:TO

一个关于窗口句柄操作按键无效的问题。请大家快来帮帮忙。
代码如下:
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)

热点排行