如何对其他程序中的系统对话框的控制?目的是写一个程序A来控制程序B
B程序是应用程序,没有源代码,只能用VC找到个控件的ID
B程序是基于单文档的程序
用A程序来控制B程序中的"打开"和"另存为"菜单
可是"打开"和"另存为"菜单是系统对话框
无法找到上面控件的ID
,就没法发送命令!可以用FindWindow找到该程序的句柄
用SendMessage发送消息

解决方案 »

  1.   

    CView *sWnd = (CView *)FindWindow(NULL,"FLY");
    if(sWnd==NULL)
    {
    MessageBox("请打开FLY WC-OML300工具");
    }
    else
    {
    sWnd->SendMessage(WM_COMMAND,32888);//ID是32888胡写的
    }
      

  2.   

    你的B程序能确认是vc写得吗?可以尝试用vc把那个B程序当成资源文件打开,然后就可以看到里面所有的资源了,包括对话框、菜单、字符串之类的了1. 打开vc,选择菜单【file】->【Open】,弹出文件选择对话框2. 切换到你的b程序所在目录,在对话框的【文件类型】下拉框选择所有文件 All Files, 【Open As】下拉框选择Resources,然后就可以看到你的B.exe了,选中并打开3. 在新弹出的资源框中找到Menu一项,你需要的ID就在里面
      

  3.   


    GetWindowLong(hWnd, GWL_ID)
      

  4.   

    以前我写过一个驱动安装程序,在安装过程中系统会自动弹出一个对话框,要用户确认,当然我们想自动地去帮助用户点确认,于是在安装过程中就轮番地去找那个窗口,用FindWindowEx,找到之后再找它上面的一个button,最后发个BM_CLICK楼主的方法是没问题的。那时候我是通过窗口类和标题去查找的。供参考。