#include <windows.h>
#include <tchar.h>
#include <tlhelp32.h>
#include <vector>
using std::vector;
using std::iterator;
TCHAR szMessage[200] = _T("你好!你好!你好!"); //信息框的内容
TCHAR szCaption[200] = _T("Hello World"); //信息框的标题
vector<UINT> v_mType; //全局消息存放框类型的vector
int _stdcall WinMain( __in HINSTANCE hInstance, __in_opt HINSTANCE hPrevInstance, __in_opt LPSTR lpCmdLine, __in int nShowCmd )
{
v_mType.push_back(MB_OK);
v_mType.push_back(MB_CANCELTRYCONTINUE);
v_mType.push_back(MB_OKCANCEL);
v_mType.push_back(MB_ABORTRETRYIGNORE);
v_mType.push_back(MB_YESNOCANCEL);
v_mType.push_back(MB_YESNO);
v_mType.push_back(MB_RETRYCANCEL);
v_mType.push_back(MB_ICONHAND);
v_mType.push_back(MB_ICONQUESTION);
v_mType.push_back(MB_ICONEXCLAMATION);
v_mType.push_back(MB_ICONASTERISK);
v_mType.push_back(MB_USERICON) ;
v_mType.push_back(MB_DEFBUTTON1) ;
v_mType.push_back(MB_DEFBUTTON2) ;
v_mType.push_back(MB_DEFBUTTON3) ;
v_mType.push_back(MB_DEFBUTTON4) ;
v_mType.push_back(MB_APPLMODAL) ;
v_mType.push_back(MB_SYSTEMMODAL) ;
v_mType.push_back(MB_TASKMODAL) ;
v_mType.push_back(MB_HELP) ;
v_mType.push_back( MB_NOFOCUS) ;
v_mType.push_back(MB_SETFOREGROUND) ;
v_mType.push_back(MB_DEFAULT_DESKTOP_ONLY);
v_mType.push_back(MB_TOPMOST) ;
v_mType.push_back(MB_RIGHT) ;
v_mType.push_back( MB_RTLREADING) ;
v_mType.push_back(MB_SERVICE_NOTIFICATION);
v_mType.push_back(MB_SERVICE_NOTIFICATION);
v_mType.push_back(MB_SERVICE_NOTIFICATION_NT3X);
v_mType.push_back(MB_TYPEMASK);
v_mType.push_back(MB_ICONMASK);
v_mType.push_back(MB_DEFMASK);
v_mType.push_back(MB_MODEMASK);
v_mType.push_back( MB_MISCMASK);
PROCESS_INFORMATION pProcessInfo;
STARTUPINFO startInfo = {0};
startInfo.cb = sizeof(STARTUPINFO);
startInfo.dwFlags = STARTF_FORCEONFEEDBACK;
LPWSTR arg;
arg = GetCommandLine();//用CommandLine完成进程之间的消息传递。。好吧我知道这很搓-__-
size_t i = wcslen(arg)-60;//貌似我的测试的commandling长度是60(好像是路径)。就脑残的写成这样了。
if ( i > v_mType.size() || i < 0)
{
arg = L"ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss"; //60个S只是为了让下次为v_mType[0]
}
TCHAR szCommand[1000];
wcscpy(szCommand,arg);
wcscat(szCommand,L"s"); //commandline + "s" 下个进程里面的i就可以+1
TCHAR szModuleName[MAX_PATH];
GetModuleFileName(NULL,szModuleName,MAX_PATH-1);//获得模块路径。程序不再受名字的限制编译后随便改
CreateProcess(
szModuleName,
szCommand,
NULL ,NULL,true,
NORMAL_PRIORITY_CLASS ,
NULL,NULL,&startInfo,&pProcessInfo);
if( i>= 0 && i< v_mType.size() )
{
while( true )
{
MessageBox(NULL,szMessage,szCaption,v_mType[i]);
}
}
return 0;
}