关于MFC程序的命令行参数问题

时间:2022-06-01 18:28:03
现本人需把文件a.bin和b.bin按某种特定的方式合并成一个c.bin,由于无按此方式合

并的现成工具,因此本人按自己需求用MFC写了一个d.exe。分别选择好a.bin和b.bin的文件

路径后,点击合并按钮,生成c.bin,一切正常。
      现问题来了,我想要用.bat文件自动运行改d.exe并把a.bin和b.bin的路径作为参数

来运行,尝试了一下 d.exe a.bin b.bin ,无效。网上有说跟CCommandLineInfo类相关,

但我在程序中完全没有找到这个类。请问各位大大,在MFC CDialog框架下搭起来的exe可以

实现命令行传参吗?

7 个解决方案

#1


参考http://jingyan.baidu.com/article/3065b3b634f5febecff8a419.html

引用 楼主 ghostar03 的回复:
现本人需把文件a.bin和b.bin按某种特定的方式合并成一个c.bin,由于无按此方式合

并的现成工具,因此本人按自己需求用MFC写了一个d.exe。分别选择好a.bin和b.bin的文件

路径后,点击合并按钮,生成c.bin,一切正常。
      现问题来了,我想要用.bat文件自动运行改d.exe并把a.bin和b.bin的路径作为参数

来运行,尝试了一下 d.exe a.bin b.bin ,无效。网上有说跟CCommandLineInfo类相关,

但我在程序中完全没有找到这个类。请问各位大大,在MFC CDialog框架下搭起来的exe可以

实现命令行传参吗?

#2


我现在的问题是能否在命令行中输入参数并传给MFC中相应的地方(a.bin和b.bin的路径(以Edit控件接收))。

可否说得详细点?感激!

#3


直接从命令行传进来,不要去想传到EDIT控件,仔细看看上面的文章操作一两遍就清楚了。

引用 2 楼 ghostar03 的回复:
我现在的问题是能否在命令行中输入参数并传给MFC中相应的地方(a.bin和b.bin的路径(以Edit控件接收))。

可否说得详细点?感激!

#4


可以直接调用接口的吧

GetCommandLine() 

#5


__args谁用睡到

#6


引用 5 楼 lzp__tm 的回复:
__args谁用睡到

++
__argc,__argv 和int  main(int argc,char *argv[]) 中的argc,argv 是一一对应的
__argc ==>argc
__argv ==>argv

#7


_chdir, _wchdir
Change the current working directory.

int _chdir( const char *dirname );

int _wchdir( const wchar_t *dirname );

Routine Required Header Optional Headers Compatibility 
_chdir <direct.h> <errno.h> Win 95, Win NT 
_wchdir <direct.h> or <wchar.h> <errno.h> Win NT 


For additional compatibility information, see Compatibility in the Introduction.

Libraries

LIBC.LIB Single thread static library, retail version 
LIBCMT.LIB Multithread static library, retail version 
MSVCRT.LIB Import library for MSVCRT.DLL, retail version 


Return Value

Each of these functions returns a value of 0 if successful. A return value of –1 indicates that the specified path could not be found, in which case errno is set to ENOENT.

Parameter

dirname

Path of new working directory

Remarks

The _chdir function changes the current working directory to the directory specified by dirname. The dirname parameter must refer to an existing directory. This function can change the current working directory on any drive and if a new drive letter is specified in dirname, the default drive letter will be changed as well. For example, if A is the default drive letter and \BIN is the current working directory, the following call changes the current working directory for drive C and establishes C as the new default drive:

_chdir("c:\\temp");

When you use the optional backslash character (\) in paths, you must place two backslashes (\\) in a C string literal to represent a single backslash (\).

_wchdir is a wide-character version of _chdir; the dirname argument to _wchdir is a wide-character string. _wchdir and _chdir behave identically otherwise.

Generic-Text Routine Mapping:

TCHAR.H Routine  _UNICODE & _MBCS Not Defined _MBCS Defined _UNICODE Defined 
_tchdir _chdir _chdir _wchdir 


Example

/* CHGDIR.C: This program uses the _chdir function to verify
 * that a given directory exists.
 */

#include <direct.h>
#include <stdio.h>
#include <stdlib.h>

void main( int argc, char *argv[] )
{
   if( _chdir( argv[1] )   )
      printf( "Unable to locate the directory: %s\n", argv[1] );
   else
      system( "dir *.wri");
}


