Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Win API


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / WinAPI

Выпуск № 241
от 18.05.2006, 04:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 324, Экспертов: 32
В номере:Вопросов: 2, Ответов: 3


Вопрос № 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-е)." За ранее благодарен!
Отправлен: 12.05.2006, 21:37
Вопрос задал: Алистратов Олег Александрович (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Алексей Смуриков
Здравствуйте, Алистратов Олег Александрович!
Алгоритм таков:
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


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.32 от 03.05.2006
Яндекс Rambler's Top100

В избранное