ReactOS 0.4.15-dev-8231-g29a56f3
tnmisc.cpp File Reference
#include "precomp.h"
Include dependency graph for tnmisc.cpp:

Go to the source code of this file.

Functions

BOOL CreateHiddenConsoleProcess (LPCTSTR szChildName, PROCESS_INFORMATION *ppi, LPHANDLE phInWrite, LPHANDLE phOutRead, LPHANDLE phErrRead)
 
BOOL SpawnProcess (char *cmd_line, PROCESS_INFORMATION *pi)
 
int GetWin32Version (void)
 
HWND TelnetGetConsoleWindow ()
 
bool SetIcon (HWND hConsoleWindow, HANDLE hIcon, LPARAM *pOldBIcon, LPARAM *pOldSIcon, const char *icondir)
 
void ResetIcon (HWND hConsoleWindow, LPARAM oldBIcon, LPARAM oldSIcon)
 

Function Documentation

◆ CreateHiddenConsoleProcess()

BOOL CreateHiddenConsoleProcess ( LPCTSTR  szChildName,
PROCESS_INFORMATION ppi,
LPHANDLE  phInWrite,
LPHANDLE  phOutRead,
LPHANDLE  phErrRead 
)

Definition at line 5 of file tnmisc.cpp.

7 {
8 BOOL fCreated;
12 HANDLE hOutWrite = INVALID_HANDLE_VALUE;
13 HANDLE hErrWrite = INVALID_HANDLE_VALUE;
14
15 // Create pipes
16 // initialize security attributes for handle inheritance (for WinNT)
17 sa.nLength = sizeof( sa );
18 sa.bInheritHandle = TRUE;
19 sa.lpSecurityDescriptor = NULL;
20
21 // create STDIN pipe
22 if( !CreatePipe( &hInRead, phInWrite, &sa, 0 )) {
23 hInRead = INVALID_HANDLE_VALUE;
24 goto error;
25 }
26
27 // create STDOUT pipe
28 if( !CreatePipe( phOutRead, &hOutWrite, &sa, 0 )) {
29 hOutWrite = INVALID_HANDLE_VALUE;
30 goto error;
31 }
32
33 // create STDERR pipe
34 if( !CreatePipe( phErrRead, &hErrWrite, &sa, 0 )) {
35 hErrWrite = INVALID_HANDLE_VALUE;
36 goto error;
37 }
38
39 // process startup information
40 memset( &si, 0, sizeof( si ));
41 si.cb = sizeof( si );
43 // child process' console must be hidden for Win95 compatibility
45 // assign "other" sides of pipes
46 si.hStdInput = hInRead;
47 si.hStdOutput = hOutWrite;
48 si.hStdError = hErrWrite;
49
50 // Create a child process (suspended)
51 fCreated = CreateProcess( NULL,
52 (LPTSTR)szChildName,
53 NULL,
54 NULL,
55 TRUE,
56 0,
57 NULL,
58 NULL,
59 &si,
60 ppi );
61
62 if( !fCreated )
63 goto error;
64
65 CloseHandle( hInRead );
66 CloseHandle( hOutWrite );
67 CloseHandle( hErrWrite );
68
69 return TRUE;
70
71error:
72 if (hInRead != INVALID_HANDLE_VALUE) CloseHandle( hInRead );
73 if (hOutWrite != INVALID_HANDLE_VALUE) CloseHandle( hOutWrite );
74 if (hErrWrite != INVALID_HANDLE_VALUE) CloseHandle( hErrWrite );
75 CloseHandle( ppi->hProcess );
76 CloseHandle( ppi->hThread );
77
78 hInRead =
79 hOutWrite =
80 hErrWrite =
81 ppi->hProcess =
83
84 return FALSE;
85}
static struct sockaddr_in sa
Definition: adnsresfilter.c:69
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
#define CloseHandle
Definition: compat.h:739
#define INVALID_HANDLE_VALUE
Definition: compat.h:731
unsigned int BOOL
Definition: ntddk_ex.h:94
#define error(str)
Definition: mkdosfs.c:1605
BOOL WINAPI CreatePipe(PHANDLE hReadPipe, PHANDLE hWritePipe, LPSECURITY_ATTRIBUTES lpPipeAttributes, DWORD nSize)
Definition: npipe.c:117
#define memset(x, y, z)
Definition: compat.h:39
HANDLE hStdOutput
Definition: winbase.h:847
HANDLE hStdError
Definition: winbase.h:848
DWORD dwFlags
Definition: winbase.h:842
DWORD cb
Definition: winbase.h:831
HANDLE hStdInput
Definition: winbase.h:846
WORD wShowWindow
Definition: winbase.h:843
#define CreateProcess
Definition: winbase.h:3758
#define STARTF_USESHOWWINDOW
Definition: winbase.h:491
#define STARTF_USESTDHANDLES
Definition: winbase.h:499
#define SW_HIDE
Definition: winuser.h:768
CHAR * LPTSTR
Definition: xmlstorage.h:192

Referenced by Telnet::Open().

◆ GetWin32Version()

int GetWin32Version ( void  )

Definition at line 98 of file tnmisc.cpp.

98 {
99 // return win32 version; 0 = Win32s, 1 = Win95, 2 = WinNT, 3 = Unknown -crn@ozemail.com.au
100 LPOSVERSIONINFO osv;
101 DWORD retval;
102
103 osv = new OSVERSIONINFO;
104
105 osv->dwOSVersionInfoSize = sizeof (OSVERSIONINFO);
106 GetVersionEx (osv);
107 retval = osv->dwPlatformId;
108 delete osv;
109 return (retval);
110}
unsigned long DWORD
Definition: ntddk_ex.h:95
ULONG dwPlatformId
Definition: rtltypes.h:241
ULONG dwOSVersionInfoSize
Definition: rtltypes.h:237
#define GetVersionEx
Definition: winbase.h:3852
OSVERSIONINFOA OSVERSIONINFO
Definition: rtltypes.h:306

