我想编一个东西,让其它的程序都能在它的窗口中运行,类似于《让你的泡泡在窗口中运行》(不过这个做的不太好),哪位大侠能给个明确思路?
如果已经有现成的程序,那就更好了,还请您告诉我,谢谢!

解决方案 »

  1.   

    我有一个模拟 Windows 桌面、开始菜单和任务栏的东东,不知道是不是你需要的那一种。
      

  2.   

    怎么搞?是不是用SetParent函数?
      

  3.   

    needways(needways) 能把你的东西贴出来吗?
    谢谢!
      

  4.   

    用EnumWindow枚举所有主窗口句柄,并在枚举时用SetParent()将它们的父亲设成你的程序。
      

  5.   

    zkxz,楼上的说法是不是真的可行?我也需要这样的解决方法。关注。
      

  6.   

    我的程序很大啊。因为我原来实现的功能就是要跟 Windows 一样,支持窗口创建与删除时自动从任务栏添加或删除等。
      

  7.   

    zkxz() 
    能说详细点吗?最好是能有代码
    谢谢!
      

  8.   

    不光是SetParent,估计你还得挂一堆函数钩子,因为很有一些程序会检查顶级的父窗口…………
      

  9.   

    void CMyDlg::OnButton() 
    {
    // TODO: Add your control notification handler code here
    ::EnumWindows(ListWindow,LPARAM(AfxGetMainWnd()));
    }BOOL CALLBACK CMyDlg::ListWindow(HWND hWnd, LPARAM lParam)
    {
    BOOL bRetVal=TRUE;
    CMyDlg *dlg=(CMyDlg*)lParam; if(hWnd==dlg->GetSafeHwnd())
    {
    //This Window
    }
    else if(::GetParent(hWnd)!=NULL)
    {
    //Not Main Window
    }
    else if(::GetWindowLong(hWnd,GWL_EXSTYLE)&WS_EX_TOOLWINDOW)
    {
    //Is Tool Window
    }
    else if(!::IsWindowVisible(hWnd))
    {
    //Not Visible Window
    }
    else if(::GetWindowTextLength(hWnd)==0)
    {
    //No Caption
    }
    else //Is the Main Window We Find
    {
    ::SetParent(hWnd,dlg->GetSafeHwnd());
    } return bRetVal;
    }
    这只是个简单的例子,我当初并没有朝这个方向想,所以这还有很多不完善的地方。我只能提供给你一个思路,具体还要靠你来实现。
      

  10.   

    搜索注册表,用一个dlg显示他们的连接文件,双机的响应函数可以用类shell的api命令调用运行所选的程序。
      

  11.   

    ShellExecute()
    WinEx()
    CreateProcess()