windows系统主函数的简单介绍
如何编写windows服务程序
Windows提供了一套后台服务程序编程接口,用户在编写后台服务程序时需要遵循一定的编程框架,否则服务程序不能正常运行。服务程序通常编写成控制台类型的应用程序,总的来说,一个遵守服务控制管理程序接口要求的程序 包含下面三个函数:
在临渭区等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供网站设计制作、做网站 网站设计制作定制网站,公司网站建设,企业网站建设,高端网站设计,全网营销推广,外贸网站制作,临渭区网站建设费用合理。
1)服务程序主函数(main):调用系统函数 StartServiceCtrlDispatcher 连接程序主线程到服务控制管理程序。
和其它进程一样,Main函数是服务进程的入口函数,服务控制管理器(SCM)在启动服务程序时,会从服务程序的main函数开始执行。在进入点函数里面要完成ServiceMain的初始化,准确点说是初始化一个SERVICE_TABLE_ENTRY结构数组,这个结构记录了这个服务程序里面所包含的所有服务的名称和服务的进入点函数。然后再调用接口StartServiceCtrlDispatcher 。
Main函数的函数框架如下:
int _tmain(int argc, _TCHAR* argv[])
{
//服务入口点函数表
SERVICE_TABLE_ENTRY dispatchTable[]=
{
{TEXT(SZSERVICENAME),(LPSERVICE_MAIN_FUNCTION)Service_Main},
{ NULL,NULL}
};
if((argc1)((*argv[1]==‘-‘)||(argv[1]=="/")))
{
/*
参数个数大于1是安装或者删除服务,该操作是由用户来执行的
当然也可以讲这一部分功能另写一个程序来实现
*/
if(_stricmp("install",argv[1]+1)==0)
main函数的参数
C程序最大的特点就是所有的程序都是用函数来装配的。main()称之为主函数,是所有程
序运行的入口。其余函数分为有参或无参两种,均由main()函数或其它一般函数调用,若调用
的是有参函数,则参数在调用时传递。 int main(void)//整数类型主函数(无类型){...y1=f1(x1,x2);//赋值过程...}f1(int a,int b)//f1(整数类型a,整数类型b){//百度百科示例代码.....Y2=f2(x3,x4);//赋值过程//百度百科示例代码}f2(int m,int n)//f2(整数类型m,整数类型n){//百度百科示例代码}在前面课程的学习中,对main()函数始终作为主调函数处理,也就是说,允许main()调用
其它函数并传递参数。事实上,main()函数既可以是无参函数,也可以是有参的函数。对于有
参的形式来说,就需要向其传递参数。
我们先看一下main()函数的带参的形式: int main(int argc,char **argv)//整数类型主函数(整数类型统计参数个数,字符类型*数组指针至字符[]){//百度百科示例代码......}从函数参数的形式上看,包含一个整型和一个指针数组。当一个C的源程序经过编译、链接后,会生成扩展名为.EXE的可执行文件(对windows操作系统而言),这是可以在操作系统下直接运行的文件,换句话说,就是由系统来启动运行的。对main()函数既然不能由其它函数调用和传递参数,就只能由
系统在启动运行时传递参数了。
在操作系统环境下,一条完整的运行命令应包括两部分:命令与相应的参数。其格式为:
命令参数1参数2....参数nt;
此格式也称为命令行。命令行中的命令就是可执行文件的文件名,其后所跟参数需用空格分隔,并为对命令的进一步补充,也即是传递给main()函数的参数。
命令行与main()函数的参数存在如下的关系:
设命令行为:program str1 str2 str3 str4 str5
其中program为文件名,也就是一个由program.c经编译、链接后生成的可执行文件program.exe,其后各跟5个参数。对main()函数来说,它的参数argc记录了命令行中命令与参数的个数,共6个,指针数组的大小由参数argc的值决定,即为char*argv[6],指针数组的取值情况如图6-15所示。
数组的各指针分别指向一个字符串。应当引起注意的是接收到的指针数组的各指针是从命令行的开始接收的,首先接收到的是命令,其后
才是参数。
下面用实例来说明带参数的main()函数的正确使用。
[例6-29] 利用图形库函数绘制一个变化的环。它是把一个半径为R 1的圆周分成n份,然
后以每个等分点为圆心,以R s为半径画n个圆(关于作图的详细理论本教材第9章第1节作了专
门介绍,这里只作简单分析)。利用m a i n ( )函数的带参数形式,我们可以从键盘以命令行的方
式输入R 1和R s及屏幕的背景色。 #includegraphics.h//包含图形库函数的头文件#includemath.h#definepi3.1415926intmain(int argc,char **argv){intx,y,r1,rs,color;double a;intgdriver=DETECT,gmode;initgraph(gdriver,gmode,"..\\bgi")//启动图形工作方式r1=atoi(argv[1]);//计算基础圆半径rs=atoi(argv[2]);//计算同心圆半径color=atoi(argv[3]);//背景色cleardevice();//清除图形屏幕setbkcolor(color);//设置背景色setcolor⑷;//设置图形显示颜色for(a=0;a=2*pi;a+=pi/18)//绘制同心圆{x=r1*cos(a)+320;y=r1*sin(a)+240;circle(x,y,rs);//以圆心坐标为x、y,半径为rs画圆}getch();//等待按键继续closegraph();//关闭图形工作方式return0;}若程序名为L6-29.c,经编译、连结生成可执行文件L6-29.exe。在操作系统的环境下运行程序,命令行方式为:
具体步骤:
1、Win + R打开运行;
2、输入cmd打开命令行;
3、进入到要执行的exe文件所在目录,如要要执行E:\程序设计\Ctest.exe文件,则输入E:回车(注意:如果要更改其他盘目录必须首先进入要进入盘的根目录,例如进入E盘则输入E:不用输入cd E:)进入E盘根目录,再输入cd E:\程序设计 则进入了当前目录,最后就可以输入参数了,例如Ctest yishi weban回车即可(Ctest为要执行的可执行文件,后面两个也为要传递给main函数的参数);
l6-29 40 20 3
则命令行与main()函数的参数有如图6-16所示的关系
图6-16中,argv[0]是程序名,argv[1]是r1的值,
argv[2]是rs的值,argv[3]是屏幕的背景色。
由于指针数组均存放字符串,所需的圆半径及背景
色彩通过atoi()函数转换为整型。
通过带参数的main()函数,我们可以为自己的程序设置口令,在运行程序的命令行中给出所需的口令,正确则继续,否则退出。程序图形输出如图6-17所示。
[例6-30]将上述程序作修改,在程序的入口处添置密码,若给定密码正确,则显示图
形。 #includegraphics.h#includemath.h#definepi3.1415926int main(int argc, char **argv){intx,y,r1,rs,color;doublea;intgdriver=DETECT,gmode;if(strcmp(argv[1],"pass")!=0)//设置口令的比较{printf("passworderror!\n");exit(0);}initgraph(gdriver,gmode,"..\\bgi");r1=atoi(argv[2]);rs=atoi(argv[3]);color=atoi(argv[4]);cleardevice();setbkcolor(color);setcolor⑷;for(a=0;a=2*pi;a+=pi/18){x=r1*cos(a)+320;y=r1*sin(a)+240;circle(x,y,rs);}getch();closegraph();return0;}在操作系统的环境下运行程序, 命令行中增加口令“pass”,命令行方式为:
l6-30 pass 20 40 3
指针数组的存储字符串如图6-18所示。
若给定字符串argv[1]的值是pass,则程序正确运行,否则程序退出。口令正确的情况下,显示的图形为图6-17中的一个。
什么是windows窗口函数
理解Window系统、主窗口、窗口函数这三者之间的关系,对于编写Windows程序十分重要。
主函数和窗口函数都是由Windows系统来调用的函数,只不过主函数是程序启动之后,系统首先调用的函数;
而窗口函数是主函数在获得消息并把消息发给系统之后,由操作系统调用的函数。
不同的消息所对应的操作就是由窗口函数完成的,Windows程序员的工作就是编写窗口函数的case中的代码。
Windows系统、主函数、窗口函数这三者之间的关系,如下图所示:
windowsmain程序可以使用剪贴板吗
可以。在windows系统中,main程序是可以使用剪贴板的,main程序又称主函数,是程序执行的起点,通常写在程序的最开头部位,是可以运用剪切板进行复制粘贴操作的,在程序中起到重要作用。
本文标题:windows系统主函数的简单介绍
标题路径:http://azwzsj.com/article/hheehs.html