ReactOS 0.4.15-dev-7961-gdcf9eb0
precomp.h File Reference
#include <stdarg.h>
#include <windef.h>
#include <winbase.h>
#include <wingdi.h>
#include <wincon.h>
#include <shlobj.h>
#include <stdio.h>
#include <wincrypt.h>
#include "rdesktop.h"
#include "resource.h"
Include dependency graph for precomp.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  _SETTINGS
 
struct  _RDPSETTINGS
 
struct  _RESOLUTION_INFO
 
struct  _SETTINGS_ENTRY
 
struct  _DISPLAY_DEVICE_ENTRY
 
struct  _INFO
 

Macros

#define WIN32_NO_STATUS
 
#define _INC_WINDOWS
 
#define COM_NO_WINDOWS_H
 
#define __TODO_MSTSC_H
 
#define RDP_LOGON_NORMAL   (RDP_INFO_MOUSE | RDP_INFO_DISABLECTRLALTDEL | RDP_INFO_UNICODE | RDP_INFO_MAXIMIZESHELL)
 
#define IS_PERSISTENT(id)   (id < 8 && g_pstcache_fd[id] > 0)
 
#define MAXKEY   256
 
#define MAXVALUE   256
 
#define NUM_SETTINGS   6
 

Typedefs

typedef struct _SETTINGS SETTINGS
 
typedef struct _SETTINGSPSETTINGS
 
typedef struct _RDPSETTINGS RDPSETTINGS
 
typedef struct _RDPSETTINGSPRDPSETTINGS
 
typedef struct _RESOLUTION_INFO RESOLUTION_INFO
 
typedef struct _RESOLUTION_INFOPRESOLUTION_INFO
 
typedef struct _SETTINGS_ENTRY SETTINGS_ENTRY
 
typedef struct _SETTINGS_ENTRYPSETTINGS_ENTRY
 
typedef struct _DISPLAY_DEVICE_ENTRY DISPLAY_DEVICE_ENTRY
 
typedef struct _DISPLAY_DEVICE_ENTRYPDISPLAY_DEVICE_ENTRY
 
typedef struct _INFO INFO
 
typedef struct _INFOPINFO
 

Functions

BOOL InitRdpSettings (PRDPSETTINGS pRdpSettings)
 
BOOL OpenRDPConnectDialog (HINSTANCE hInstance, PRDPSETTINGS pRdpSettings)
 
BOOL LoadRdpSettingsFromFile (PRDPSETTINGS pRdpSettings, LPWSTR lpFile)
 
BOOL SaveRdpSettingsToFile (LPWSTR lpFile, PRDPSETTINGS pRdpSettings)
 
INT GetIntegerFromSettings (PRDPSETTINGS pSettings, LPWSTR lpValue)
 
LPWSTR GetStringFromSettings (PRDPSETTINGS pSettings, LPWSTR lpValue)
 
BOOL SetIntegerToSettings (PRDPSETTINGS pRdpSettings, LPWSTR lpKey, INT Value)
 
BOOL SetStringToSettings (PRDPSETTINGS pRdpSettings, LPWSTR lpKey, LPWSTR lpValue)
 
VOID SaveAllSettings (PINFO pInfo)
 

Variables

LPWSTR lpSettings []
 

Macro Definition Documentation

◆ __TODO_MSTSC_H

#define __TODO_MSTSC_H

Definition at line 22 of file precomp.h.

◆ _INC_WINDOWS

#define _INC_WINDOWS

Definition at line 7 of file precomp.h.

◆ COM_NO_WINDOWS_H

#define COM_NO_WINDOWS_H

Definition at line 8 of file precomp.h.

◆ IS_PERSISTENT

#define IS_PERSISTENT (   id)    (id < 8 && g_pstcache_fd[id] > 0)

Definition at line 26 of file precomp.h.

◆ MAXKEY

#define MAXKEY   256

Definition at line 28 of file precomp.h.

◆ MAXVALUE

