永发信息网

vc中winexec使用?

答案:4  悬赏:70  手机版
解决时间 2021-02-15 16:55
  • 提问者网友:喧嚣尘世
  • 2021-02-14 17:48
#include <iostream.h>
#include <windows.h>

int main()
{
WinExec("E:\QQ.EXE",SW_SHOW);
return 0;
}
编译时出现----------------Configuration: 1 - Win32 Debug--------------------
Compiling...
1.cpp
c:\program files\microsoft visual studio\myprojects\1\1.cpp(5) : error C2065: 'winexec' : undeclared identifier
c:\program files\microsoft visual studio\myprojects\1\1.cpp(5) : warning C4129: 'Q' : unrecognized character escape sequence
c:\program files\microsoft visual studio\myprojects\1\1.cpp(6) : warning C4508: 'main' : function should return a value; 'void' return type assumed
2.c
c:\program files\microsoft visual studio\myprojects\1\2.c(6) : warning C4129: 'Q' : unrecognized character escape sequence
执行 cl.exe 时出错.

1.exe - 1 error(s), 0 warning(s)
怎么回事?
嘿嘿,谢谢了,好象是短了一个\,现在我想让运行时隐藏窗口,改成SW_Hide为什么还是显示窗口
您说的方法只能是最小话窗口,能不能让程序在后台运行的方法,ShellExecute函数能不能达到隐藏窗口的目的呢?是不是原软件中已经有了SW_SHOW语句,使SW_HIDE不起作用了呢?
最佳答案
  • 五星知识达人网友:第四晚心情
  • 2021-02-14 18:41
