4#include <freerdp/freerdp.h>
5#include <freerdp/client/rail.h>
9UINT client_rail_server_start_cmd(RailClientContext* context)
11 WINPR_ASSERT(context);
14 WINPR_ASSERT(rail->rdpcontext);
16 const rdpSettings* settings = rail->rdpcontext->settings;
17 WINPR_ASSERT(settings);
20 settings, FreeRDP_RemoteAppFeatureFlags) };
23 clientStatus.flags |= TS_RAIL_CLIENTSTATUS_AUTORECONNECT;
25 clientStatus.flags &= ~TS_RAIL_CLIENTSTATUS_AUTORECONNECT;
27 UINT status = context->ClientInformation(context, &clientStatus);
29 if (status != CHANNEL_RC_OK)
35 langBarInfo.languageBarStatus = 0x00000008;
36 status = context->ClientLanguageBarInfo(context, &langBarInfo);
42 case ERROR_BAD_CONFIGURATION:
53 .params = SPI_MASK_SET_HIGH_CONTRAST | SPI_MASK_SET_MOUSE_BUTTON_SWAP |
54 SPI_MASK_SET_KEYBOARD_PREF | SPI_MASK_SET_DRAG_FULL_WINDOWS |
55 SPI_MASK_SET_KEYBOARD_CUES | SPI_MASK_SET_WORK_AREA,
56 .highContrast.flags = 0x7E,
57 .workArea.right = WINPR_ASSERTING_INT_CAST(UINT16, w),
58 .workArea.bottom = WINPR_ASSERTING_INT_CAST(UINT16, h)
61 status = context->ClientSystemParam(context, &sysparam);
63 if (status != CHANNEL_RC_OK)
66 const char* RemoteApplicationFile =
68 const char* RemoteApplicationCmdLine =
71 char argsAndFile[520] = WINPR_C_ARRAY_INIT;
73 if (RemoteApplicationFile && RemoteApplicationCmdLine)
75 (void)_snprintf(argsAndFile, ARRAYSIZE(argsAndFile),
"%s %s", RemoteApplicationCmdLine,
76 RemoteApplicationFile);
77 exec.RemoteApplicationArguments = argsAndFile;
79 else if (RemoteApplicationFile)
80 exec.RemoteApplicationArguments = RemoteApplicationFile;
82 exec.RemoteApplicationArguments = RemoteApplicationCmdLine;
83 exec.RemoteApplicationProgram =
85 exec.RemoteApplicationWorkingDir =
87 return context->ClientExecute(context, &exec);
WINPR_ATTR_NODISCARD FREERDP_API const char * freerdp_settings_get_string(const rdpSettings *settings, FreeRDP_Settings_Keys_String id)
Returns a immutable string settings value.
WINPR_ATTR_NODISCARD FREERDP_API UINT32 freerdp_settings_get_uint32(const rdpSettings *settings, FreeRDP_Settings_Keys_UInt32 id)
Returns a UINT32 settings value.
WINPR_ATTR_NODISCARD FREERDP_API BOOL freerdp_settings_get_bool(const rdpSettings *settings, FreeRDP_Settings_Keys_Bool id)
Returns a boolean settings value.