Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.97/37: Рейтинг темы: голосов - 37, средняя оценка - 4.97
0 / 0 / 0
Регистрация: 03.06.2011
Сообщений: 5

Внедрение файлов в приложение

03.06.2011, 12:11. Показов 7597. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброе утро, дорогие форумчане Самизучаю программирование, решил сесть на чтото достаточно сложное и с другой стороны необычное. Начал изучение на C++ , недавно перешёл на C Sharp , просто из-за интереса
Вопрос заключается в следующем. Существует приложение Windows Forms ( игра), есть необходимость её озвучить, вернее воспроизводить звуки в результате определённого события, как связать приложение и звук я более менее знаю, но, при подключении какого-то звука (Wave файла), указывается путь в системе.
C#
1
2
3
System.Media.SoundPlayer startsoundplayer = new System.Media.SoundPlayer
(*.*)
//Класс для воспроизведения звука в игре. в скобочках указывается адресс Wav-файла
И в дальнейшем, приложение не будет работать например на другом ПК, т.к. там не будет того или иного файла, а если даже приложение передавать вместе с аудиофайлами, то придётся их ложить по тому же пути, что и на моём ПК. Так вот, существует ли возможность, размещения аудиофайла Внутри exe???, тобишь, на выходе , у мя получается исполняемый файл и всё, а в нём все звуки, итд... Я думаю, что такая возможность существует по любомую Толлько не усложниться ли сильно написание кода, потому что я всего лишь начинающий программист?
Извиняюсь за нубский вопрос
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.06.2011, 12:11
Ответы с готовыми решениями:

Внедрение managed dll в стороннее приложение
Помогите пожалуйста с созданием .dll при инжекте которой в Определённое приложение ... ну вот при инжекте этой .dll появилась...

Динамическая компиляция и внедрение полученного кода в приложение
В приложении потребовались макросы. Мне подходит синтаксис C#, поэтому хочу использовать динамическую компиляцию. Вопрос по интеграции...

Приложение для передачи файлов по сети
Доброго времени суток всем!!! Я тут новенький да и в программировании тоже. Меня собственно говоря интересует, как написать приложение...

12
мастер топоров
 Аватар для Koran
917 / 742 / 101
Регистрация: 16.08.2009
Сообщений: 1,476
03.06.2011, 12:27
нужно добавить файл в ресурсы. после этого создать из ресурса MemoryStream и после этого этот поток использовать в конструкторе SoundPlayer()
0
0 / 0 / 0
Регистрация: 03.06.2011
Сообщений: 5
03.06.2011, 12:56  [ТС]
Цитата Сообщение от Koran Посмотреть сообщение
нужно добавить файл в ресурсы. после этого создать из ресурса MemoryStream и после этого этот поток использовать в конструкторе SoundPlayer()
Спасибо большое за ответ, Кoran. Только обьясните пожалуйста поподробнее, а то я "начинающий программист") Потому что такое понятие как MemoryStream мне не знакомо.
0
 Аватар для Etrimus
399 / 366 / 54
Регистрация: 23.05.2010
Сообщений: 716
03.06.2011, 14:43
нужно добавить файл в ресурсы. после этого создать из ресурса MemoryStream и после этого этот поток использовать в конструкторе SoundPlayer()
Как раз по соседству есть тема, где становится ясно, для чего нужен MemoryStream, вым как раз это и нужно - вот.
К слову, можно почтитать про этот поток на MSDN.

Теперь о ресурсах. Добавить можно так - щёлкаем правой кнопкой мыши на название вашего проекта в ВизуалСтудии в окошке Обозреватель Решений. Затем Свойства - вкладка Ресурсы - Добавить ресурс - Добавить существующий файл. Всё.

Как получить из программы доступ к ресурсу? Вот так:
C#
1
WindowsFormsApplication1.Properties.Resources
где WindowsFormsApplication1 - пространство имен по умолачнию.

