`

windows程序入口

阅读更多
操作系统装载应用程序后,做完初始化工作就转到程序的入口点执行。程序的默认入口点由连接程序设置,
不同的连接器选择的入口函数也不尽相同。在VC++下,连接器对控制台程序设置的入口函数是 mainCRTStartup,
mainCRTStartup 再调用main 函数;对图形用户界面(GUI)程序设置的入口函数是 WinMainCRTStartup,
WinMainCRTStartup 调用你自己写的 WinMain 函数。具体设置哪个入口点是由连接器的“/subsystem:”
选项确定的,它告诉操作系统如何运行编译生成的.EXE文件。可以指定四种方式:CONSOLE|WINDOWS|NATIVE|POSIX。
如果这个选项参数的值为 WINDOWS,则表示该应用程序运行时不需要控制台,有关连接器参数选项的详细说明请参考 MSDN 库。

以下四种组合,可以实现console和windows模式的混合,可以达到不弹出DOS窗口的效果,
也可以达到在Windows程序中向控制台输出printf信息的目的。
#pragma comment( linker, "/subsystem:windows /entry:WinMainCRTStartup" )
#pragma comment( linker, "/subsystem:windows /entry:mainCRTStartup" )
#pragma comment( linker, "/subsystem:console /entry:mainCRTStartup" )
#pragma comment( linker, "/subsystem:console /entry:WinMainCRTStartup" )

int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR      lpCmdLine,
int        nCmdShow)
{
      // ...
}

int main(void)
{
      // ...
}
1,上面的意思就是如果你想弹出Dos窗口的话,就调用
       #pragma comment( linker, "/subsystem:console /entry:mainCRTStartup" )
       #pragma comment( linker, "/subsystem:console /entry:WinMainCRTStartup" )
       这两个其中之一,具体哪个看你源代码的入口是main还是WinMain了。
       如果你不想弹出Dos窗口的话,对exe调用可执行jar文件非常有用,就调用
       #pragma comment( linker, "/subsystem:windows /entry:WinMainCRTStartup" )
       #pragma comment( linker, "/subsystem:windows /entry:mainCRTStartup" )
       这两个其中之一,具体还是看你源代码的入口是main还是WinMain了。
2,exe启动jar文件,模仿eclipse.exe文件
#pragma comment( linker, "/subsystem:windows /entry:mainCRTStartup" )
#include <stdlib.h>
#include <Windows.h>
int main(){
STARTUPINFO si = { sizeof(si) }; 
PROCESS_INFORMATION pi; 
TCHAR szCommandLine[] = TEXT("javaw -jar TT2012.jar"); 
CreateProcess(NULL, szCommandLine, NULL, NULL, 
FALSE, 0, NULL, NULL, &si, &pi);  
return EXIT_SUCCESS;
}
分享到:
评论

相关推荐

    Windows 程序设计(第5版)(上、下册)--详细书签版

    1.3.4 程序入口点 1.3.5 messagebox 函数 1.3.6 编译、链接和运行 第二章 unicode简介 2.1 字符集简史 . 2.1.1 美国标准 2.1.2 国际方面 2.1.3 扩展ascll 2.1.4 双字书字符集 2.1.5 ...

    windows 程序设计

    当Windows程序被加载到内存中时,程序中的呼叫被指向DLL函数的入口。如果该DLL不在内存中,就把它加载到内存中。 当您连结Windows程序以产生一个可执行文件时,您必须连结程序开发环境提供的特定「引用链接库...

    windows 程序设计中文版

    1.3.1 字符模式 1.3.2 Windows对应程序 1.3.3 头文件 1.3.4 程序入口 1.3.5 MessageBox函数 1.3.6 编译、链接及运行 第2章Unicode简介 2.1 字符集简史 2.1.1 美国标准 2.1.2 美国以外的世界 2.1.3 扩展ASCII 2.1.4 ...

    日记管理系统

    日记管理系统的报告掌握:创建窗口的过程;...• Windows程序入口函数是什么?和C中的main函数有什么区别? • 窗口创建的步骤是什么? • 每个步骤使用的API名称是什么? • 如何用代码C语言模拟消息处理?

    Windows程序设计笔记(1,2,3)

    近有幸拜读了Charles Petzold的大作《Windows程序设计》,真有种相见恨晚的感觉。这是一本1999年出版、主要讲述在Windows平台下如何使用C语言调用API函数进行软件开发的老书。在当今RAD工具充斥市场的今天,该书依然...

    Windows程序实现过程

    Windows程序:入口函数-&gt;设计窗口类-&gt;注册窗口类-&gt;创建窗口-&gt;显示窗口-&gt;更新窗口-&gt;消息循环

    windows服务程序c

    // 该调用是 Windows.Forms 组件设计器所必需的。 InitializeComponent(); // TODO: 在 InitComponent 调用后添加任何初始化 MainThread = new Thread(new ThreadStart(ThreadFunc)); MainThread.Priority = ...

    Windows进程观测

    Windows 2000可以识别的应用程序包括控制台应用程序、GUI应用程序和服务应用程序。控制台应用程序可以创建GUI,GUI应用程序可以作为服务来运行,服务也可以向标准的输出流写入数据。不同类型应用程序间的惟一重要...

    用API编写简单的Windows程序

    (2) WinMain函数的使用(Win32下程序的入口) (3) 完成Windows窗口产生的四个步骤: A.设计窗口类,即WNDCLASS结构体的填充, 其中注意窗口 函数的指定和类名的命名 B.注册窗口类,即RegisterClass(…) 函数的使用 C....

    windowsnt 技术内幕

    调协系统管理告警(Administrative Alert) 向用户发送系统管理消息 远程关闭一台Windows NT计算机 使用Windows NT系统属性对话框 Windows NT诊断程序(Diagnostic)简介 使用Windows NT诊断程序打印一份报告 在Windows ...

    实验三 Windows系统设置及应用程序.doc.doc

    实验三Windows系统设置及应用程序一.实验目的1.了解窗口的组成,熟练掌握窗口的...桌面上的[开始]按钮是运行Windows应用程序的入口,是执行程序常用的方式。Windows的主要功能都可以通过执行[开始]菜单提供的各项命令

    Windows应用程序捆绑核心编程光盘代码

    1.3.2 在应用程序中使用虚拟内存 6 1.3.3 获取虚存状态 7 1.3.4 确定虚拟地址空间的状态 8 1.3.5 改变内存页面保护属性 9 1.3.6 进行一个进程的内存读写 10 1.4 文件的内存映射 11 1.4.1 内存映射API函数 11 ...

    windows驱动开发技术详解-part2

    Windows操作系统的基本原理、NT驱动程序与WDM驱动程序的构造、驱动程序中的同步异步处理方法、驱 动程序中即插即用功能、驱动程序的各种调试技巧等。同时,还针对流行的PCI驱动程序、USB驱动程序 、虚拟串口驱动...

    一个监控网络流量出入口大小的VB程序.rar

    一个监控网络流量出入口大小的VB程序,这个程序可显示出发送的字节数、接收到的网络字节数,当前上传和下载速度,并支持在托盘处显示图标,可设置开机自动运行,启动后自动显示桌面窗口和主窗口,并可设置窗口置顶,...

    win2000驱动程序设计指南

    NIC微端口驱动程序入口点和初始化 47 3.1 NDIS微端口驱动程序入口函数 47 3.1.1 初始化包裹 47 3.1.2 注册微端口 48 3.1.2.1 指定NDIS版本号 48 3.1.2.2 注册MiniportXxx函数 48 3.1.2.3 为中断...

Global site tag (gtag.js) - Google Analytics