我用shell调用软件.exe发现有的软件就能正常显示在屏幕中如一些成熟软件qq等,但是有的软件却只能显示在任务栏中,就是最小化状态,比如用vb写好编译的.exe可执行文件还有我用NSIS制作的安装包。这样的话感觉很不方便 可以设置吗?谢谢

解决方案 »

  1.   

    RetVal = Shell("C:\WINDOWS\CALC.EXE", 1)
      

  2.   

    带上参数 , Shell "c:\test.exe", vbNormalFocus
      

  3.   

    Shell 函数
          执行一个可执行文件,返回一个 Variant (Double),如果成功的话,代表这个程序的任务 ID,若不成功,则会返回 0。语法Shell(pathname[,windowstyle])Shell 函数的语法含有下面这些命名参数:部分 描述 
    pathname 必要参数。Variant (String),要执行的程序名,以及任何必需的参数或命令行变量,可能还包括目录或文件夹,以及驱动器。 
    Windowstyle 可选参数。Variant (Integer),表示在程序运行时窗口的样式。如果 windowstyle 省略,则程序是以具有焦点的最小化窗口来执行的。 
    windowstyle 命名参数有以下这些值:常量 值 描述 
    vbHide 0 窗口被隐藏,且焦点会移到隐式窗口。 
    VbNormalFocus 1 窗口具有焦点,且会还原到它原来的大小和位置。 
    VbMinimizedFocus 2 窗口会以一个具有焦点的图标来显示。 
    VbMaximizedFocus 3 窗口是一个具有焦点的最大化窗口。 
    VbNormalNoFocus 4 窗口会被还原到最近使用的大小和位置,而当前活动的窗口仍然保持活动。 
    VbMinimizedNoFocus 6 窗口会以一个图标来显示。而当前活动的的窗口仍然保持活动。 
    说明如果 Shell 函数成功地执行了所要执行的文件,则它会返回程序的任务 ID。任务 ID 是一个唯一的数值,用来指明正在运行的程序。如果 Shell 函数不能打开命名的程序,则会产生错误。注意 缺省情况下,Shell 函数是以异步方式来执行其它程序的。也就是说,用 Shell 启动的程序可能还没有完成执行过程,就已经执行到 Shell 函数
      

  4.   

    Shell(pathname[,windowstyle])
    它有一个参数,是调用的程序显示状态。
    你肯定是以最小化启动的。
    参数为1就正常了。
    Shell("C:\WINDOWS\CALC.EXE", 1)
      

  5.   

    恩谢谢 但是我用NSIS制作的安装包setup.exe 用shell调他的时候也是以最小化出现的 这个如何控制呢?
    NSIS脚本如下; 该脚本使用 HM VNISEdit 脚本编辑器向导产生; 安装程序初始定义常量
    !define PRODUCT_NAME "shiyan"
    !define PRODUCT_VERSION "1.0"
    !define PRODUCT_PUBLISHER "My company, Inc."
    !define PRODUCT_WEB_SITE "http://www.mycompany.com"
    !define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\人民币反假宣传工作站.exe"
    !define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
    !define PRODUCT_UNINST_ROOT_KEY "HKLM"SetCompressor lzma; ------ MUI 现代界面定义 (1.67 版本以上兼容) ------
    !include "MUI.nsh"; MUI 预定义常量
    !define MUI_ABORTWARNING
    !define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico"
    !define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico"; 欢迎页面
    !insertmacro MUI_PAGE_WELCOME
    ; 安装目录选择页面
    !insertmacro MUI_PAGE_DIRECTORY
    ; 安装过程页面
    !insertmacro MUI_PAGE_INSTFILES
    ; 安装完成页面
    !define MUI_FINISHPAGE_RUN "$INSTDIR\人民币反假宣传工作站.exe"
    !insertmacro MUI_PAGE_FINISH; 安装卸载过程页面
    !insertmacro MUI_UNPAGE_INSTFILES; 安装界面包含的语言设置
    !insertmacro MUI_LANGUAGE "SimpChinese"; 安装预释放文件
    !insertmacro MUI_RESERVEFILE_INSTALLOPTIONS
    ; ------ MUI 现代界面定义结束 ------Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
    OutFile "Setup.exe"
    InstallDir "$PROGRAMFILES\shiyan"
    InstallDirRegKey HKLM "${PRODUCT_UNINST_KEY}" "UninstallString"
    ShowInstDetails show
    ShowUnInstDetails showSection "MainSection" SEC01
      SetOutPath "$INSTDIR"
      SetOverwrite ifnewer
      File "升级后\人民币反假宣传工作站.exe"
    SectionEndSection -AdditionalIcons
      WriteIniStr "$INSTDIR\${PRODUCT_NAME}.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}"
      CreateDirectory "$SMPROGRAMS\shiyan"
      CreateShortCut "$SMPROGRAMS\shiyan\Website.lnk" "$INSTDIR\${PRODUCT_NAME}.url"
      CreateShortCut "$SMPROGRAMS\shiyan\Uninstall.lnk" "$INSTDIR\uninst.exe"
    SectionEndSection -Post
      WriteUninstaller "$INSTDIR\uninst.exe"
      WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\人民币反假宣传工作站.exe"
      WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)"
      WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe"
      WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\人民币反假宣传工作站.exe"
      WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"
      WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}"
      WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}"
    SectionEnd/******************************
     *  以下是安装程序的卸载部分  *
     ******************************/Section Uninstall
      Delete "$INSTDIR\${PRODUCT_NAME}.url"
      Delete "$INSTDIR\uninst.exe"
      Delete "$INSTDIR\人民币反假宣传工作站.exe"  Delete "$SMPROGRAMS\shiyan\Uninstall.lnk"
      Delete "$SMPROGRAMS\shiyan\Website.lnk"  RMDir "$SMPROGRAMS\shiyan"  RMDir "$INSTDIR"  DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
      DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}"
      SetAutoClose true
    SectionEnd#-- 根据 NSIS 脚本编辑规则,所有 Function 区段必须放置在 Section 区段之后编写,以避免安装程序出现未可预知的问题。--#Function un.onInit
      MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "您确实要完全移除 $(^Name) ,及其所有的组件?" IDYES +2
      Abort
    FunctionEndFunction un.onUninstSuccess
      HideWindow
      MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) 已成功地从您的计算机移除。"
    FunctionEnd