我用WinExec执行另外一个程序,uCmdShow参数用的是SW_HIDE,可是执行的结果每次都是最大化执行,用SW_MINIMIZE也不行,不知是什么原因,请高手指点。UINT WinExec(LPCSTR lpCmdLine,UINT uCmdShow); 
SW_HIDE 隐藏 
SW_MAXIMIZE 最大化  
SW_MINIMIZE 最小化,并把Z order顺序在此窗口之后(即窗口下一层)的窗口激活 
SW_RESTORE 激活窗口并还原为初始化大小 
SW_SHOW 以当前大小和状态激活窗口  
SW_SHOWDEFAULT 以默认方式运行 
SW_SHOWMAXIMIZED 激活窗口并最大化 
SW_SHOWMINIMIZED 激活窗口并最小化  
SW_SHOWMINNOACTIVE 最小化但不改变当前激活的窗口  
SW_SHOWNA 以当前状态显示窗口但不改变当前激活的窗口 
SW_SHOWNOACTIVATE 以初始化大小显示窗口但不改变当前激活的窗口 
SW_SHOWNORMAL 激活并显示窗口,如果是最大(小)化,窗口将会还原。

解决方案 »

  1. 试试用shellexecute 或者 CreateProcess
      

  2. shellexecute 或者 CreateProcess是不是可以将程序隐藏或最小化,我的程序是一个DOS窗口,每次执行都有一个黑窗口出来,很是烦人。
      

  3. winexec(pchar(BatFilename),sw_hide);//隐藏窗口运行
      

  4. 或者
    STARTUPINFO s={sizeof(s)}; 
    s.dwFlags =STARTF_USESHOWWINDOW|STARTF_USESTDHANDLES; 
    file://使用标准柄和显示窗口 
    s.hStdOutput =hConsoleRedirect;//将文件作为标准输出句柄 
    s.wShowWindow =SW_HIDE;//隐藏控制台窗口 
    PROCESS_INFORMATION pi={0}; 
    if(CreateProcess(NULL,cmdLine,NULL,NULL,TRUE,NULL,NULL,NULL,&s,&pi)){ 
      

  5. winexec(“xx”,sw_hide);//隐藏窗口
    不过有些窗口是无法隐藏的
      

类似问题 »