private void Form1_Load(object sender, EventArgs e) { tmrTick.Interval = Properties.Settings.Default.TimerIntervalSeconds * 1000; try { Debug.WriteLine("Testing ICA client object"); var icaClient = new WFICALib.ICAClient(); var version = icaClient.Version; var enumHandle = icaClient.EnumerateCCMSessions(); var sessionCount = icaClient.GetEnumNameCount(enumHandle); icaClient.CloseEnumHandle(enumHandle); } catch (Exception ex) { MessageBox.Show("An error occured while registering the ICA CCM Object", "Error on Startup", MessageBoxButtons.OK, MessageBoxIcon.Error); this.Close(); } if (!CheckCCMRegistryKeys()) { MessageBox.Show(@"The CCM registry DWORDS (AllowSimulationAPI & AllowLiveMonitoring) are missing from HKLM:\" + CCMRegPath, "Missing CCM values detected on Startup", MessageBoxButtons.OK, MessageBoxIcon.Error); this.Close(); } Debug.WriteLine("Starting Timer"); tmrTick.Start(); this.Visible = false; }
private void tmrTick_Tick(object sender, EventArgs e) { try { Debug.WriteLine("Timer Ticking"); var icaClient = new WFICALib.ICAClient(); var enumHandle = icaClient.EnumerateCCMSessions(); var sessionCount = icaClient.GetEnumNameCount(enumHandle); Debug.WriteLine("Found {0} sessions", sessionCount); int itemCount = 0; while (itemCount < sessionCount) { try { Debug.WriteLine("Sending keepalive to session: {0}", itemCount); string session = icaClient.GetEnumNameByIndex(enumHandle, itemCount); WFICALib.ICAClient icaSession = new WFICALib.ICAClient(); icaSession.SetProp("OutputMode", "1"); icaSession.StartMonitoringCCMSession(session, true); icaSession.Session.Keyboard.SendKeyDown(Properties.Settings.Default.KeyValue);//(int)Keys.B); icaSession.StopMonitoringCCMSession(session); } catch (Exception ex) { Debug.WriteLine("Keepalive to session: {0} failed: {1}", itemCount, ex.ToString()); } itemCount += 1; } icaClient.CloseEnumHandle(enumHandle); } catch (Exception ex) { Debug.WriteLine("Timer tick exception: {0}", ex.ToString()); } }