#define MAXVALUE   256

Definition at line 29 of file precomp.h.

◆ NUM_SETTINGS

#define NUM_SETTINGS   6

Definition at line 30 of file precomp.h.

◆ RDP_LOGON_NORMAL

Definition at line 24 of file precomp.h.

◆ WIN32_NO_STATUS

#define WIN32_NO_STATUS

Definition at line 6 of file precomp.h.

Typedef Documentation

◆ DISPLAY_DEVICE_ENTRY

◆ INFO

typedef struct _INFO INFO

◆ PDISPLAY_DEVICE_ENTRY

◆ PINFO

typedef struct _INFO * PINFO

◆ PRDPSETTINGS

◆ PRESOLUTION_INFO

◆ PSETTINGS

◆ PSETTINGS_ENTRY

◆ RDPSETTINGS

◆ RESOLUTION_INFO

◆ SETTINGS

◆ SETTINGS_ENTRY

Function Documentation

◆ GetIntegerFromSettings()

INT GetIntegerFromSettings ( PRDPSETTINGS  pSettings,
LPWSTR  lpValue 
)

Definition at line 144 of file settings.c.

146{
147 INT Value = -1;
148
149 if (pRdpSettings)
150 {
151 INT i;
152
153 for (i = 0; i < pRdpSettings->NumSettings; i++)
154 {
155 if (wcscmp(pRdpSettings->pSettings[i].Key, lpKey) == 0)
156 {
157 if (pRdpSettings->pSettings[i].Type == L'i')
158 {
159 Value = pRdpSettings->pSettings[i].Value.i;
160 break;
161 }
162 }
163 }
164 }
165
166 return Value;
167}
static LPCTSTR lpKey
Definition: virtmem.c:102
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
#define L(x)
Definition: ntvdm.h:50
_Check_return_ _CRTIMP int __cdecl wcscmp(_In_z_ const wchar_t *_Str1, _In_z_ const wchar_t *_Str2)
int32_t INT
Definition: typedefs.h:58
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _Out_opt_ PUSHORT _Inout_opt_ PUNICODE_STRING Value
Definition: wdfregistry.h:413

Referenced by ReLoadDisplayPage(), and wWinMain().

◆ GetStringFromSettings()

LPWSTR GetStringFromSettings ( PRDPSETTINGS  pSettings,
LPWSTR  lpValue 
)

Definition at line 171 of file settings.c.

173{
174 LPWSTR lpValue = NULL;
175
176 if (pRdpSettings)
177 {
178 INT i;
179
180 for (i = 0; i < pRdpSettings->NumSettings; i++)
181 {
182 if (wcscmp(pRdpSettings->pSettings[i].Key, lpKey) == 0)
183 {
184 if (pRdpSettings->pSettings[i].Type == L's')
185 {
186 lpValue = pRdpSettings->pSettings[i].Value.s;
187 break;
188 }
189 }
190 }
191 }
192
193 return lpValue;
194}
#define NULL
Definition: types.h:112
WCHAR * LPWSTR
Definition: xmlstorage.h:184

Referenced by ReLoadGeneralPage(), and wWinMain().

◆ InitRdpSettings()

BOOL InitRdpSettings ( PRDPSETTINGS  pRdpSettings)

Definition at line 476 of file settings.c.

