vc中winexec使用?
#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不起作用了呢? 展开
2016-02-01 · 知道合伙人互联网行家
知道合伙人互联网行家
向TA提问 私信TA
该函数只提供对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);
*****首先,常量字符串中‘\’必须写成‘\\’,也就是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命令行参数设置,暂且只能帮你到这了。
参考资料: 自己琢磨的。
WinExec("E:\\QQ.EXE",SW_SHOW); 要这样写 第一个\是转义字符 第二个才是真正的\