Referenced by telCommandLine().

◆ ResetIcon()

void ResetIcon ( HWND  hConsoleWindow,
LPARAM  oldBIcon,
LPARAM  oldSIcon 
)

Definition at line 179 of file tnmisc.cpp.

179 {
180#ifdef ICON_BIG
181 SendMessage(hConsoleWindow, WM_SETICON, ICON_BIG, (LPARAM)oldBIcon);
182#endif
183#ifdef ICON_SMALL
184 SendMessage(hConsoleWindow, WM_SETICON, ICON_SMALL, (LPARAM)oldSIcon);
185#endif
186}
#define ICON_BIG
Definition: tnclass.cpp:51
#define ICON_SMALL
Definition: tnclass.cpp:48
LONG_PTR LPARAM
Definition: windef.h:208
#define SendMessage
Definition: winuser.h:5852

Referenced by Telnet::~Telnet().

◆ SetIcon()

bool SetIcon ( HWND  hConsoleWindow,
HANDLE  hIcon,
LPARAM pOldBIcon,
LPARAM pOldSIcon,
const char icondir 
)

Definition at line 136 of file tnmisc.cpp.

137 {
138 if(!hConsoleWindow) return false;
139
140// FIX ME!!! The LoadIcon code should work with any compiler!
141// (Paul Brannan 12/17/98)
142#ifndef __BORLANDC__ // Ioannou Dec. 8, 1998
143 if(!hIcon) {
144 char filename[MAX_PATH]; // load from telnet.ico
145 _snprintf(filename, MAX_PATH - 1, "%s%s", icondir, "telnet.ico");
146 filename[MAX_PATH - 1] = '\0';
147
148 // Note: loading the icon from a file doesn't work on NT
149 // There is no LoadImage in Borland headers - only LoadIcon
152 }
153#else
154 // load the icon from the resource file -crn@ozemail.com.au 16/12/98
155 if(!hIcon) {
156 hIcon = LoadIcon((HANDLE)GetWindowLongPtr(hConsoleWindow,
157 GWLP_HINSTANCE), "TELNETICON");
158 }
159#endif
160
161 if(hIcon) {
162#ifdef ICON_BIG
163 *pOldBIcon = SendMessage(hConsoleWindow, WM_SETICON, ICON_BIG,
164 (LPARAM)hIcon);
165#endif
166#ifdef ICON_SMALL
167 *pOldSIcon = SendMessage(hConsoleWindow, WM_SETICON, ICON_SMALL,
168 (LPARAM)hIcon);
169#endif
170 return true;
171 } else {
172 // Otherwise we get a random icon at exit! (Paul Brannan 9/13/98)
173 return false;
174 }
175}
#define MAX_PATH
Definition: compat.h:34
const char * filename
Definition: ioapi.h:137
HICON hIcon
Definition: msconfig.c:44
#define GetWindowLongPtr
Definition: treelist.c:73
#define LR_LOADFROMFILE
Definition: winuser.h:1092
#define IMAGE_ICON
Definition: winuser.h:212
#define GWLP_HINSTANCE
Definition: winuser.h:856
#define LoadIcon
Definition: winuser.h:5822
#define LoadImage
Definition: winuser.h:5824
#define LR_DEFAULTSIZE
Definition: winuser.h:1094
#define _snprintf
Definition: xmlstorage.h:200

Referenced by Telnet::DoInit().

◆ SpawnProcess()

BOOL SpawnProcess ( char cmd_line,
PROCESS_INFORMATION pi 
)

Definition at line 87 of file tnmisc.cpp.

87 {
88 STARTUPINFO si;
89
90 memset(&si, 0, sizeof(si));
91 si.cb = sizeof(si);
92
95}
static refpint_t pi[]
Definition: server.c:96
#define NORMAL_PRIORITY_CLASS
Definition: winbase.h:181
#define CREATE_NEW_CONSOLE
Definition: winbase.h:180

Referenced by Telnet::NewProcess().

◆ TelnetGetConsoleWindow()

HWND TelnetGetConsoleWindow ( void  )

Definition at line 115 of file tnmisc.cpp.

115 {
116 DWORD pid = GetCurrentProcessId(), wpid;
117 char title[512], *t = title;
118 HWND hrv = NULL;
119
120#ifndef __BORLANDC__ // Ioannou Dec. 8, 1998
121 if(!GetConsoleTitle(title, sizeof(title))) t = NULL;
122
123 for(;;) {
124 if((hrv = FindWindowEx(NULL, hrv, "tty", t)) == NULL) break;
125 if(!GetWindowThreadProcessId(hrv, &wpid)) continue;
126 if(wpid == pid) return hrv;
127 }
128#endif
129
130 return GetForegroundWindow();
131}
GLdouble GLdouble t
Definition: gl.h:2047
static char title[]
Definition: ps.c:92
DWORD WINAPI GetCurrentProcessId(void)
Definition: proc.c:1158
DWORD WINAPI GetWindowThreadProcessId(HWND hWnd, PDWORD lpdwProcessId)
#define GetConsoleTitle
Definition: wincon.h:775
_In_ ULONG_PTR _In_ ULONG _Out_ ULONG_PTR * pid
Definition: winddi.h:3837
HWND WINAPI GetForegroundWindow(void)
Definition: ntwrapper.h:392
#define FindWindowEx
Definition: winuser.h:5787

Referenced by Telnet::DoInit().