DOS下我会,WINDOW下如何做?

qqhrdi1 2003-12-10 12:53:40
DOS下可以在main()中修改argc argv来实现带参数的运行程序,如c:\A.exe h来运行A程序,如只输入c:\A.exe程序不执行或给出提示,WINDOWS下如何实现程序双击鼠标无反应,只能以命令行的方式如c:\A.exe h来执行?
...全文
48 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
lanstar200 2003-12-11
  • 打赏
  • 举报
回复
__argc,__argv
bluebohe 2003-12-11
  • 打赏
  • 举报
回复
如果没有经过循环退出程序即可
bluebohe 2003-12-11
  • 打赏
  • 举报
回复
在任何地方都可以这样得到参数信息
for (int i = 1; i < __argc; i++)
{
LPCTSTR pszParam = __targv[i];
}
yt老顽童 2003-12-11
  • 打赏
  • 举报
回复
参考VC MSDN例子tear或saver
flinming 2003-12-11
  • 打赏
  • 举报
回复
ShellExecute(0,"open","c:\\1.exe",0,0,SW_SHOW);

ShellExecute();
WinExec();
CreateProcess()
这三个函数都可以启动一个.exe文件
具体参数请参考MSDN
AkiraChing 2003-12-11
  • 打赏
  • 举报
回复
BOOL Cdlg3App::InitInstance()
{
...
InitCommonControls();

CWinApp::InitInstance();

if(m_lpCmdLine[0] == _T('\0'))

{
::MessageBox(NULL,"无参数","错误",MB_OK|MB_ICONSTOP);
return FALSE;
}
...
}
fbmsf 2003-12-11
  • 打赏
  • 举报
回复
The GetCommandLine function returns a pointer to the command-line string for the current process.

LPTSTR GetCommandLine(VOID)


Parameters

This function has no parameters.

Return Values

The return value is a pointer to the command-line string for the current process.

Remarks

Non-Unicode console processes written in C can use the argc and argv arguments to access the command-line arguments. The parameters of the command-line string, excluding the program name, are also available to such non-Unicode applications as a parameter of the WinMain function. The reason for the Unicode exclusion from these options is that WinMain, argc, and argv use the LPSTR data type for parameters, not the LPTSTR datatype.

See Also
114sky 2003-12-11
  • 打赏
  • 举报
回复
你要熟悉SDK
Zark 2003-12-11
  • 打赏
  • 举报
回复
如果是在SDK下,只需要象 mscf 所说的"判断winmain的命令行参数是否为空或符合你要的条件"就行了的,即
int WINAPI WinMain(
HINSTANCE hInstance, // handle to current instance
HINSTANCE hPrevInstance, // handle to previous instance
LPSTR lpCmdLine, // command line
int nCmdShow // show state
);
检查lpCmdLine即可.

如果是在MFC下的,情况就复杂了.首先在你的CWinApp的继承类中,通过其
ParseCommandLine()方法得知是否有命令行参数,然后override它的Run()方法,使之在无命令行参数的情况下直接返回0,有命令行参数时调用CWinApp::Run().
Azusa 2003-12-10
  • 打赏
  • 举报
回复
判断参数的个数,如果个数小于等于1,则立即退出,如果有其他参数,再继续做其他的操作。

瞧俺老孙的 2003-12-10
  • 打赏
  • 举报
回复
就是写一个控制台程序而已
zhucde 2003-12-10
  • 打赏
  • 举报
回复
不明白何意?
newman0708 2003-12-10
  • 打赏
  • 举报
回复
我觉得Azusa()的判断参数的个数的文件比较好。
薛定谔之死猫 2003-12-10
  • 打赏
  • 举报
回复
同上,判断winmain的命令行参数是否为空或符合你要的条件。
roscoe 2003-12-10
  • 打赏
  • 举报
回复
在App的InitInstance
你解释一下commandLine,有参数就继续,没有就退出.
qqhrdi1 2003-12-10
  • 打赏
  • 举报
回复
我的意思是如何使一个WINDOWS程序只能带参数运行,不带参数,在命令行和双击鼠标都无反应
shootingstars 2003-12-10
  • 打赏
  • 举报
回复
是不是想给某个程序传递参数?
两种方式:
1 进入命令行方式,和dos一样的操作;
2 建立一个对应的应用程序的快捷方式,在快捷方式上右键-〉属性-〉目标 后加上你的参数。运行快捷方式。
fu256 2003-12-10
  • 打赏
  • 举报
回复
在App的init中用_argc _argv(MSDN中有谁明)判断是否有参数h,有则执行,无则返回False

16,551

社区成员

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

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

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