Вот такой код можно использовать для воспроизведения звука из ресурсов.
C#
1
2
3
4
5
Byte[] b = new byte[WindowsFormsApplication1.Properties.Resources.tada.Length];//Создаём массив для будущего потока и ставим его емкость как у ресурса.
WindowsFormsApplication1.Properties.Resources.tada.Read(b,0,b.Length);//Считываем в наш массив нужный ресурс, теперь в массиве - наш звук в виде байтов.
MemoryStream ms = new MemoryStream(b, false);//Создаём поток из массива наших байтов, указывая, что массив надо считывать с самого начала и до самого конца.
SoundPlayer sn = new SoundPlayer(ms);//Инициализировали переменную Плеера с помощью нашего потока.
sn.Play();//Та-Да :)
0
мастер топоров
 Аватар для Koran
917 / 742 / 101
Регистрация: 16.08.2009
Сообщений: 1,476
03.06.2011, 15:10
Etrimus, оказывается всё проще:
C#
1
2
            SoundPlayer sp = new SoundPlayer(TempConsoleProject.Properties.Resources.sound);
            sp.Play();
2
 Аватар для Etrimus
399 / 366 / 54
Регистрация: 23.05.2010
Сообщений: 716
03.06.2011, 18:22
Koran, действительно, всё просто. Т.е., ресурсы тоже позиционируются как потоки, если я правильно понял (unmanagedMemoryStream).
1
0 / 0 / 0
Регистрация: 03.06.2011
Сообщений: 5
03.06.2011, 19:59  [ТС]
Etrimus,
Koran, Пасибо Вам большое, только начал изучать, пока всё делаю по книжке, буду заходить на форум часто))) У мня такой вопрос, вообще язык программирования C# , он серьёзный?? тобишь, на нём делаются какие-то серьёзные продукты, и в каких областях он используется??? И обьясните пожалуйста что такое .NET , только я прошу именно простого ЧЕЛОВЕЧЕСКОГО обьяснения, википедии я уже начитался...

