一个exe程序,能否判断它是以何种方式启动? 用C写了一个控制台程序,编译成exe,能否在main函数中判断这个exe是以哪种方式启动? 这里说的启动方式就是指命令行启动方式和鼠标双击启动方式,能否在程序中区分这两种启动方式。区分的目的是不想双击启动这个exe程序,只想在命令行方式下启动,双击无效,能否做到? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这个启动过程都是shell来完成的吧,可以监视shell行为应该可以做到 命令行参数 main 可以带参数啊 可以自己添加命令行参数ParseCommandLine(),每次启动检测,如果是命令行启动,需要参数正确,如果是双击,命令行参数是没有的,可以直接return FALSE; 楼上的兄台们,这个exe程序,即使是命令行启动,也是可以不带参数的,所以通过参数有无判断,恐怕不行吧 哈哈, 我知道了! 可以通过环境变量。首先写一个小程序, 使用main函数的扩展版本。#include <iostream>int _tmain(int argc, _TCHAR* argv[], _TCHAR* envp[]){ int i = 0; _TCHAR * pTemp = envp[i++]; while (pTemp!= NULL) { _tprintf(pTemp); _tprintf(_T("\n")); pTemp = envp[i++]; } getchar(); return 0;}把这个程序编译后 , 从Console里面启动的环境变量是:ALLUSERSPROFILE=C:\Documents and Settings\All UsersAPPDATA=C:\Documents and Settings\Administrator\Application DataCLIENTNAME=ConsoleClusterLog=C:\WINDOWS\Cluster\cluster.logCommonProgramFiles=C:\Program Files\Common FilesCOMPUTERNAME=JERRYComSpec=C:\WINDOWS\system32\cmd.exeFP_NO_HOST_CHECK=NOHOMEDRIVE=C:HOMEPATH=\Documents and Settings\AdministratorLOGONSERVER=\\JERRYNUMBER_OF_PROCESSORS=2OS=Windows_NTPath=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\WbemPATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSHPROCESSOR_ARCHITECTURE=x86PROCESSOR_IDENTIFIER=x86 Family 15 Model 4 Stepping 7, GenuineIntelPROCESSOR_LEVEL=15PROCESSOR_REVISION=0407ProgramFiles=C:\Program FilesPROMPT=$P$GSESSIONNAME=ConsoleSystemDrive=C:SystemRoot=C:\WINDOWSTEMP=D:\TempTMP=D:\TempUSERDOMAIN=JERRYUSERNAME=AdministratorUSERPROFILE=C:\Documents and Settings\AdministratorVS90COMNTOOLS=E:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\windir=C:\WINDOWS从Shell里面启动的环境变量是: VCInstallDir=e:\program files\microsoft visual studio 9.0\vc\VisualStudioDir=C:\Documents and Settings\Administrator\My Documents\Visual Studio 2008VS90COMNTOOLS=E:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\VSInstallDir=e:\program files\microsoft visual studio 9.0\WecVersionForRosebud.FF4=2windir=C:\WINDOWS_ACP_ATLPROV=E:\Program Files\Microsoft Visual Studio 9.0\VC\Bin\ATLProv.dll_ACP_INCLUDE=E:\Program Files\Microsoft Visual Studio 9.0\VC\include;E:\ProgramFiles\Microsoft Visual Studio 9.0\VC\atlmfc\include;C:\Program Files\Microsoft SDKs\Windows\v6.0A\\include;C:\Program Files\Microsoft SDKs\Windows\v6.0A\include_ACP_LIB=E:\Program Files\Microsoft Visual Studio 9.0\VC\lib;E:\Program Files\Microsoft Visual Studio 9.0\VC\atlmfc\lib;E:\Program Files\Microsoft Visual Studio 9.0\VC\atlmfc\lib\i386;C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib;C:\Program Files\Microsoft SDKs\Windows\v6.0A\lib;E:\Program Files\Microsoft Visual Studio 9.0\;E:\Program Files\Microsoft Visual Studio 9.0\lib_ACP_PATH=E:\Program Files\Microsoft Visual Studio 9.0\VC\bin;C:\Program Files\Microsoft SDKs\Windows\v6.0A\\bin;E:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\bin;E:\Program Files\Microsoft Visual Studio 9.0\Common7\tools;E:\Program Files\Microsoft Visual Studio 9.0\Common7\ide;C:\Program Files\HTML Help Workshop;C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin;C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727;E:\Program Files\Microsoft Visual Studio 9.0\;C:\WINDOWS\SysWow64;;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem......... 通过比较这2种启动方式, 发现如果是用 Console方式启动, 会多一个环境变量 “PROMPT”你直接用getenv去检测这个环境变量试试, exe应该也一样 如何获得多个Excel 实例的接口??? DCT算法 如何用vc执行一段机器码指令? 请问远程连接计算机的api函数是什么? 面试题目,请大家赐教! 如何使MDI程序支持多种文件类型? acrobat 到底怎样才能将别的文档转为pdf格式 Windows XP/2003系统中添加打印机的问题,急! 和尚题-没头(发):编游戏软件赚钱,还是编信息系统软件赚钱,哪个更难?用什么开发软件编更好. 为什么我的VC每次编译都rebuild all ? 多文档里面如何自己动态建立菜单 请问有没有高人做过粒子滤波的?
#include <iostream>
int _tmain(int argc, _TCHAR* argv[], _TCHAR* envp[])
{
int i = 0;
_TCHAR * pTemp = envp[i++];
while (pTemp!= NULL)
{
_tprintf(pTemp);
_tprintf(_T("\n"));
pTemp = envp[i++];
} getchar(); return 0;
}
把这个程序编译后 , 从Console里面启动的环境变量是:ALLUSERSPROFILE=C:\Documents and Settings\All Users
APPDATA=C:\Documents and Settings\Administrator\Application Data
CLIENTNAME=Console
ClusterLog=C:\WINDOWS\Cluster\cluster.log
CommonProgramFiles=C:\Program Files\Common Files
COMPUTERNAME=JERRY
ComSpec=C:\WINDOWS\system32\cmd.exe
FP_NO_HOST_CHECK=NO
HOMEDRIVE=C:
HOMEPATH=\Documents and Settings\Administrator
LOGONSERVER=\\JERRY
NUMBER_OF_PROCESSORS=2
OS=Windows_NT
Path=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH
PROCESSOR_ARCHITECTURE=x86
PROCESSOR_IDENTIFIER=x86 Family 15 Model 4 Stepping 7, GenuineIntel
PROCESSOR_LEVEL=15
PROCESSOR_REVISION=0407
ProgramFiles=C:\Program Files
PROMPT=$P$G
SESSIONNAME=Console
SystemDrive=C:
SystemRoot=C:\WINDOWS
TEMP=D:\Temp
TMP=D:\Temp
USERDOMAIN=JERRY
USERNAME=Administrator
USERPROFILE=C:\Documents and Settings\Administrator
VS90COMNTOOLS=E:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\
windir=C:\WINDOWS
从Shell里面启动的环境变量是:
VCInstallDir=e:\program files\microsoft visual studio 9.0\vc\
VisualStudioDir=C:\Documents and Settings\Administrator\My Documents\Visual Stud
io 2008
VS90COMNTOOLS=E:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\
VSInstallDir=e:\program files\microsoft visual studio 9.0\
WecVersionForRosebud.FF4=2
windir=C:\WINDOWS
_ACP_ATLPROV=E:\Program Files\Microsoft Visual Studio 9.0\VC\Bin\ATLProv.dll
_ACP_INCLUDE=E:\Program Files\Microsoft Visual Studio 9.0\VC\include;E:\Program
Files\Microsoft Visual Studio 9.0\VC\atlmfc\include;C:\Program Files\Microsoft S
DKs\Windows\v6.0A\\include;C:\Program Files\Microsoft SDKs\Windows\v6.0A\include_ACP_LIB=E:\Program Files\Microsoft Visual Studio 9.0\VC\lib;E:\Program Files\Mi
crosoft Visual Studio 9.0\VC\atlmfc\lib;E:\Program Files\Microsoft Visual Studio
9.0\VC\atlmfc\lib\i386;C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib;C:\Pr
ogram Files\Microsoft SDKs\Windows\v6.0A\lib;E:\Program Files\Microsoft Visual S
tudio 9.0\;E:\Program Files\Microsoft Visual Studio 9.0\lib
_ACP_PATH=E:\Program Files\Microsoft Visual Studio 9.0\VC\bin;C:\Program Files\M
icrosoft SDKs\Windows\v6.0A\\bin;E:\Program Files\Microsoft Visual Studio 9.0\Co
mmon7\Tools\bin;E:\Program Files\Microsoft Visual Studio 9.0\Common7\tools;E:\Pr
ogram Files\Microsoft Visual Studio 9.0\Common7\ide;C:\Program Files\HTML Help W
orkshop;C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin;C:\WINDOWS\Microsoft.N
ET\Framework\v2.0.50727;E:\Program Files\Microsoft Visual Studio 9.0\;C:\WINDOWS
\SysWow64;;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem
.........