貌似是一个外国人写的,作用应该是让控制台的程序运行的时候不会弹出那个控制台黑框。想用来让它不显示 php-cgi.exe 运行后的窗口,可是效果不是预期的。

项目在 github 的位置:https://github.com/mtstickney/noconsole

项目源码:

 #include <windows.h>
#include <shellapi.h>
#include <stdio.h> #ifdef UNICODE
#define MAIN wWinMain
#else
#define MAIN WinMain
#endif int WINAPI MAIN(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR pCmdLine, int nCmdShow)
{
int argnum = ;
STARTUPINFO si;
PROCESS_INFORMATION pi;
DWORD exit_code; ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
si.dwFlags = STARTF_USESHOWWINDOW;
si.wShowWindow = SW_HIDE;
ZeroMemory(&pi, sizeof(pi)); /* Note: argnum is not like argc... */
if (argnum < ) {
fputs("Usage: noconsole <program> [<args>...]\n", stderr);
ExitProcess();
} /* Start the child process */
if (!CreateProcess(NULL, pCmdLine, NULL, NULL, FALSE, , NULL, NULL, /* Note that the previous should maybe be set to the cwd of the program being run */
&si,
&pi))
{
fprintf(stderr, "Error starting process, code %d.\n", (int)GetLastError());
ExitProcess();
} /* Wait for child exit */
WaitForSingleObject(pi.hProcess, INFINITE); GetExitCodeProcess(pi.hProcess, &exit_code); /* Clean up the handles */
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread); ExitProcess(exit_code);
return ;
}

第35行是手动添加上的强制类型转换,不然在我的64位win8中会出错。

一个noconsole程序的更多相关文章

  1. DirectX游戏编程(一):创建一个Direct3D程序

    一.环境 Visual Studio 2012,DirectX SDK (June 2010) 二.准备 1.环境变量(如没有配置请添加) 变量名:DXSDK_DIR 变量值:D:\Software\ ...

  2. 第一个python程序

    一个python程序的两种执行方式: 1.第一种方式是通过python解释器: cmd->python->进入python解释器->编写python代码->回车. 2.第二种方 ...

  3. 编写第一个MapReduce程序—— 统计气温

    摘要:hadoop安装完成后,像学习其他语言一样,要开始写一个“hello world!” ,看了一些学习资料,模仿写了个程序.对于一个C#程序员来说,写个java程序,并调用hadoop的包,并跑在 ...

  4. 1.3 第一个C#程序

    几乎没一门编程语言的第一个程序都叫“你好,世界”,所以先在visual studio 中创建一个Helloworld程序. 各部分的详细内容: Main方法是程序运行的起点,最重要的代码就写在Main ...

  5. 一个.net程序员的安卓之旅-Eclipse设置代码智能提示功能

    一个.net程序员的安卓之旅-代码智能提示功能 过完年回来就决心开始学安卓开发,就网上买了个内存条加在笔记本上(因为笔记本原来2G内存太卡了,装了vs2010.SQL Server 2008.orac ...

  6. MFC-01-Chapter01:Hello,MFC---1.3 第一个MFC程序(02)

    1.3.1 应用程序对象 MFC应用程序的核心就是基于CWinApp类的应用程序对象,CWinApp提供了消息循环来检索消息并将消息调度给应用程序的窗口.当包含头文件<afxwin.h>, ...

  7. Go! new Hello World, 我的第一个Go程序

    以下语句摘自百度百科: Go语言是谷歌2009发布的第二款开源编程语言. Go语言专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全.支持并行进 ...

  8. 搭建java开发环境、使用eclipse编写第一个java程序

    搭建java开发环境.使用eclipse编写第一个java程序 一.Java 开发环境的搭建 1.首先安装java SDK(简称JDK). 点击可执行文件 jdk-6u24-windows-i586. ...

  9. 第一个ruby程序

    老实说不是很喜欢去讨论ruby和python的对比,似乎总是把两个语言放在对立的位置上,我觉得没有必要,同样是动态语言,同样是解释型脚本语言,很多特性都是互相影响的,语言本身也在不断进化,我们更应该关 ...

随机推荐

  1. iOS UPYUN(又拍云)使用总结

    UPYUN,原来没用过,上个周用了一次,觉得蛮方便的,对于个人开发者,且没有服务器的,上传图片和文件,是个不二选择. 首先,先明白原理: 1.又拍云有一个上传空间,在这个空间里,有空间名称.密钥,其他 ...

  2. boost::circular_buffer

    boost::circular_buffer的push_back分析 circular_buffer为了效率考虑,使用了连续内存块保存元素   使用固定内存,没有隐式或者非期望的内存分配 快速在cir ...

  3. 【转】【翻】Android Design Support Library 的 代码实验——几行代码,让你的 APP 变得花俏

    转自:http://mrfufufu.github.io/android/2015/07/01/Codelab_Android_Design_Support_Library.html [翻]Andro ...

  4. sell-- 英文网站产品显示404?

    1. 简介: 通过在主页(header.jsp)查询B22212,在localhost本地, cn和us查询的结果search.jsp中显示都是没有找到! 但是在外网(www),cn能够查询到,并展示 ...

  5. App Store idfa被拒检查办法

    最近应用因为这个问题被拒两次,理由如下: PLA 3.3.12We found your app uses the iOS Advertising Identifier but does not in ...

  6. iostart命令

    Linux系统中的 iostat命令可以对系统的磁盘IO和CPU使用情况进行监控.iostat属于sysstat软件包,可以用yum -y install sysstat 直接安装. 1.基本使用:i ...

  7. 关于js的call()和apply()两个函数的一点个人看法

    首先说明一下,call()和apply都是js的内置函数 它的作用是:改变call或者apply函数里面的``第一个参数对象``的指针,使它转向引用它的函数 call()的用法,call(对象,参数1 ...

  8. 小白教你玩转php的闭包

    php5.3有一个非常赞的新特性,那就是支持匿名函数(闭包).匿名函数可用于动态创建函数,并保存到一个变量中.举个栗子: $func = function(){ exit('Hello world!! ...

  9. Android --slidedatetimepicker时间控件应用

    下载参考SlideDateTimePicker时间选择器 1.创建 beginTimeTxt=(EditText)findViewById(R.id.search_begintime_edittext ...

  10. iOS - (集成支付宝SDK大坑总结)

    其实集成支付宝相对于集成微信支付来说,支付宝算是简单的了,后续有空再去研究微信支付,现目前先总结一下集成支付宝所遇到的坑,其实支付宝的坑也不算太多,细算下来大概5-6个左右,但是其报错方式有点恶心,不 ...