477{
478 BOOL bRet = FALSE;
479
480 pRdpSettings->pSettings = HeapAlloc(GetProcessHeap(),
481 0,
482 sizeof(SETTINGS) * NUM_SETTINGS);
483 if (pRdpSettings->pSettings)
484 {
485 INT i;
486
487 for (i = 0; i < NUM_SETTINGS; i++)
488 {
489 wcscpy(pRdpSettings->pSettings[i].Key, lpSettings[i]);
490 pRdpSettings->pSettings[i].Type = (WCHAR)0;
491 pRdpSettings->pSettings[i].Value.i = 0;
492 }
493
494 pRdpSettings->NumSettings = NUM_SETTINGS;
495
496 bRet = TRUE;
497 }
498
499 return bRet;
500}
#define NUM_SETTINGS
Definition: precomp.h:30
LPWSTR lpSettings[NUM_SETTINGS]
Definition: settings.c:5
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
#define GetProcessHeap()
Definition: compat.h:736
#define HeapAlloc
Definition: compat.h:733
unsigned int BOOL
Definition: ntddk_ex.h:94
_CRTIMP wchar_t *__cdecl wcscpy(_Out_writes_z_(_String_length_(_Source)+1) wchar_t *_Dest, _In_z_ const wchar_t *_Source)
PSETTINGS pSettings
Definition: precomp.h:45
INT NumSettings
Definition: precomp.h:46
WCHAR Type
Definition: precomp.h:36
WCHAR Key[MAXKEY]
Definition: precomp.h:35
union _SETTINGS::@13 Value
INT i
Definition: precomp.h:38
__wchar_t WCHAR
Definition: xmlstorage.h:180

Referenced by wWinMain().

◆ LoadRdpSettingsFromFile()

BOOL LoadRdpSettingsFromFile ( PRDPSETTINGS  pRdpSettings,
LPWSTR  lpFile 
)

Definition at line 419 of file settings.c.

421{
422 WCHAR pszPath[MAX_PATH];
424 BOOL bRet = FALSE;
425
426 /* use default file */
427 if (lpFile == NULL)
428 {
429 HRESULT hr;
430 LPITEMIDLIST lpidl= NULL;
431
434 NULL,
435 0,
436 &lpidl);
437 if (hr == S_OK)
438 {
439 if (SHGetPathFromIDListW(lpidl, pszPath))
440 {
441 wcscat(pszPath, L"\\Default.rdp");
442 lpFile = pszPath;
443 CoTaskMemFree(lpidl);
444 }
445 }
446 }
447
448 if (lpFile)
449 {
451
452 hFile = OpenRdpFile(lpFile, FALSE);
453 if (hFile)
454 {
456 if (lpBuffer)
457 {
458 ParseSettings(pRdpSettings, lpBuffer);
459
461 0,
462 lpBuffer);
463
464 bRet = TRUE;
465 }
466
468 }
469 }
470
471 return bRet;
472}
static VOID ParseSettings(PRDPSETTINGS pRdpSettings, LPWSTR lpBuffer)
Definition: settings.c:245
static LPWSTR ReadRdpFile(HANDLE hFile)
Definition: settings.c:301
static VOID CloseRdpFile(HANDLE hFile)
Definition: settings.c:363
static HANDLE OpenRdpFile(LPWSTR path, BOOL bWrite)
Definition: settings.c:343
static TAGREF LPCWSTR LPDWORD LPVOID lpBuffer
Definition: db.cpp:175
#define MAX_PATH
Definition: compat.h:34
#define HeapFree(x, y, z)
Definition: compat.h:735
HRESULT WINAPI SHGetFolderLocation(HWND hwndOwner, int nFolder, HANDLE hToken, DWORD dwReserved, LPITEMIDLIST *ppidl)
Definition: shellpath.c:3124
VOID WINAPI CoTaskMemFree(LPVOID ptr)
Definition: ifs.c:442
#define S_OK
Definition: intsafe.h:52
_In_ HANDLE hFile
Definition: mswsock.h:90
BOOL WINAPI SHGetPathFromIDListW(LPCITEMIDLIST pidl, LPWSTR pszPath)
Definition: pidl.c:1353
_CRTIMP wchar_t *__cdecl wcscat(_Inout_updates_z_(_String_length_(_Dest)+_String_length_(_Source)+1) wchar_t *_Dest, _In_z_ const wchar_t *_Source)
HRESULT hr
Definition: shlfolder.c:183
#define CSIDL_PERSONAL
Definition: shlobj.h:2163
ITEMIDLIST UNALIGNED * LPITEMIDLIST
Definition: shtypes.idl:41

