private void InjectD3D(bool inject) { try { // Application path //string path = Application.StartupPath; // Make IPC command int status = 0; bool result = false; IInterProcessConnection client = new ClientPipeConnection("S3D IPCChannel", "."); client.Connect(); const int MAX_PATH = 260; byte[] buffer = new byte[4 + 4 + 2 * MAX_PATH]; // 4 == inject d3d 2 == uninject int commandid = inject ? 4 : 2; BitConverter.GetBytes((Int32)commandid).CopyTo(buffer, 0); BitConverter.GetBytes((Int32)0).CopyTo(buffer, 4); byte[] ccPath = Encoding.Unicode.GetBytes(Application.StartupPath); ccPath.CopyTo(buffer, 8); int size = 4 + 4 + MAX_PATH; //if (state == ConfigData.StereoState.Update) //{ // ccPath.CopyTo(buffer, 8 + MAX_PATH); // size += MAX_PATH; //} client.WriteBytes(buffer, 0, size); client.Flush(); buffer = client.ReadBytes(); result = (BitConverter.ToInt32(buffer, 0) == 0); status = BitConverter.ToInt32(buffer, 4); string message = BitConverter.ToString(buffer, 8, MAX_PATH); var umess = Encoding.Unicode.GetString(buffer, 8, MAX_PATH); bool injected = (status & 1) != 0; client.Close(); } catch (Exception ex) { _Failed = true; _ErrorMessage = ex.Message; } }
public Resource GetData(string uri) { using (var cpc = new ClientPipeConnection(_pipeName)) try { cpc.Connect(); cpc.Write("<protocol-request><path>" + uri + "</path></protocol-request>"); return(Resource.Unpack(cpc.ReadBytes())); } catch (Exception e) { return(new Resource(MediaTypeNames.Text.Html, "<html><h3>Ошибка. Источник данных не обнаружен. Возможно RSDN@Home не запущен." + "</h3><pre style='background-color: #EEEEEE'>" + e + "</pre></html>")); } }
private bool IsInjectedD3D() { int status = 0; try { bool result = false; IInterProcessConnection client = new ClientPipeConnection("S3D IPCChannel", "."); client.Connect(); const int MAX_PATH = 260; byte[] buffer = new byte[4 + 4 + 2 * MAX_PATH]; // 1 == get injection status BitConverter.GetBytes((Int32)1).CopyTo(buffer, 0); BitConverter.GetBytes((Int32)0).CopyTo(buffer, 4); byte[] ccPath = Encoding.Unicode.GetBytes(Application.StartupPath); ccPath.CopyTo(buffer, 8); int size = 4 + 4 + MAX_PATH; //if (state == ConfigData.StereoState.Update) //{ // ccPath.CopyTo(buffer, 8 + MAX_PATH); // size += MAX_PATH; //} client.WriteBytes(buffer, 0, size); client.Flush(); buffer = client.ReadBytes(); result = (BitConverter.ToInt32(buffer, 0) == 0); status = BitConverter.ToInt32(buffer, 4); client.Close(); } catch (Exception ex) { _Failed = true; _ErrorMessage = ex.Message; } bool injected = (status & 1) != 0; return(injected); }