VC通过命令行参数禁止用户双击运行exe
来源:互联网 发布:极客网络 编辑:程序博客网 时间:2024/05/19 23:04
由于项目需要,需要在主程序中调用一个外部A.exe程序,而A.exe程序因为通过开发商提供的SDK来编写的,并且无法与现有项目的开发平台兼容,不得已只有通过主程序利用CreateProccess来调用。但是前段时间发现一个问题,如果用户直接在主程序目录下双击运行A.exe,可能会导致程序界面某些地方显示出现问题。 基于上面的问题,要想办法做到:用户双击运行主程序目录下的A.exe后,A.exe不会直接运行,只有通过主程序相应的菜单操作,传入特定的命令行参数才能运行。这样做显得专业一点,不然用户直接双击就打开看到界面了不是显示没有多少技术含量了么。 于是周末有时间就打开MSDN看了下CreateProccess相关的详细说明,发现通过命令行传递参数的方式就基本可以解决这个问题了,基于MFC框架的程序可以直接在主程序初始化函数中直接获取命令行参数,并判断是否为为设定的主程序传入的参数,如果不是,返回false,程序将停止运行。 下面看下具体的例子: A.exe中的代码如下: // CXXXApp initialization { //释放内存 主程序调用代码: if( !CreateProcess( "A.exe", // No module name (use command line). 这样就OK了,现在双击A.exe它就不会甩你了。
BOOL CXXXApp::InitInstance()
{
//获取命令行参数 如果不是调用程序特定传入的参数“-XXXX”,则停止运行 2010/1/17
/////////////////////////////////////////////////////////////////////////
int CommandLineCount = 0;
LPWSTR * m_lpCommandLine = ::CommandLineToArgvW(GetCommandLineW(), &CommandLineCount);
BOOL result = false;
CString m_strCommandLine;
//获取参数行命令,并将UNICODE转化成ASCI进行判断
for(int i = CommandLineCount - 1; i >= 0; i --)
m_strCommandLine = m_lpCommandLine[i];
if(m_strCommandLine == _T("-XXXX"))
{
result = true;
break;
}
}
GlobalFree(HGLOBAL(m_lpCommandLine));
if(!result)
return false;
/////////////////////////////////////////////////////////////////////////
TEXT("-XXXX"), // Command line. 向采集程序传入特定参数运行调用采集程序,这样可防止用户鼠标直接双击采集程序运行 2010/1/17
NULL, // Process handle not inheritable.
NULL, // Thread handle not inheritable.
FALSE, // Set handle inheritance to FALSE.
0, // No creation flags.
NULL, // Use parent's environment block.
NULL, // Use parent's starting directory.
&si, // Pointer to STARTUPINFO structure.
&pi ) // Pointer to PROCESS_INFORMATION structure.
)
{
;
}
- VC通过命令行参数禁止用户双击运行exe
- VC通过命令行参数禁止用户双击运行exe
- 禁止双击启动可执行exe文件
- IEXPLORE.EXE命令行参数
- rar.exe 命令行参数
- rar.exe 命令行参数
- VC如何禁止双击标题栏 - WM_NCLBUTTONDBLCLK消息
- 用 VC 获取其它运行中程序的命令行参数
- vc 命令行下运行
- .jar像.exe一样双击可以运行
- vc命令行参数处理
- VC命令行参数解析
- VC++输入命令行参数
- 传递命令行参数调用exe
- Unity.exe/Unity命令行参数
- iexplore.exe命令行参数解释
- Explorer.exe 的命令行参数
- VC++ 调用7z.exe 命令行参数实现简单的压缩、解压
- 【winform】拖拽文件,快速导入文件地址
- C1FlexGrid 学习(1) - 博客文库 - 博客园
- C1FlexGrid打印与预览 - hz_yihang的专栏 - CSDN博客
- 实用接口:IP地址、手机归属和身份证查询接口
- A*寻路算法
- VC通过命令行参数禁止用户双击运行exe
- 求指点
- 国内开源asp.netCMS汇总
- ccc
- 编写 Servlet 程序 - 3
- 采集
- FindProcess 查找进程
- Ljava.lang.Object; cannot be cast to form A(实体)
- Delphi动态的修改WebBrowser加载页面的内容