做进程间通讯,但是有一个对话框采用的是无标题栏风格。FindWindow(NULL,"");不行,加空格也不行。
怎么解决啊各位?
尽量不要说采用内存映射文件或者命名通道的话,就是想解决这个问题,而且只需要传一个整形参数过去就好,用消息最合适。

解决方案 »

  1.   

    通过它的类名,FindWindow第一个参数就是.类名可以通过spy++获得.
      

  2.   

    呵,虽然此窗口没有标题但一样可以些这个对话框的OnInitDialog中SetWindowText
    SetWindowText("你试试行不行?");....FindWindow(NULL,"你试试行不行?");
      

  3.   

    两个程序都是自己写的,那么说就是说已经可以知道了?类名指哪个类?对话框所对应的吧?FindWindow(CMyDlg,"");?这个意思吗?
      

  4.   

    用广播消息试试吧PostMessage(HWND_BROADCAST , WM_YOURMESSAGE , (WPARAM)yourparameter , 0);
      

  5.   

    ::PostMessage(HWND_BROADCAST,WM_MYMESSAGE,50,3);也不行,连本窗体都没有收到
      

  6.   

    CWnd  *hWnd=NULL;
    hWnd=CWnd::FindWindow(CAdEditDlg,"000");
    PostMessage(WM_MYMESSAGE,50,0);
    用的类名,可报错:
    E:\adeditsrc\AdEdit\AdEditDlg.cpp(695) : error C2275: 'CAdEditDlg' : illegal use of this type as an expression
      

  7.   

    你看我的代码
    CTharkDlg::OnInitDialog()
    {
    SetWindowText("硬盘录像系统");
    }...客户端CWnd* pWnd=CWnd::FindWindow(NULL,"硬盘录像系统");//HWND hWnd=::FindWindow(_TEXT("#32770"),"硬盘录像系统");
    都成功
      

  8.   

    不好意思,是我刚才搞错了,呵呵,我在没有发贴的时候试了这个方法,不过我改的忘记了,FindWindow中的名字写的不一致了,谢谢
    解决
      

  9.   

    类名是一个字符串,要括在引号中,而且这个类名要通过spy++取得.
      

  10.   

    我也不知道 FindWindow(_TEXT("#32770"),"硬盘录像系统");
    那儿为何是"#32770",我是从《Windows核心编程》第8页上抄的。
      

  11.   

    那以后我就从这里抄了。
    顺便问一句,DentistryDoctor(牙科医生) 难道做监控?也?
      

  12.   

    谢谢 howtotell(从何谈起) ,知道类名是怎么回事了。能分析下为什么HWND_BROADCAST 不行吗?难道又是我的笔误?
      

  13.   

    做监控的真多啊,呵呵,行情还可以哦。我也是,好象在csdn有很多。
      

  14.   

    你看看你处理消息的地方对不对!
    HWND_BROADCAST 
    The message is posted to all top-level windows in the system, including disabled or invisible unowned windows, overlapped windows, and pop-up windows. The message is not posted to child windows.
      

  15.   

    TEXT("#32770")对应的对应就是CDialog的class name, 很奇怪MS会有这个名字,不过,每次在查找dialog的是窗口时候,都是采用的这个字符串。
      

  16.   

    那还怎么区分是哪个窗口呢?如果没有指定后面的参数的话。不是和NULL一样吗?