Referenced by DoOpenFile(), ParseCommandLine(), and wWinMain().

◆ OpenRDPConnectDialog()

BOOL OpenRDPConnectDialog ( HINSTANCE  hInstance,
PRDPSETTINGS  pRdpSettings 
)

Definition at line 1335 of file connectdialog.c.

1337{
1339
1340 hInst = hInstance;
1341
1342 iccx.dwSize = sizeof(INITCOMMONCONTROLSEX);
1343 iccx.dwICC = ICC_TAB_CLASSES;
1344 InitCommonControlsEx(&iccx);
1345
1346 return (DialogBoxParamW(hInst,
1348 NULL,
1349 DlgProc,
1350 (LPARAM)pRdpSettings) == IDOK);
1351}
#define IDD_CONNECTDIALOG
Definition: resource.h:11
HINSTANCE hInstance
Definition: charmap.c:19
BOOL WINAPI InitCommonControlsEx(const INITCOMMONCONTROLSEX *lpInitCtrls)
Definition: commctrl.c:893
HINSTANCE hInst
Definition: connectdialog.c:28
DLGPROC DlgProc
Definition: desk.c:122
struct tagINITCOMMONCONTROLSEX INITCOMMONCONTROLSEX
#define ICC_TAB_CLASSES
Definition: commctrl.h:61
LONG_PTR LPARAM
Definition: windef.h:208
#define IDOK
Definition: winuser.h:830
#define MAKEINTRESOURCEW(i)
Definition: winuser.h:582
INT_PTR WINAPI DialogBoxParamW(_In_opt_ HINSTANCE, _In_ LPCWSTR, _In_opt_ HWND, _In_opt_ DLGPROC, _In_ LPARAM)

Referenced by wWinMain().

◆ SaveAllSettings()

VOID SaveAllSettings ( PINFO  pInfo)

Definition at line 16 of file settings.c.

17{
18 INT ret;
19 WCHAR szValue[MAXVALUE];
20
21 /* server */
24 szValue,
25 MAXVALUE))
26 {
28 L"full address",
29 szValue);
30 }
31
32 /* resolution and fullscreen*/
36 0,
37 0);
38 if (ret != -1)
39 {
41 L"screen mode id",
44 L"desktopwidth",
47 L"desktopheight",
49 }
50
51 /* bpp */
55 0,
56 0);
57 if (ret != CB_ERR)
58 {
62 ret,
63 0);
64 if (ret != CB_ERR)
65 {
67 L"session bpp",
68 ret);
69 }
70 }
71
72 /* user name */
75 szValue,
76 MAXVALUE))
77 {
79 L"username",
80 szValue);
81 }
82}
#define MAXVALUE
Definition: precomp.h:29
#define IDC_BPPCOMBO
Definition: resource.h:20
#define IDC_NAMEEDIT
Definition: resource.h:22
#define IDC_GEOSLIDER
Definition: resource.h:19
#define IDC_SERVERCOMBO
Definition: resource.h:15
BOOL SetStringToSettings(PRDPSETTINGS pRdpSettings, LPWSTR lpKey, LPWSTR lpValue)
Definition: settings.c:115
BOOL SetIntegerToSettings(PRDPSETTINGS pRdpSettings, LPWSTR lpKey, INT Value)
Definition: settings.c:86
#define TBM_GETPOS
Definition: commctrl.h:2031
#define TBM_GETRANGEMAX
Definition: commctrl.h:2033
PRESOLUTION_INFO Resolutions
Definition: precomp.h:77
PDISPLAY_DEVICE_ENTRY DisplayDeviceList
Definition: precomp.h:86
HWND hGeneralPage
Definition: precomp.h:90
PRDPSETTINGS pRdpSettings
Definition: precomp.h:85
HWND hDisplayPage
Definition: precomp.h:91
DWORD dmPelsWidth
Definition: precomp.h:54
DWORD dmPelsHeight
Definition: precomp.h:55
int ret
#define GetDlgItemText
Definition: winuser.h:5785
#define CB_ERR
Definition: winuser.h:2435
LRESULT WINAPI SendDlgItemMessageW(_In_ HWND, _In_ int, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define CB_GETITEMDATA
Definition: winuser.h:1950
#define CB_GETCURSEL
Definition: winuser.h:1943
#define SendDlgItemMessage
Definition: winuser.h:5842

Referenced by DlgProc(), DoSaveAs(), and GeneralDlgProc().

◆ SaveRdpSettingsToFile()

BOOL SaveRdpSettingsToFile ( LPWSTR  lpFile,
PRDPSETTINGS  pRdpSettings 
)

Definition at line 371 of file settings.c.

373{
374 WCHAR pszPath[MAX_PATH];
376 BOOL bRet = FALSE;
377
378 /* use default file */
379 if (lpFile == NULL)
380 {
381 HRESULT hr;
382 LPITEMIDLIST lpidl= NULL;
383
386 NULL,
387 0,
388 &lpidl);
389 if (hr == S_OK)
390 {
391 if (SHGetPathFromIDListW(lpidl, pszPath))
392 {
393 wcscat(pszPath, L"\\Default.rdp");
394 lpFile = pszPath;
395 CoTaskMemFree(lpidl);
396 }
397 }
398 }
399
400 if (lpFile)
401 {
402 hFile = OpenRdpFile(lpFile, TRUE);
403 if (hFile)
404 {
405 if (WriteRdpFile(hFile, pRdpSettings))
406 {
407 bRet = TRUE;
408 }
409
411 }
412 }
413
414 return bRet;
415}
static BOOL WriteRdpFile(HANDLE hFile, PRDPSETTINGS pRdpSettings)
Definition: settings.c:198

