-
c语言入门之利用C++ Builer编制控制台程序
湖州市区供电公司微机室 宗丽英
如今,许多公司开发的应用系统在开机时要进行预处理,如映射网络驱动器、更新文件等。现在这类工作一部分转为由专业应用软件承担,而另一部分则仍需要程序员编制控制台程序,将它放置windows的注册表或启动中来完成该功能。如何简单的编制控制台程序,Borland C++ Builder给程序员带来了便捷。
本文是以编制映射网络驱动器程序(类似Windows中net use命令)为例,阐述如何用C++ Builder编制控制台程序。
一、软件环境:Borland C++ Builder。
二、具体编写过程
1、新建一个Dos应用程序
选择File->New->Console Wizard,务必选中Include the Visual Component Library(VCL)。
2、具体编程
#include
#include hdrstop
#include
#include
#pragma argsused
char *letter[3],*remote,*pwd,*user ;
bool CmpString(char sub[2],char *s,int len) ;
bool MapDriver(char *letter,char *remote,char *pwd,char *user) ;
int main(int argc,char*argv[ ])
{
if(argc<3)
cout<<"Usage:"<
getchar();
exit(0);
letter[0]=argv[1][0];
letter[1]=':';
letter[2]='\0';
//Confirm it is a network letter
if (!((letter[0]>'C' && letter[0]<='Z' )||(letter[0]>'c'&&letter[0]<='Z')))
{
cout<<"Driver letter:A-Z or a-z"<
exit(0);
}
remote=argv[2];
int i,j;
for(i=3;i
{
if (CmpString("-u",argv[i][2]))
{
user=new char [strlen(argv[i]-2)];
for (j=0;j
user[j]=argv[i][j+2];
user[j]='\0';
}
if (CmpString("-p",argv[i][2]))
{
pwd=new char [strlen(argv[i]-2)];
for (j=0;j
pwd[j]=argv[i][j+2];
pwd[j]='\0';
}
}
if (MapDriver(letter,remote,pwd,user))
cout<<"Map "<
else
cout<<"Map "<
}
bool MapDriver(char *letter,char *remote,char *pwd,char *user)
{
TNetResource NRW;
NRW.dwType=RESOURCETYPE_ANY;
NRW.lpLocalName=letter;
NRW.lpRemoteName=remote;
NRW.lpComment="";
NRW.lpProvider="";
if (WNetAddConnection2(&NRW,pwd,user,CONNECT_UPDATE_PROFILE) ==NO_ERROR)
return true;
else
return false;
}
bool CmpString(char sub[2],char *s,int len)
{
for (int i=0;i
if (sub[i]!=s[i])
return false;
else
return true;
}
为了使该程序起作用,一般将它直接加入到客户端的启动中.基本方法有两种:一种是由安装程序完成该功能,另一种是利用C++ Builder针对TRegister编程。因篇幅有限,本文在这方面不再详细阐述。
上述程序在C++ Builder 4.0中编译通过。
如今,许多公司开发的应用系统在开机时要进行预处理,如映射网络驱动器、更新文件等。现在这类工作一部分转为由专业应用软件承担,而另一部分则仍需要程序员编制控制台程序,将它放置windows的注册表或启动中来完成该功能。如何简单的编制控制台程序,Borland C++ Builder给程序员带来了便捷。
本文是以编制映射网络驱动器程序(类似Windows中net use命令)为例,阐述如何用C++ Builder编制控制台程序。
一、软件环境:Borland C++ Builder。
二、具体编写过程
1、新建一个Dos应用程序
选择File->New->Console Wizard,务必选中Include the Visual Component Library(VCL)。
2、具体编程
#include
#include hdrstop
#include
#include
#pragma argsused
char *letter[3],*remote,*pwd,*user ;
bool CmpString(char sub[2],char *s,int len) ;
bool MapDriver(char *letter,char *remote,char *pwd,char *user) ;
int main(int argc,char*argv[ ])
{
if(argc<3)
cout<<"Usage:"<
getchar();
exit(0);
letter[0]=argv[1][0];
letter[1]=':';
letter[2]='\0';
//Confirm it is a network letter
if (!((letter[0]>'C' && letter[0]<='Z' )||(letter[0]>'c'&&letter[0]<='Z')))
{
cout<<"Driver letter:A-Z or a-z"<
exit(0);
}
remote=argv[2];
int i,j;
for(i=3;i
{
if (CmpString("-u",argv[i][2]))
{
user=new char [strlen(argv[i]-2)];
for (j=0;j
user[j]=argv[i][j+2];
user[j]='\0';
}
if (CmpString("-p",argv[i][2]))
{
pwd=new char [strlen(argv[i]-2)];
for (j=0;j
pwd[j]=argv[i][j+2];
pwd[j]='\0';
}
}
if (MapDriver(letter,remote,pwd,user))
cout<<"Map "<
else
cout<<"Map "<
}
bool MapDriver(char *letter,char *remote,char *pwd,char *user)
{
TNetResource NRW;
NRW.dwType=RESOURCETYPE_ANY;
NRW.lpLocalName=letter;
NRW.lpRemoteName=remote;
NRW.lpComment="";
NRW.lpProvider="";
if (WNetAddConnection2(&NRW,pwd,user,CONNECT_UPDATE_PROFILE) ==NO_ERROR)
return true;
else
return false;
}
bool CmpString(char sub[2],char *s,int len)
{
for (int i=0;i
if (sub[i]!=s[i])
return false;
else
return true;
}
为了使该程序起作用,一般将它直接加入到客户端的启动中.基本方法有两种:一种是由安装程序完成该功能,另一种是利用C++ Builder针对TRegister编程。因篇幅有限,本文在这方面不再详细阐述。
上述程序在C++ Builder 4.0中编译通过。
最新更新
Objective-C语法之代码块(block)的使用
VB.NET eBook
Add-in and Automation Development In VB.NET 2003 (F
Add-in and Automation Development In VB.NET 2003 (8
Add-in and Automation Development in VB.NET 2003 (6
Add-in and Automation Development In VB.NET 2003 (5
AddIn Automation Development In VB.NET 2003 (4)
AddIn And Automation Development In VB.NET 2003 (2)
Addin and Automation Development In VB.NET 2003 (3)
AddIn And Automation Development In VB.NET 2003 (1)
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
SQL Server -- 解决存储过程传入参数作为s
武装你的WEBAPI-OData入门
武装你的WEBAPI-OData便捷查询
武装你的WEBAPI-OData分页查询
武装你的WEBAPI-OData资源更新Delta
5. 武装你的WEBAPI-OData使用Endpoint 05-09
武装你的WEBAPI-OData之API版本管理
武装你的WEBAPI-OData常见问题
武装你的WEBAPI-OData聚合查询
OData WebAPI实践-OData与EDM
OData WebAPI实践-Non-EDM模式