Download
Download binaries here .
Download sources here .
Source Code
#include <windows.h> #include <stdio.h> #define ISL_LIGHT_DESK_EXE "ISLLightDesk.exe" #define ISL_LIGHT_DESK_COMMAND_LINE "--get-code --username demo --password demo --notification-message %d --notification-thread %d --auto-close" #define ISL_LIGHT_CLIENT_EXE "ISLLightClient.exe" #define ISL_LIGHT_CLIENT_COMMAND_LINE "--connect %d --notification-message %d --notification-thread %d --auto-close" void dump_notification_message(bool client, WPARAM wParam, LPARAM lParam) { printf("%s message (wparam 0x%x lparam 0x%x)\n", client?"Client":"Desk", wParam, lParam); if (wParam == 0) printf("\tunconnected\n"); if (wParam & 1) printf("\tconnecting with session code %d\n", lParam); if (wParam & 2) printf("\tconnected\n"); if (wParam & 4) printf("\tstreaming\n"); if (wParam & 8) printf("\treceiving strem\n"); if (wParam & 0x10) printf("\tserver ID 0x%x\n", lParam); if (wParam & 0x20) printf("\tsession ID 0x%x\n", lParam); if (wParam & 0x8000) printf("\terror getting the code\n"); } int main(int argc, char **argv) { MSG msg; // example doesnt have any windows // create message queue PeekMessage(&msg, 0, 0, 0, PM_NOREMOVE); int count = 0; // start desk char arg_buff[2048]; char desk_exe[256]; char client_exe[256]; sprintf(arg_buff, ISL_LIGHT_DESK_COMMAND_LINE, WM_USER+2, GetCurrentThreadId()); if (argc >= 3) { strcpy(desk_exe, argv[1]); strcpy(client_exe, argv[2]); } else { strcpy(desk_exe, ISL_LIGHT_DESK_EXE); strcpy(client_exe, ISL_LIGHT_CLIENT_EXE); } printf("starting desk command line: %s\n",arg_buff); ShellExecute(NULL, NULL, desk_exe, arg_buff, NULL, SW_SHOW); // Main message loop: while (GetMessage(&msg, NULL, 0, 0)) { if (msg.message == (WM_USER+2) || msg.message == (WM_USER+1)) { //notification message bool client = msg.message == (WM_USER+1); dump_notification_message(client, msg.wParam, msg.lParam); if (!client && msg.wParam == 1) { sprintf(arg_buff, ISL_LIGHT_CLIENT_COMMAND_LINE, msg.lParam, WM_USER+1, GetCurrentThreadId()); printf("starting client command line: %s\n",arg_buff); ShellExecute(NULL, NULL, client_exe, arg_buff, NULL, SW_SHOW); } if (msg.wParam == 0) { count --; if (count <= 0) break; } if (msg.wParam == 1) { // assume connecting will succeed count ++; } } else { TranslateMessage(&msg); DispatchMessage(&msg); } } }