Referenced by DlgProc(), DoSaveAs(), and GeneralDlgProc().

◆ SetIntegerToSettings()

BOOL SetIntegerToSettings ( PRDPSETTINGS  pRdpSettings,
LPWSTR  lpKey,
INT  Value 
)

Definition at line 86 of file settings.c.

89{
90 BOOL bRet = FALSE;
91
92 if (pRdpSettings)
93 {
94 INT i;
95
96 for (i = 0; i < pRdpSettings->NumSettings; i++)
97 {
98 if (wcscmp(pRdpSettings->pSettings[i].Key, lpKey) == 0)
99 {
100 if (pRdpSettings->pSettings[i].Type == 0)
101 pRdpSettings->pSettings[i].Type = L'i';
102
103 pRdpSettings->pSettings[i].Value.i = Value;
104 bRet = TRUE;
105 break;
106 }
107 }
108 }
109
110 return bRet;
111}

Referenced by ParseCommandLine(), and SaveAllSettings().

◆ SetStringToSettings()

BOOL SetStringToSettings ( PRDPSETTINGS  pRdpSettings,
LPWSTR  lpKey,
LPWSTR  lpValue 
)

Definition at line 115 of file settings.c.

118{
119 BOOL bRet = FALSE;
120
121 if (pRdpSettings)
122 {
123 INT i;
124
125 for (i = 0; i < pRdpSettings->NumSettings; i++)
126 {
127 if (wcscmp(pRdpSettings->pSettings[i].Key, lpKey) == 0)
128 {
129 if (pRdpSettings->pSettings[i].Type == 0)
130 pRdpSettings->pSettings[i].Type = L's';
131
132 wcscpy(pRdpSettings->pSettings[i].Value.s, lpValue);
133 bRet = TRUE;
134 break;
135 }
136 }
137 }
138
139 return bRet;
140}
WCHAR s[MAXVALUE]
Definition: precomp.h:39

Referenced by ParseCommandLine(), and SaveAllSettings().

Variable Documentation

◆ lpSettings

LPWSTR lpSettings[]
extern

Definition at line 5 of file settings.c.

Referenced by InitRdpSettings(), and WriteRdpFile().