Вопрос № 42879: Здаравствуйте, уважаемые эксперты.
У меня такой вопрос:
Как работать с микрофоном и колонками с помощью стандартных функций ( и вообще есть ли они).
Спасибо....Вопрос № 42894: Здравствуйте, уважаемые эксперты. Подскажите пожалуйста как написать следующюю программу, хотя бы алгоритм.
"Программе указывается файл или группа файлов и место на диске, куда их скопировать. Копирование выполнять отдельными потоками с воз...
Вопрос № 42.879
Здаравствуйте, уважаемые эксперты.
У меня такой вопрос:
Как работать с микрофоном и колонками с помощью стандартных функций ( и вообще есть ли они).
Спасибо.
Отправлен: 12.05.2006, 19:19
Вопрос задал: Zeitgeist (статус: 1-ый класс)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Raptor1
Здравствуйте, Zeitgeist!
Да, они есть, смотри DirectSound или функции начинающиеся с wave: waveInOpen, waveInClose ...
Ответ отправил: Raptor1 (статус: Студент)
Ответ отправлен: 13.05.2006, 13:11
Вопрос № 42.894
Здравствуйте, уважаемые эксперты. Подскажите пожалуйста как написать следующюю программу, хотя бы алгоритм.
"Программе указывается файл или группа файлов и место на диске, куда их скопировать. Копирование выполнять отдельными потоками с возможностью приостановки и отказа от операции (как сделано в Total Commander-е)." За ранее благодарен!
Отвечает: Алексей Смуриков
Здравствуйте, Алистратов Олег Александрович!
Алгоритм таков:
1. Открываете файлы или группу файлов коммандой GetOpenFileName!
2. Получаете имя файла (формат можно увидеть просмотрев содержимое буфера по приёму имён файлов)!
3. Вызываете вашу функцию копирования с помощью функции CreateThread (Перед этим необходимо создаёть функцию копирования в с одним параметром)!
4. Для управления копированием можно использовать функции SuspendThread (Пауза), ResumeThread (Продолжить), TerminateThread(Убить поток).
5. Если есть ещё файлы то можно перейти на шаг 2!
--------- Speccy Rulezz!!!
Ответ отправил: Алексей Смуриков (статус: Практикант)
Ответ отправлен: 13.05.2006, 07:58
Отвечает: Raptor1
Здравствуйте, Алистратов Олег Александрович!
Наверное имелось в виду копирование выполнять отдельным ПОТОКОМ. Тогда просто составляешь список файлов, заводишь событие (Event) для остановки и отмены и запускаешь поток копирования. В нем те файлы которые маленького размера (например меньше 10 МБ) копируешь целиком, а больше кусками по 10 МБ с помощью MemoryMappedFiles. После копирования каждого файла или куска поверяешь, не установлено ли событие, ну и в основной программе соответственно при нажати отказа устанавливаешь нужное событие. При остановке все
просто, выходишь из потока убрав за собой если тредуется. Сложнее при приостановке. Я бы завел еще одно событие в основной программе например CanSuspend и в потоке при включенном событии приостановки включал бы событие CanSuspend и Sleep(500) после него, а уже в ответ на это событие в основной программе выполнял бы suspend. Почему лучше использовать события - трудно сказать что произойдет если твой поток будет копировать большой файл и ты его в это время остановишь или при
бьешь. По моему в том же TotalCommander (могу ошибаться) раздражает невозможность отменить копирование большого файла, пока он не скопируется весь. При этом поток будет завершаться сам.
Ответ отправил: Raptor1 (статус: Студент)
Ответ отправлен: 13.05.2006, 13:07