写了份装B代码

来源:互联网 发布:tsp 组合优化问题 编辑:程序博客网 时间:2024/05/16 14:42
// 无任何意义代码#include <windows.h>#include <stdlib.h>#include <stdio.h>#include <tchar.h>DWORD dwTime = 5000;BOOL IsRuned = FALSE;UINT TimerHandle = 0;#if defined _DEBUG && !defined _CONSOLE#define print print_f#elif defined _DEBUG#define print printf#else#define print(a)  #endif#if defined _DEBUG && !defined _CONSOLEvoid print_f(TCHAR* format, ...){    va_list args;    HANDLE hconsole;    DWORD dwBytes;    TCHAR* MessageStr = new TCHAR[1024];    va_start(args, format);    _vsnprintf(MessageStr, 1024, format, args);    va_end(args);    // 这里句柄并不会多产生一个副本,所以不能被关闭,否则就无法输出数据了    hconsole = GetStdHandle(STD_OUTPUT_HANDLE);    WriteFile(hconsole, MessageStr, _tcslen(MessageStr)*sizeof(TCHAR), &dwBytes, NULL);    delete []MessageStr;}#endif void showtime(int time, LPSYSTEMTIME systime){    print("Set Run Timer %dms \n", time);    print("Hour:%d, Minute:%d, Second:%d\n", systime->wHour, systime->wMinute, systime->wSecond);}VOID CALLBACK TimeProc(HWND, UINT, UINT, DWORD){    SYSTEMTIME systime;    GetLocalTime(&systime);    if ( systime.wHour == 12 && systime.wMinute == 00 )    {        IsRuned = TRUE;        // Do Something        //     }    else if ( systime.wHour == 11 && systime.wMinute >= 55 )    {        DWORD newtime = 60 - systime.wMinute;        IsRuned = FALSE;        if (dwTime/1000 > newtime/10 )        {            // 如果现在是55分,则2500ms (2.5s)            if (dwTime > 500)            {                dwTime = newtime * 500; // 0.5s ~ 5.5s            }            showtime(dwTime, &systime);            KillTimer(NULL, TimerHandle);            TimerHandle = SetTimer(NULL, 0, dwTime, TimeProc);        }            }    else if (dwTime <= 5000 )    {        if (systime.wHour == 11)        {            dwTime = 1000*30*1; // 0.5分钟一次         }        else        {            dwTime = 1000*30*2; // 1分钟一次         }        showtime(dwTime, &systime);        KillTimer(NULL, TimerHandle);        TimerHandle = SetTimer(NULL, 0, dwTime, TimeProc);    }#ifdef _DEBUG    else    {        showtime(dwTime, &systime);    }#endif}INT _tmain(INT argc, TCHAR* argv[], char* env[]){    MSG msg;#if defined _DEBUG && !defined _CONSOLE    AllocConsole();#endif    TimerHandle = SetTimer(NULL, 0, dwTime, TimeProc);    while(GetMessage(&msg,NULL,0,0))    {          TranslateMessage(&msg);         DispatchMessage(&msg);     }#if defined _DEBUG && !defined _CONSOLE    FreeConsole();#endif    return 0;}// 解析命令行INT getcommmand(LPTSTR cmdline, TCHAR* argv[], INT argc){if (cmdline == NULL || (argv == NULL && argc != 0) ){return 0;}INT i = 0;INT nCmdCount = 0;    while( cmdline[i] != NULL )    {        size_t lenth = 0;        while ( cmdline[i] == TEXT(' ') || cmdline[i] == TEXT('\t') && cmdline[i] != TEXT('\0') )        {            i++;        }        // 最后留有空格的情况下        if (cmdline[i] == TEXT('\0'))        {            break;        }        if (cmdline[i] == TEXT('"'))        {            i++;            while(cmdline[i] != TEXT('"') && cmdline[i] != NULL && cmdline[i] != TEXT('\0'))            {                i++;                lenth++;            }        }        elsewhile( cmdline[i] != TEXT(' ') && cmdline[i] != TEXT('\t') && cmdline[i] != TEXT('\0')){i++;lenth++;}if (nCmdCount < argc){argv[nCmdCount] = (TCHAR*)HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, (lenth+1)*sizeof(TCHAR) );memcpy(argv[nCmdCount], &cmdline[i-lenth], lenth*sizeof(TCHAR));}                nCmdCount++;        if (cmdline[i] == TEXT('"'))        {            i++;        }                }    return nCmdCount;}// 释放命令行内存VOID freecommand(TCHAR* argv[], INT argc){    for (INT i=0; i<argc; i++)    {        if ( argv[i] == NULL )        {            break;        }        HeapFree(GetProcessHeap(), HEAP_NO_SERIALIZE, argv[i]);    }    return ;}INT WINAPI  WinMain( HINSTANCE hInstance,                      HINSTANCE hPrevInstance,                      LPTSTR lpCmdLine,                     int nShowCmd ){    INT argc = getcommmand(GetCommandLine(), NULL, 0);    TCHAR** argv = new TCHAR*[argc];    getcommmand(GetCommandLine(), argv, argc);    _tmain(argc, argv, NULL);    freecommand(argv, argc);    delete []argv;    return 0;}

0 0
原创粉丝点击