4#include <freerdp/freerdp.h>
5#include <freerdp/client/rail.h>
9UINT rail_send_client_status(RailClientContext* context)
11 WINPR_ASSERT(context);
14 WINPR_ASSERT(rail->rdpcontext);
15 const rdpSettings* settings = rail->rdpcontext->settings;
16 WINPR_ASSERT(settings);
18 settings, FreeRDP_RemoteAppFeatureFlags) };
20 clientStatus.flags |= TS_RAIL_CLIENTSTATUS_AUTORECONNECT;
22 clientStatus.flags &= ~TS_RAIL_CLIENTSTATUS_AUTORECONNECT;
23 return context->ClientInformation(context, &clientStatus);
25UINT client_rail_server_start_cmd(RailClientContext* context)
27 WINPR_ASSERT(context);
30 WINPR_ASSERT(rail->rdpcontext);
31 const rdpSettings* settings = rail->rdpcontext->settings;
32 WINPR_ASSERT(settings);
33 UINT status = rail_send_client_status(context);
34 if (status != CHANNEL_RC_OK)
40 langBarInfo.languageBarStatus = 0x00000008;
41 status = context->ClientLanguageBarInfo(context, &langBarInfo);
47 case ERROR_BAD_CONFIGURATION:
58 .params = SPI_MASK_SET_HIGH_CONTRAST | SPI_MASK_SET_MOUSE_BUTTON_SWAP |
59 SPI_MASK_SET_KEYBOARD_PREF | SPI_MASK_SET_DRAG_FULL_WINDOWS |
60 SPI_MASK_SET_KEYBOARD_CUES | SPI_MASK_SET_WORK_AREA,
61 .highContrast.flags = 0x7E,
62 .workArea.right = WINPR_ASSERTING_INT_CAST(UINT16, w),
63 .workArea.bottom = WINPR_ASSERTING_INT_CAST(UINT16, h)
66 status = context->ClientSystemParam(context, &sysparam);
68 if (status != CHANNEL_RC_OK)
71 const char* RemoteApplicationFile =
73 const char* RemoteApplicationCmdLine =
76 char argsAndFile[520] = WINPR_C_ARRAY_INIT;
78 if (RemoteApplicationFile && RemoteApplicationCmdLine)
80 (void)_snprintf(argsAndFile, ARRAYSIZE(argsAndFile),
"%s %s", RemoteApplicationCmdLine,
81 RemoteApplicationFile);
82 exec.RemoteApplicationArguments = argsAndFile;
84 else if (RemoteApplicationFile)
85 exec.RemoteApplicationArguments = RemoteApplicationFile;
87 exec.RemoteApplicationArguments = RemoteApplicationCmdLine;
88 exec.RemoteApplicationProgram =
90 exec.RemoteApplicationWorkingDir =
92 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.