private static async void PrtHooked(object sender, KeyEventArgs e) { PrtScr_Hook.StopHook(PrtHooked); // Во время обработки приостанавливаем перехват json_st.ResponsePost Resp = new json_st.ResponsePost(); // Хранилище ответа try { byte[] Scr = Combine.GetScreen(); // Шаг 2: получаем изображение if (Settings.Save) { SaveScr.Save(Scr); // Сохраняем при надобности на диск } Resp = await Combine.SendScreen(Scr); // Шаг 3: отправка изображения Scr = null; } catch { Resp.message = "Error"; // Если не удалось отправить изображение } if (Resp.filename.Length > 4 && Resp.code != 415 && Resp.code != 0) { // Шаг 4: Если результат положительный, то отправить его в буфер обмена Clipboard_s.ToClipboard(Settings.HTTP_ADDRESS + "/" + Resp.filename); } GC.Collect(); // Вызываем сборщик мусора дважды PrtScr_Hook.StartHook(PrtHooked); // Возобновление шага 1 GC.Collect(); }
/// <summary> /// Установить PNGs и URI в зависимости от address. /// </summary> /// <param name="address">DNS или IP сервера.</param> /// <returns>true, если настройки применены успешно.</returns> public static async Task <bool> SetSettingsByAddress(string address) { if (address == null) { return(false); //UPLOAD = HTTP_ADDRESS = ADDRESS = PNGs = ""; } json_st.InfoGet info = await Combine.GetInfo("http://" + address); if (info.server_name == null || info.server_name.Length == 0 || info.upload_dir == null || info.upload_dir.Length == 0) { return(false); } cont.ADDRESS = address; cont.HTTP_ADDRESS = "http://" + address; cont.UPLOAD = HTTP_ADDRESS + info.upload_dir; cont.PNGs = HTTP_ADDRESS; update(); return(true); }