该函数只提供对16位机子的兼容。应用程序应该使用CreateProcess函数。
  Declare Function WinExec Lib "kernel32" Alias "WinExec" (ByVal lpCmdLine As String, ByVal nCmdShow As Long) As Long
  • 说明
      运行指定的程序
  • 返回值
      Long,大于31表示成功,请参考FindExecutable函数
  •  参数表
      参数 类型及说明
      lpCmdLine String,包含要执行的命令行
      nCmdShow Long,定义了以怎样的形式启动程序的常数值。参考ShowWindow函数的nCmdShow参数
  • 注解
      请参考对CreateProcess函数的说明,了解在目录中查找指定文件的顺序
      VC中如何使用
      WINSHELLAPI void WINAPI WinExecErrorA(HWND hwnd, int error, LPCSTR lpstrFileName, LPCSTR lpstrTitle);
      WINSHELLAPI void WINAPI WinExecErrorW(HWND hwnd, int error, LPCWSTR lpstrFileName, LPCWSTR lpstrTitle);
  • 参数说明:
      hwnd,窗口句柄,一般为NULL。
      error,出错信息。
      lpstrFileName 文件名。
      lpstrTitle标题名。
  • 使用WinExec命令
      ⑴ 函数原型:
      UINT Win Exec(LPCSTR lpCmdLine, UINT uCmdShow);
      ⑵ 参数:
      lpCmdLine:指向一个空结束的字符串,串中包含将要执行的应用程序的命令行(文件名加上可选参数)。
      uCmdShow:定义Windows应用程序的窗口如何显示,并为CreateProcess函数提供STARTUPINFO参数的wShowWindow成员的值。
      ⑶ 返回值:
      若函数调用成功,则返回值大于31。若函数调用失败,则返回值为下列之一:
      ① 0:系统内存或资源已耗尽。
      ② ERROR_BAD_FORMAT:EXE文件无效(非Win32.EXE或.EXE影像错误)。
      ③ ERROR_FILE_NOT_FOUND:指定的文件未找到。
      ④ ERROR_PATH_NOT_FOUND:指定的路径未找到。
      大于 31 {调用成功}
      等于 0 {内存不足}
      ERROR_FILE_NOT_FOUND = 2; {文件名错误}
      ERROR_PATH_NOT_FOUND = 3; {路径名错误}
      ERROR_BAD_FORMAT = 11; {EXE 文件无效}
      //uCmdShow 参数可选值:
      SW_HIDE = 0; {隐藏, 并且任务栏也没有最小化图标}
      SW_SHOWNORMAL = 1; {用最近的大小和位置显示, 激活}
      SW_NORMAL = 1; {同 SW_SHOWNORMAL}
      SW_SHOWMINIMIZED = 2; {最小化, 激活}
      SW_SHOWMAXIMIZED = 3; {最大化, 激活}
      SW_MAXIMIZE = 3; {同 SW_SHOWMAXIMIZED}
      SW_SHOWNOACTIVATE = 4; {用最近的大小和位置显示, 不激活}
      SW_SHOW = 5; {同 SW_SHOWNORMAL}
      SW_MINIMIZE = 6; {最小化, 不激活}
      SW_SHOWMINNOACTIVE = 7; {同 SW_MINIMIZE}
      SW_SHOWNA = 8; {同 SW_SHOWNOACTIVATE}
      SW_RESTORE = 9; {同 SW_SHOWNORMAL}
      SW_SHOWDEFAULT = 10; {同 SW_SHOWNORMAL}
      SW_MAX = 10; {同 SW_SHOWNORMAL}
  • 案例:
      1)执行完关闭窗口2000和xp中:
      WinExec( "cmd   /c   type   aaa.txt ",SW_NORMAL);   //执行完后立即关闭DOS窗口
      或
      WinExec( "cmd   /k   type   aaa.txt ",SW_NORMAL);   //执行完后不关闭DOS窗口
      2)WINEXEC是异步执行。不能等待命令结束。
      例如,移动文件夹,小心还未复制结束,就已经被删除了。
      可用
      CreateProcess( "测试程序.exe ",   NULL,   NULL,   NULL,
      FALSE,   0,   NULL,   NULL,   &si,   &mProcessInfor);
      //用下面地代码等待程序执行结束:
      WaitForSingleObject(mProcessInfor.hProcess,   INFINITE);
  • 全部回答
    • 1楼网友:夜余生
    • 2021-02-14 20:33
    winexec 开头的w要大写 WinExec("E:\\QQ.EXE",SW_SHOW); 要这样写 第一个\是转义字符 第二个才是真正的\
    • 2楼网友:忘川信使
    • 2021-02-14 19:04
    winexec("d:\\qq2009\\bin\\qq.exe",sw_show);
    • 3楼网友:天凉才是好个秋
    • 2021-02-14 18:53
    ***** *****首先,常量字符串中‘\’必须写成‘\\’,也就是WinExec("E:\QQ.EXE",SW_SHOW); 必须改为: WinExec("E:\\QQ.EXE",SW_SHOW); ***** *****补充回答:SW_HIDE不行的话用SW_SHOWMINNOACTIVE。 除以上提到的三个以外,第二个参数还有以下7种选择: SW_MAXIMIZE //最大化运行 SW_MINIMIZE //最小化运行 SW_RESTORE //将最大化或最小化的窗口恢复正常 SW_SHOWMAXIMIZED //激活窗口并以最大化运行 SW_SHOWMINIMIZED //激活窗口并以最小化运行 SW_SHOWNOACTIVATE //不激活 SW_SHOWNORMAL //普通方式 ***** *****继续补充回答: ShellExecute我在项目中用过,我是这样调用的。ShellExecute (NULL, "open", "winrar.exe", // 程序名 "/c a // 以下5行命令行参数 -sfx Default.SFX -i bck -i icon test.ico -z sescript FlashFXP FlashFXP", NULL, SW_SHOWNORMAL) // 程序界面显示方式 ***** *****最后一个参数还是窗口显示方式,用的默认的SW_SHOWNORMAL,但我实现了WinRar压缩/解压界面的隐藏,主要是通过命令行参数实现,即第三个包含隐藏界面设置,而且优先权比最后一个参数高,所有实现了隐藏。你自己找找QQ命令行参数设置,暂且只能帮你到这了。
    我要举报
    如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
    点此我要举报以上问答信息
    大家都在看
    推荐资讯