1
2
3
4
5
6 #include "stdafx.h"
7
8
9
10
11
12 #ifndef _countof
13 #define _countof(array) (sizeof(array)/sizeof(array[0]))
14 #endif
15
16 #define _WRITE_CONSOLE _tprintf
17 #define _STRICMP _tcsicmp
18 #define _STRNICMP _tcsncicmp
19 #define _STRLEN _tcslen
20
21
22
23
24
25 #define DELIMITER_SLASH _T('/')
26 #define DELIMITER_HYPHEN _T('-')
27
28 #define LITERAL_HELP _T("?")
29 #define LITERAL_CONSOLE _T("console")
30 #define LITERAL_NAME _T("name:")
31 #define LITERAL_CONFIG _T("config:")
32
33 #define LITERAL_NAME_LEN (_countof(LITERAL_NAME)-1)
34 #define LITERAL_CONFIG_LEN (_countof(LITERAL_CONFIG)-1)
35
36 #define LITERAL_HELP_DESCRIPTION (LITERAL_HELP _T("\t\t\tHelp."))
37 #define LITERAL_CONSOLE_DESCRIPTION (LITERAL_CONSOLE _T("\t\tRun Console mode."))
38 #define LITERAL_NAME_DESCRIPTION (LITERAL_NAME _T("{name}\t\tSet Service Name."))
39 #define LITERAL_CONFIG_DESCRIPTION (LITERAL_CONFIG _T("{file}\t\tSet Config filename."))
40
41
42
43
44
45 void ParseCommandLine( int nArgc, TCHAR ** szArgv );
46
47
48
49
50
51 int _tmain(int argc, _TCHAR* argv[])
52 {
53 ParseCommandLine( argc, argv );
54
55 return 0;
56 }
57
58
59
60
61
62 void ParseCommandLine( int nArgc, TCHAR ** szArgv )
63 {
64 for( int i=1; nArgc>i; ++i )
65 {
66 TCHAR * szTemp = szArgv[ i ];
67
68 if( ( DELIMITER_SLASH != *szTemp )
69 && ( DELIMITER_HYPHEN != *szTemp ) )
70 {
71 continue;
72 }
73
74 ++szTemp;
75
76
77
78 if( 0 == _STRICMP( LITERAL_CONSOLE, szTemp ) )
79 {
80
81
82
83 _WRITE_CONSOLE( _T( "Console mode\t: [ON]\n" ) );
84
85 }
86 else if( ( 0 == _STRNICMP( LITERAL_NAME, szTemp, LITERAL_NAME_LEN ) )
87 && ( 0 != _STRLEN( szTemp + LITERAL_NAME_LEN ) ) )
88 {
89 TCHAR * szName = szTemp + LITERAL_NAME_LEN;
90
91
92
93
94 _WRITE_CONSOLE( _T( "Service name\t: [%s]\n" ), szName );
95
96 }
97 else if( ( 0 == _STRNICMP( LITERAL_CONFIG, szTemp, LITERAL_CONFIG_LEN ) )
98 && ( 0 != _STRLEN( szTemp + LITERAL_CONFIG_LEN ) ) )
99 {
100 TCHAR * szConfig = szTemp + LITERAL_CONFIG_LEN;
101
102
103
104
105 _WRITE_CONSOLE( _T( "Config file\t: [%s]\n" ), szConfig );
106
107 }
108 else if( 0 == _STRICMP( LITERAL_HELP, szTemp ) )
109 {
110 TCHAR * szHelp[] = {
111 LITERAL_HELP_DESCRIPTION,
112 LITERAL_CONSOLE_DESCRIPTION,
113 LITERAL_NAME_DESCRIPTION,
114 LITERAL_CONFIG_DESCRIPTION
115 };
116
117
118
119 _WRITE_CONSOLE( _T( "Options:\n" ) );
120
121 for( int i=0; _countof( szHelp )>i; ++i )
122 {
123 _WRITE_CONSOLE( _T( "\t%c%s\n" ), DELIMITER_SLASH, szHelp[ i ] );
124 }
125 }
126 }
127 }
1
2
3
4
5
6
7
8 HANDLE g_hConIn = NULL;
9 HANDLE g_hConOut = NULL;
10
11
12
13
14 void InitConsole()
15 {
16 DWORD dwMode = 0;
17
18 g_hConIn = GetStdHandle( STD_INPUT_HANDLE );
19 g_hConOut = GetStdHandle( STD_OUTPUT_HANDLE );
20
21
22 GetConsoleMode( g_hConIn, &dwMode );
23 dwMode &= ~ENABLE_MOUSE_INPUT;
24 SetConsoleMode( g_hConIn, dwMode );
25 }
26
27
28
29
30 BOOL SetConsoleTextAttribute(
31 HANDLE hConsoleOutput,
32 WORD wAttributes
33 );
34
35 BOOL WriteConsole(
36 HANDLE hConsoleOutput,
37 const VOID * lpBuffer,
38 DWORD nNumberOfCharsToWrite,
39 LPDWORD lpNumberOfCharsWritten,
40 LPVOID lpReserved
41 );
1 BOOL WINAPI HandlerRoutine(
2 DWORD dwCtrlType
3 );
4
5 BOOL WINAPI SetConsoleCtrlHandler(
6 PHANDLER_ROUTINE HandlerRoutine,
7 BOOL Add
8 );
9
CategorySystem CategoryWin32 UnfinishedPage
Win32 Console 프로그래밍 (last edited 2009-05-14 03:20:28 by viper)