命令行参数问题

MarMouse 2006-02-06 02:54:38
谁能介绍一下VC中命令行参数如何实现?
在Project->settings->debug选项卡->Program arguments中可以设置命令行参数,
但是设置之后如何在程序中引用这两个参数呢?
还有就是,当VC编写的程序正在运行时,执行带有参数的命令行,有什么消息产生,如何把参数传递给程序?
...全文
430 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
xx_jj 2006-02-07
  • 打赏
  • 举报
回复
GetCommandLine
Snow_Ice1111 2006-02-07
  • 打赏
  • 举报
回复
学习
modena 2006-02-07
  • 打赏
  • 举报
回复
任何一个进程是无法阻止其他进程的启动的,只能通过检测当第二个进程启动时强制关闭第二个进程,或者通知第一个进程自己退出

金山词霸也应该是这样实现的,具体做法应该是程序启动时检测是否已经有进程实例运行,如果有,把自己的参数通过共享数据段传递给已经启动的进程实例,并通知已经启动的进程去处理,然后退出.

至于如何"检测是否已经有进程实例运行",方法有很多,最简单有效的是利用命名事件等方法.
MarMouse 2006-02-07
  • 打赏
  • 举报
回复
modena说的是能够启动两个进程的程序,如果是只能启动一个进程的程序呢?比如金山词霸就只能够启动一个进程。对于这种程序,如何在进程已经运行时,通过命令行传递参数?
modena 2006-02-06
  • 打赏
  • 举报
回复
程序已经运行后,在通过命令行输入参数,那么将启动第二个进程,参数只有第二个进程才能获得

那么此时如果第一个已经运行的进程也需要获得参数,只能通过进程间通讯的方式获得参数,一般的方法是通过原子变量集合共享内存段来实现
MarMouse 2006-02-06
  • 打赏
  • 举报
回复
当该程序已经在运行中的时候,使用待参数的命令行,该程序如何能够读的参数?有没有Windows消息可以利用?
wangk 2006-02-06
  • 打赏
  • 举报
回复
#include <windows.h>
#include <stdio.h>
#include <shellapi.h>

int __cdecl main(int argc, char * argv[])
{
LPWSTR *szArglist;
DWORD nArgs;
int i;

szArglist = CommandLineToArgvW(GetCommandLineW(), &nArgs);
if( NULL == szArglist )
{
wprintf(L"CommandLineToArgvW failed\n");
return 0;
}
else for( i=0; i<=argc; i++) printf("%ws\n", szArglist[i]);

// Free memory allocated for CommandLineToArgvW arguments.

GlobalFree(szArglist);

return(1);
}
wangk 2006-02-06
  • 打赏
  • 举报
回复
GetCommandLine然后解析。
DentistryDoctor 2006-02-06
  • 打赏
  • 举报
回复
CWinApp::m_lpCmdLine

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