locked
自定义壳的问题 RRS feed

  • 问题

  • 我的应用程序A做成自定义壳后,系统可以正常启动,使用过程中发现如下问题:我需要在系统中运行一个第三方程序B,B的界面是非满屏的标准样式的窗体。如果是在XP系统下,众所周知,鼠标点击B以外的桌面,B不会消失,仍然停留在桌面上。但是在我的XPE系统中,点击B以外的区域时,B就消失了,而我的A却到前台来了,即A遮挡了B。这时,只能用Alt+Tab将B切换至前台。
    我的A应该是XPE系统的桌面啊,为什么不能象XP的桌面那样,不去遮挡系统中运行的其它程序呢?有没有办法解决这个问题?
    期待高手们出招!谢谢!
    2009年9月18日 6:34

答案

  • 1,可以的话,修改/设置程序B,让他始终在前面
    2,修改你的shell,让他在调用程序B的同时调整自己的布局,使得B总是可见的
    3,这里我说错了,windows shell中是包括桌面的,我原来说的“桌面”应该是背景墙纸
    “我认为,shell是shell,桌面是桌面,两个不是一个概念。当你把你的shell(即程序A)关闭后,那才是桌面”

    “创建托盘失败”的错误看来没有简单的解决办法,爱莫能助~~~
    • 已编辑 thinkbird 2009年9月21日 2:12
    • 已标记为答案 warrentang 2009年9月24日 2:29
    2009年9月18日 7:44
  • 写两笔
    这里SHELL指的就是用户接触到的界面。他可以是你的自定义程序、一个图形界面、一个命令行界面都是shell。

    explorer是一个带有文件管理功能的shell。

    SHELL只有一个!
    以下是个人观点(未经实验证实):
    在没有explorer shell的情况下。你的A程序作为shell
    当你点击空白部分(A、B程序以外的部分),会自动切换到A(因为他是SHELL)。
    要想解决这个问题,请写个程序C,把C程序作为shell,来启动A、B。而C的界面做的像ALT+TAB那样的界面,提供切换窗口的功能。


    • 已建议为答案 happymy 2009年9月18日 12:06
    • 已标记为答案 warrentang 2009年9月24日 2:29
    2009年9月18日 12:06

全部回复

  • 如果 应用程序是你自己开发 可以修改代码 让它一直在窗口的最上面,其它没玩过!

    2009年9月18日 7:16
  • 怎么看不到HACK_cai的回复内容呢?我的机器有毛病了吗?

    2009年9月18日 7:22
  • 1,可以的话,修改/设置程序B,让他始终在前面
    2,修改你的shell,让他在调用程序B的同时调整自己的布局,使得B总是可见的
    3,这里我说错了,windows shell中是包括桌面的,我原来说的“桌面”应该是背景墙纸
    “我认为,shell是shell,桌面是桌面,两个不是一个概念。当你把你的shell(即程序A)关闭后,那才是桌面”

    “创建托盘失败”的错误看来没有简单的解决办法,爱莫能助~~~
    • 已编辑 thinkbird 2009年9月21日 2:12
    • 已标记为答案 warrentang 2009年9月24日 2:29
    2009年9月18日 7:44
  • 谢谢thinkbird,“3,我认为,shell是shell,桌面是桌面,两个不是一个概念。当你把你的shell(即程序A)关闭后,那才是桌面”,可以进一步解释下吗?看来我对这个概念比较模糊。。。
    B是第三方软件,没法修改、设置,我现在用的办法是修改A,使之总是处于最低层,希望找到更理想的办法。

    2009年9月18日 9:02
  • shell的作用是提供一个用户跟操作系统/计算机的接口,我们平常电脑里的explorer.exe也是一个shell,你试着把任务管理器里的“explorer.exe”进程关掉,你会发现没法儿操作电脑了,因为你没有shell了,但是你的桌面还在的,你也能看到。
    再说你的程序A,你可能开机后只能接触这个程序A,所以你对电脑所能做的操作只限于A能提供给你的功能,所以我们说A是你的shell,但说到底他还是一个程序,只是被你"认为"是shell而已。自己体会一下吧,呵呵。
    其实要实现一个真正的shell,你的程序A需要能提供对操作系统进行操作的功能。
    2009年9月18日 9:26
  • 写两笔
    这里SHELL指的就是用户接触到的界面。他可以是你的自定义程序、一个图形界面、一个命令行界面都是shell。

    explorer是一个带有文件管理功能的shell。

    SHELL只有一个!
    以下是个人观点(未经实验证实):
    在没有explorer shell的情况下。你的A程序作为shell
    当你点击空白部分(A、B程序以外的部分),会自动切换到A(因为他是SHELL)。
    要想解决这个问题,请写个程序C,把C程序作为shell,来启动A、B。而C的界面做的像ALT+TAB那样的界面,提供切换窗口的功能。


    • 已建议为答案 happymy 2009年9月18日 12:06
    • 已标记为答案 warrentang 2009年9月24日 2:29
    2009年9月18日 12:06
  • 感谢两位的耐心解释!看到高手的观点,我不禁把前段时间的一个问题再次提出:我的系统中安装类似“QQ对战平台”这样的第三方软件,在快安装完成时,提示“创建托盘失败”,我觉得原因在于我的SHELL A没有给这个软件提供任务栏。
    我有没有办法修改A,在A中模拟一个象windows操作系统那样的任务栏,从而能满足某些应用软件的需要呢?

    2009年9月19日 2:38