Output

 Volume in drive C is CDRIVE
 Volume Serial Number is 0E17-1702

 Directory of C:\write

04/21/95  01:06p                 3,200 ERRATA.WRI
04/21/95  01:06p                 2,816 README.WRI
               2 File(s)          6,016 bytes
                             71,432,116 bytes free


Directory Control Routines

See Also   _mkdir, _rmdir, system

#1


参考http://jingyan.baidu.com/article/3065b3b634f5febecff8a419.html

引用 楼主 ghostar03 的回复:
现本人需把文件a.bin和b.bin按某种特定的方式合并成一个c.bin,由于无按此方式合

并的现成工具,因此本人按自己需求用MFC写了一个d.exe。分别选择好a.bin和b.bin的文件

路径后,点击合并按钮,生成c.bin,一切正常。
      现问题来了,我想要用.bat文件自动运行改d.exe并把a.bin和b.bin的路径作为参数

来运行,尝试了一下 d.exe a.bin b.bin ,无效。网上有说跟CCommandLineInfo类相关,

但我在程序中完全没有找到这个类。请问各位大大,在MFC CDialog框架下搭起来的exe可以

实现命令行传参吗?

#2


我现在的问题是能否在命令行中输入参数并传给MFC中相应的地方(a.bin和b.bin的路径(以Edit控件接收))。

可否说得详细点?感激!

#3


直接从命令行传进来,不要去想传到EDIT控件,仔细看看上面的文章操作一两遍就清楚了。

引用 2 楼 ghostar03 的回复:
我现在的问题是能否在命令行中输入参数并传给MFC中相应的地方(a.bin和b.bin的路径(以Edit控件接收))。

可否说得详细点?感激!

#4


可以直接调用接口的吧

GetCommandLine() 

#5


__args谁用睡到

#6


引用 5 楼 lzp__tm 的回复:
__args谁用睡到

++
__argc,__argv 和int  main(int argc,char *argv[]) 中的argc,argv 是一一对应的
__argc ==>argc
__argv ==>argv

#7


_chdir, _wchdir
Change the current working directory.

int _chdir( const char *dirname );

int _wchdir( const wchar_t *dirname );

Routine Required Header Optional Headers Compatibility 
_chdir <direct.h> <errno.h> Win 95, Win NT 
_wchdir <direct.h> or <wchar.h> <errno.h> Win NT 


For additional compatibility information, see Compatibility in the Introduction.

Libraries

LIBC.LIB Single thread static library, retail version 
LIBCMT.LIB Multithread static library, retail version 
MSVCRT.LIB Import library for MSVCRT.DLL, retail version 


Return Value

Each of these functions returns a value of 0 if successful. A return value of –1 indicates that the specified path could not be found, in which case errno is set to ENOENT.

Parameter

dirname

Path of new working directory

Remarks

The _chdir function changes the current working directory to the directory specified by dirname. The dirname parameter must refer to an existing directory. This function can change the current working directory on any drive and if a new drive letter is specified in dirname, the default drive letter will be changed as well. For example, if A is the default drive letter and \BIN is the current working directory, the following call changes the current working directory for drive C and establishes C as the new default drive:

_chdir("c:\\temp");

When you use the optional backslash character (\) in paths, you must place two backslashes (\\) in a C string literal to represent a single backslash (\).

_wchdir is a wide-character version of _chdir; the dirname argument to _wchdir is a wide-character string. _wchdir and _chdir behave identically otherwise.

Generic-Text Routine Mapping:

TCHAR.H Routine  _UNICODE & _MBCS Not Defined _MBCS Defined _UNICODE Defined 
_tchdir _chdir _chdir _wchdir 


Example

/* CHGDIR.C: This program uses the _chdir function to verify
 * that a given directory exists.
 */

#include <direct.h>
#include <stdio.h>
#include <stdlib.h>

void main( int argc, char *argv[] )
{
   if( _chdir( argv[1] )   )
      printf( "Unable to locate the directory: %s\n", argv[1] );
   else
      system( "dir *.wri");
}


Output

 Volume in drive C is CDRIVE
 Volume Serial Number is 0E17-1702

 Directory of C:\write

04/21/95  01:06p                 3,200 ERRATA.WRI
04/21/95  01:06p                 2,816 README.WRI
               2 File(s)          6,016 bytes
                             71,432,116 bytes free


Directory Control Routines

See Also   _mkdir, _rmdir, system