Добавлено через 1 час 17 минут
Спасибо Вам ещё раз, но я поступил несколько по другому. для начала я добавил новый класс для воспроизведения звука
C#
1
2
3
4
5
 public partial class Form1 : Form
    {
        System.Media.SoundPlayer sp = new System.Media.SoundPlayer(WindowsFormsApplication1.Properties.Resources.Fail);
           public Form1()
        {
а затем воспроизвёл при событии
C#
1
2
3
4
5
6
 private void MoveToStart()
        {
            sp.Play();
                    Point StartingPoint = panel1.Location;
            StartingPoint.Offset(10, 10);
            Cursor.Position = PointToScreen(StartingPoint);
некоторые строки тут не относятся к звуку, но я их добавил для нагядности. По сути, с чего я начинал вопрос, в тех скобках, в которых указывался путь в системе, я ввёл путь к файлу в Ресурсах. Это меня радует, потому что есть какое-то понимание основ, и то, что я к этому додумался без книжек, на основе Ваших советов. По сути, я не знал вообще про ресурсы, теперь имею понятие о них, и это достаточно просто. Осталось только приучиться к комментариям ( я часто теряюсь в коде и пишу иногда туда, куда не нужно)))
 Комментарий модератора 
Запрещено использовать нецензурные выражения в любом виде, оскорблять других участников форума, умышленно использовать выражения, противоречащие правилам русского языка.
0
 Аватар для Etrimus
399 / 366 / 54
Регистрация: 23.05.2010
Сообщений: 716
04.06.2011, 09:23
Цитата Сообщение от kRotZ Посмотреть сообщение
У мня такой вопрос, вообще язык программирования C# , он серьёзный?
Да, это очень серьёзный язык. Уже хотя бы потому, что его разработчиком является компания Microsoft, а над развитием языка трудятся их же специалисты. В языке очень много различных готовых средств и технологий для реализции нужных задач. И продукты на нём можно сделать любого назначения (кроме низкоуровневых). СиШарп - это язых весьма высокого уровня, т.е., на нём нет смысла писать, например, вирусы. И самое главное - язык очень активно поддерживается и развивается.
Цитата Сообщение от kRotZ Посмотреть сообщение
И обьясните пожалуйста что такое .NET , только я прошу именно простого ЧЕЛОВЕЧЕСКОГО обьяснения, википедии я уже начитался
Хм, на Википедии в принципе довольно хорошо объяснено, ну попробую от себя сказать.
Во-первых, что бы работали программы для NET, нужно утсановить так называемый пакет NET Framework. А что это? Если совсем просто - то это куча файлов-библиотек (расширение .dll), в которых огромное количество разных готовых программных кодов. И всё это разделено по логике - есть классы для работы с сетью, для работы с математическими функциями, для работы с электронной почтой. А ты их используешь. Все эти коды написали и собрали в dll-файла другие люди.
И ещё особенность. Когда ты написал код например на C++, то при компиляции создаётся файл с машинными кодами, напрямую работающими с ОС. (сразу скажу, что есть версия С++ и для NET) А если написал прогу на NET-языке, то компилируется не файл с исполняемыми кодами для ОС, а файл с промежуточным кодом - который выполняется как бы в отдельной среде - как в аквариуме (это и есть среда NET). А из этого аквариума уже выходят те коды, про которые я писал выше (которые после C++ получаются). Зачем всё это? Объясняется это так - что бы программы были независимы от платформы. Т.е., если NET Framework установлен на двух машинах с разными версиями ОС, то тебе не надо беспокоиться о различиях этих ОС - твой код сначала преобразуется в "аквариуме" именно так, как надо для конктетной ОС.
Но за всё это платишь тем, что для работы программы надо иметь на этом компе NET Framework, ещё и конкретной версии, под которую писалась твоя программа.
Отмечу, что такое объяснение - упрощённое в несколько раз. Но как я понял, тебе необходимо больше практиковаться и читать теорию. И попробуй как-нибудь позже зайти на ту же Википедию - и ты увидишь, что всё станет понятно в той статье про NET.
0
0 / 0 / 0
Регистрация: 03.06.2011
Сообщений: 5
04.06.2011, 14:25  [ТС]
Etrimus, просто понимаете, почему я такое спрашиваю, мне не совсем понятно, для чего тогда было поддерживать такие языки как C#, F#, Visual Basic и даже использовать язык C++ этих целей, а конкретно работать с платформой FrameWork??? если получается, что библиотеки допустим 4-ой версии одинаковые для всех ПК, то различные языки получается только вносят изменения в пунктуации??? ведь в итоге, на этих языках, получаются однотипные приложения, использующие одну и ту же библиотеку... а насчём практики и теории, Вы правы, хотя мне и так приятно, когда кучка непонятного кода для других, превращается в прогу, и неважно, насколько она полезна, зато это ПРОГА

Добавлено через 9 минут
и ещё, за серьёзность почему спросил, просто мне вспоминаются программы, написанные на Net FrameWork , возьму к примеру RTSewenLite , это прога, ну для создания сборок Windows 7, я вообще не поклоник такого, но просто тестировал... ну сразу отмечается в такой программе, это её НЕСТАБИЛЬНОСТЬ, её посадить... нефиг делать. понятно, да, эта программа занимается постоянно разархивированием образов ОС, тобиш грузит проц... толлько почему то, при архивировании такой программой как WinRAR , система в целом стабильна, окна перемещаются... а та прога, когда чтото выполняет, просто виснет, и всё... ну или же такую, как Paint.NET, хотя впринципе неплохая программа, БЕСПЛАТНАЯ, имеет ряд неоспоримых преимуществ (думаю из бесплатных это по праву лучший графический редактор), но опять же , в нём чувствуется некая сыроватость, где-то он подвисает, дёргается.... и такой вопрос, какой язык используется ддля написания компьютерных игр??? я имею ввиду, современнные...
0
 Аватар для umnick_kh
311 / 249 / 44
Регистрация: 06.12.2010
Сообщений: 527
04.06.2011, 15:01
Цитата Сообщение от kRotZ Посмотреть сообщение
какой язык используется ддля написания компьютерных игр?
Тут все зависит от движка(Engine),на котором разрабатывается игра.Игровой движок Unity 3D,например,поддерживает C#,как скриптовый язык для этого движка.Я с ним работал,очень широкие возможности у этого движка.Еще работал с движком Blitz3D,там встроенный язык называется BlitzBasic,очень похож на обычный Basic,но с большими возможностями.Один раз я на нем даже написал игру,простенький аналог "змейки"
Еще есть Microsoft XNA,но это не совсем движок,это больше инструмент,облегчающий разработку игр на C#.С ним я тоже работал,но скажу,с ним работать труднее чем,например,с тем же Blitz3D.

Многие игровый движки(Game Engine) поддерживают интеграцию физических движков,для улучшения геймплея и реалистичности,пример такого физического движка - PhysX.Например, при разработке
Dragon Age: Origins были использованы технологии PhysX`а.
0
0 / 0 / 0
Регистрация: 03.06.2011
Сообщений: 5
04.06.2011, 15:37  [ТС]
да... PhysX мне известен... жаль, что он нормально только на Nvidia работает... хотя, игра на этом движке непомерно тяжелые.... даж неясно почему. Думаю сами встречались, есть игры более менее красивые и с нормальными требованиями, я есть по графике хуже, да и ещё лаганные какие-то... А как насчёт движка Source?? Это что получается, движок, это как-бы язык программирования??? или это примерно как библиотека FrameWork только для других целей???
0
 Аватар для umnick_kh
311 / 249 / 44
Регистрация: 06.12.2010
Сообщений: 527
04.06.2011, 15:43
В Source используется шейдерный рендеринг,а кодится все,скорее всего,на C++
0
 Аватар для Etrimus
399 / 366 / 54
Регистрация: 23.05.2010
Сообщений: 716
05.06.2011, 15:33
Цитата Сообщение от kRotZ Посмотреть сообщение
Это что получается, движок, это как-бы язык программирования???
Движок это набор программных кодов, реализующих определённую функциональность. Это не язык программирования, это продукт на нём написанный. Часто игровые движки создаются определёнными людьми и потом продаются за деньги людям, желающим делать игры на этом движке. Потому что в игровом движке подразумевается наличие всех нужных средств для имитации чего-либо - обсчёт видео-графики, обсчёт звука, реализация так называемого "Искусстевнного Интеллекта", сетевой код. Т.е., можно взять игровой движок и начать создавать свои игры. Хочешь - делай стрелялку про войну 41-45гг, хочешь - про войну роботов и людей в 30-м веке Движок может содержать некий "свой" язык для создания игр.
Это набор многократно используемых программных компонентов - один раз для тебя написали - и делай себе игры сначала про роботов, потом про людей. Кроме того движок в себя включает ещё визуальные инструменты разработки - радактор карт, редактор персонажей например...
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.06.2011, 15:33
Помогаю со студенческими работами здесь

Отправка файлов на email через приложение
Прога: Из заданной папки собирает в себя файлы определенного типа следующим образом DirectoryInfo ThatDir = new...

Клиент-серверное приложение: передача файлов
Доброй ночи, форумчане. Нужно реализовать программу на C#, которая могёт передавать файл от сервера к клиенту. При этом нужно реализовать...

Приложение для передачи файлов + локальный чат
Есть приложение для отправки и получения файлов по локальной сети. На сокетах. Нашёл готовое и думал перебрать под себя. Полностью...

Как ассоциировать свое приложение с конкретным типом файлов
нужно, чтобы при открытии файла (или ПКМ>открыть с помощью>моя программа) включалась моя программа и загружала данный файл (картинку), ну...

Выгрузка файлов в %temp% и запуск exe через консольное приложение
У меня есть exe и 2 файла dll. Если этих dll нет рядом,exe не откроется. Нужно чтобы консольное приложение выгружало 3 файла(exe и два...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru