Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
C# Запуск Load.dll (бывшая Load.exe) в дереве проц-ов, Как запустить прогой на C# .dll-ку https://www.cyberforum.ru/ csharp-net/ thread49859.html
Подскажите, как должен выглядеть код простейшей программы на C# (Loader.exe), которая бы загружала под собой исполняемый файл (Prog.dll), причем Prog.dll это переименованный исполняемый файл Prog.exe. В итоге должно получиться дерево процессов. Не путать с API функцией при импорте dll в приложение. Если предложений ни у кого нет, то буду рад хотя бы ссылке на ресурсы, так как все перерыл и ничего...
C# Удаление Файлов
Здравствуйте, заинтересовал вопрос удаления текстовых файлов, как можно удалить 1 текстовый файл или сразу все? Все происходит по нажатию кнопки. В ListBox есть список и кнопки удалить одну запись и удалить все, Items добавляются из папки с файлами и выводятся имена текстовых файлов.
C# Запуск exe с аргументом https://www.cyberforum.ru/ csharp-net/ thread49843.html
Дана программка, которая при запуске в обычном режиме (без аргумента) просто загружается сама программа и ждет дальнейших действих пользователя. Далее как сделать так чтоб прога помимо обычного режима и запускалась и с парметром (programm.exe -w)(то есть программа грузится и сразу выполняет конуретное действие). Подскажите плиз метод
C# Передача сообщений главному окну из потока Недавно стал осваивать C# Вопрос: привык передавать сообщения главному окну из потока посредством PostMessage с созданием своих кодов сообщений (для отображения счетчиков на форме главного окна и пр.). Может быть, в C# есть более "продвинутые" методы для синхронизации с главным окном? Спасибо за ответ https://www.cyberforum.ru/ csharp-net/ thread49842.html
C# переключение item в listbox с помощью кнопок
Здравствуйте, задача стоит в том, что с помощью buttons наверх и вниз items в lostbox меняются соответственно, то же саное что и стрелки наверх и вниз на клавиатуре.
C# класс для работы с соксами https://www.cyberforum.ru/ csharp-net/ thread49735.html
уважаемый алл, никто не встречал готовый класс для работы с соксами? чтобы ничего не надо было допиливать напильником
C# Вставки с Асемблера https://www.cyberforum.ru/ csharp-net/ thread49481.html
Хочу спросить, как делать вставки команд с асемблера? например в С пишетса так "asm mov al, 0"
C# доступ к запросу метода Fill()
Hi. Работаю с БД. Данные получаю через представление в dataGridView (около 40 столбцов). Пользуюсь автоматически созданными адаптером и dataSet. Подскажите кто-нить как программно получить доступ к запросу, который выполняется методом Fill()? В конструкторе это легко, но мне нужно динамически формировать запрос во время выполнения программы (разнообразные варианты поиска). Всем ответившим заранее...
C# Время работы программы https://www.cyberforum.ru/ csharp-net/ thread49433.html
Как просчитать время работы программы, и при окончании программы, вывести в messageBox?????
C# Джойстик в C# Нужно получить состояние кнопок джойстика. Немогу найти как это сделать для С#. Все чего я добился - подключил библиотеку using Microsoft.DirectX.DirectInput; и через такой код получил количество доступных джойстиков в системе: DeviceList Joy = Microsoft.DirectX.DirectInput.Manager.GetDevices(DeviceClass.GameControl, EnumDevicesFlags.AttachedOnly); ТекстовоеОкно.Text=(Joy.Count.ToString()... https://www.cyberforum.ru/ csharp-net/ thread49364.html
Font C#
Что то я туплю, самому смешно)) забыл как програмно изменять размер шрифта у всех компонентов(( жду помощи))
C# Вставка символа https://www.cyberforum.ru/ csharp-net/ thread49281.html
Подскажите пожалуйста, как в произвольной строке каждое слово обрамлять кавычками? В смысле прога должна обрамлять двойными кавычками все слова в строке. Какой метод использовать?
14 / 14 / 2
Регистрация: 04.09.2009
Сообщений: 46
10.09.2009, 16:48  [ТС] 0

Контроль прослушиваемых аудио файлов - C# - Ответ 263454

10.09.2009, 16:48. Показов 1997. Ответов 8
Метки (Все метки)

Ответ

Вообщем вот код программы (старался сделать комментарии более понятными):
файл Program.cs
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
using System;
using System.Diagnostics;
using System.IO;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading;
using Microsoft.Win32;
 
namespace ControlMusic
{
    class Program
    {
        //Расположения дефолтного плейлиста
        private const string Playlist = "D:\\Documents and Settings\\Admin\\Application Data\\Winamp\\winamp.m3u";
        //Номер предыдущей сохраненной композиции
        private static int _num;
        //Тип медиаплеера: 1 - Winamp, 2 - WindowsMediaPlayer
        private static int _mediaPlayer;
        //Файл для сохранения названия композиций
        private static string _saveData;
        //Название композиции
        private static string _songName;
        //Автор композиции
        private static string _author = "";
        //Title композиции
        private static string _title = "";
 
        static void Main()
        {
            //Получаем имя компьтера, т.к. название файла = имя компьютера
            GetComputerName();
 
            while (true)
            {
                //Получаем тип медиаплеера
                GetMediaPlayer();
 
                //В зависимости от типа медиаплеера запускаем функцию обработки
                if (_mediaPlayer == 1)
                    WinampStart();
 
                if (_mediaPlayer == 2)
                    WmpStart();
 
                Thread.Sleep(300000);
            }
        }
 
        private static void GetComputerName()
        {
            _saveData = Environment.MachineName + ".list";
        }
 
        private static void GetMediaPlayer()
        {
            //Для получения типа медиаплеера используем список текущих процессов
            var allProcess = Process.GetProcesses();
            _mediaPlayer = 0;
 
            foreach (var process in allProcess)
            {
                switch (process.ProcessName)
                {
                    case "winamp":
                        _mediaPlayer = 1;
                        break;
                    case "wmplayer":
                        _mediaPlayer = 2;
                        break;
                }
            }
        }
 
        //Функция для работы с WindowsMediaPlayer'ом
        private static void WmpStart()
        {
            //Цикл работает, пока запущен проигрыватель
            while (Process.GetProcessesByName("wmplayer").Length != 0)
            {
                //Получаем название композиции
                WmpGetSong();
                //Пишем композицию в файл
                WriteData();
 
                Thread.Sleep(60000);
            }
        }
 
        private static void WmpGetSong()
        {
            //Читаем название композиции из реестра
            var readKey = Registry.CurrentUser.OpenSubKey("Software\\Microsoft\\MediaPlayer\\CurrentMetadata");
            if (readKey != null)
            {
                var author = (string)readKey.GetValue("Author");
                var title = (string)readKey.GetValue("Title");
 
                //Если предыдущая композиция отличается от текущей
                if (author.CompareTo(_author) != 0 || title.CompareTo(_title) != 0)
                {
                    //запоминаем информацию о новой композиции
                    _author = author;
                    _title = title;
                    _songName = author + " - " + title;
                }
                readKey.Close();
            }
        }
 
        //Функция для работы с Winamp'ом
        private static void WinampStart()
        {
            //Цикл работает, пока запущен проигрыватель
            while (Process.GetProcessesByName("winamp").Length != 0)
            {
                //Если удалось получить название композиции
                if (WinampGetSong())
                {
                    //пишем ее в файл
                    WriteData();
                }
 
                Thread.Sleep(60000);
            }
        }
 
        private static bool WinampGetSong()
        {
            try
            {
                var win = new WinampControl();
                //Получаем ID текущей композиции
                var num = win.GetTrackId();
 
                //Если текущая композиция отличается от предыдущей
                if (num.CompareTo(_num) == 0) return false;
                //запоминаем текущую композицию
                _num = num;
 
                //Сохраняем текущий плейлист
                win.SavePlaylist();
                //Делаем паузу в 1сек, даем возможность плейлисту корректно сохраниться
                Thread.Sleep(1000);
                //Работаем с плейлистом
                var reading = new StreamReader(Playlist, Encoding.Default);
                var songs = reading.ReadToEnd();
                //Выдергиваем из плейлиста название текущей композиции, еще можно получить место
                //расположения файла, для этого [0] нужно заменить на [1]
                _songName = Regex.Split(Regex.Split(songs, @".*\d\,")[_num + 1], @"\r\n")[0];
 
                reading.Close();
 
                return true;
            }
            catch
            {
                //Если словили ошибку - значит Winamp был закрыт, либо не удалось прочитать файл 
                //Эту секцию надо доработать
                _num = -1;
                return false;
            }
        }
 
        private static void WriteData()
        {
            var writing = new StreamWriter(_saveData, true);
            writing.WriteLine(DateTime.Now + ";" + _songName + ";");
            writing.Close();
        }
    }
}
файл WinampControl.cs

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
using System;
using System.Runtime.InteropServices;
 
namespace ControlMusic
{
    class WinampControl
    {
        [DllImport("user32.dll", CharSet = CharSet.Auto)]
 
        public static extern IntPtr FindWindow
            (
            [MarshalAs(UnmanagedType.LPTStr)] string lpClassName,
            [MarshalAs(UnmanagedType.LPTStr)] string lpWindowName
            );
 
        [DllImport("user32.dll", CharSet = CharSet.Auto)]
 
        static extern int SendMessageA(IntPtr hwnd, int wMsg, int wParam, uint lParam);
        private const string MWindowName = "Winamp v1.x";
 
        const int WmUser = 0x0400;
 
        //Посылаем команду для сохранения плейлиста
        public void SavePlaylist()
        {
            var hwnd = FindWindow(MWindowName, null);
            SendMessageA(hwnd, WmUser, 0, 120);
        }
 
        //Команда для получения ID текущей композиции
        public int GetTrackId()
        {
            var hwnd = FindWindow(MWindowName, null);
            return SendMessageA(hwnd, WmUser, 0, 125);
        }
    }
}
Ее еще нужно немного доработать в плане работы с WindowsMediaPlayer'ом, т.к. сли у файла отсутствуют теги, то в реестре инфа меняется только у Title. Конечно чожно отбросить автора и писать только Title, но мы не выбираем легких путей =) Так же нужно доработать исключения при работе с Winamp. В остальном программа отлично работает, с ошибками не вываливается. Проверял в течении 2х часов. Единственный небольшой недостаток, это рост памяти, он не критичный, но хотелось бы чтобы его вообще не было.

Если у кого есть какие замечания или предложения - с радостью готов их выслушать. Особенно интересует вопрос по "сбору мусора".

Вернуться к обсуждению:
Контроль прослушиваемых аудио файлов C#
0
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.09.2009, 16:48
Готовые ответы и решения:

Конвертер аудио-файлов (*.OGG)
Здравствуйте! Понадобился простенький конвертер. MP3 -> OGG. На форуме примеров не нашел, причем не...

Конвертор аудио и видео файлов
Добрый день, решил написать програму для курсовой, которая ковертирует разные аудио и видео файлы в...

Открытие аудио-файлов из длл библиотеки
Есть приложение с формой и есть dll-ка с файлом ресурсов, в котором лежит wav файл. Как по клику...

Архивация данных с потерями аудио файлов
День добрый, прошу помочь. Ищу человека который бы смог написать программу. Тема архивация данных с...

8
10.09.2009, 16:48
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.09.2009, 16:48
Помогаю со студенческими работами здесь

Плеер, не активно переключение аудио/видео файлов
Приветствую, почему не активны кнопки переключения файлов в плеере? Свойства компонента обшарил,...

Вывод разных аудио файлов на разные аудиокарты
Имею компьютер с встроенной аудиокартой и внешней USBшной. Нужно что-бы была возможность выбрать...

[Qt] Получить список tcp соединений и прослушиваемых портов
Никак не могу найти, как получить список текущих подключений. Нужна такая же информация, как при...

Получить даты файлов за несколько дней и вывести в лог (контроль даты файлов)
Добрый день нужен батник следующего функционала: есть папка с 8-ю зип архивами (ежесуточный...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru