Вопрос № 57780: Здравствуйте, уважаемые эксперты!
Как можно сделать что-то вроде самораспоковывающегося архива?
VC++
Приветствуются дельные советы и ссылки на полезные статьи.
Спасибо....Вопрос № 57862: Доброе время суток, как у вас говорят :-).
Есть неболшая проблемка, я никогда не сталкивался с потоками. Расскажите плиз, как их создавать, использовать и убивать!
Поток нажен, чтоб приниматть данные из СОМ-порта. А если у кого нить найдется ...
Вопрос № 57.780
Здравствуйте, уважаемые эксперты!
Как можно сделать что-то вроде самораспоковывающегося архива?
VC++
Приветствуются дельные советы и ссылки на полезные статьи.
Спасибо.
Отвечает: Sergey A. Wedensky
Здравствуйте, Наумов Сергей Александрович / snov!
Не очень понятен вопрос.
Если Вас интересуют алгоритмы сжатия данных, можете посмотреть сдесь:
http://www.data-compress.net
Но причем тут WinAPI?
Или Вас интересует как хранить данные в исполняемом файле?
Можно в ресурсах - см. FindResourceEx(), LoadResource(), LockResource() и т.п.
Ответ отправил: Sergey A. Wedensky (статус: 4-ый класс)
Ответ отправлен: 05.10.2006, 10:33
Отвечает: dentist
Здравствуйте, Наумов Сергей Александрович / snov!
первое что приходит в голову, это дописывать данные в конце самого exe.
с ресурсами как предлагалось, ничего не выйдет (теоретически это возможно, но трудновыполнимо).
--------- "Software is like sex, it's better then it's free" (c) Linus Torvalds
Ответ отправил: dentist (статус: 5-ый класс)
Ответ отправлен: 05.10.2006, 11:01
Отвечает: Mihasic
Здравствуйте, Наумов Сергей Александрович / snov!
Существует множество архиваторов с исходниками (и не только архиваторов). Т.к. последнее время мне очень понравился алгоритм сжатия lzma, то предлагаю посмотреть на исходники 7-zip и nsis.
Или посмотреть на формат PE, скачать СДК по алгоритму сжатия (для LZMA - 7-zip.org) и далее думаю не так все сложно, суть:
Изначально создается файл, который в себе (в ресурсах) содержит архив и при запуске распаковывает его. Программа же, которая создает такую вещь - просто пишет в этот ресурс свой (созданный собой) архив и корректирует заголовок исполняемого файла (чтобы был правильный размер). Для данного случая неплохо, чтобы ресурс находился в конце программы.
Ответ отправил: Mihasic (статус: 8-ой класс)
Ответ отправлен: 05.10.2006, 15:51 Оценка за ответ: 5
Вопрос № 57.862
Доброе время суток, как у вас говорят :-).
Есть неболшая проблемка, я никогда не сталкивался с потоками. Расскажите плиз, как их создавать, использовать и убивать!
Поток нажен, чтоб приниматть данные из СОМ-порта. А если у кого нить найдется какой нить примерчик, ваще супер.
Вот моя почта gregor1980@yandex.ru
СПАСОБО!
Отправлен: 06.10.2006, 04:22
Вопрос задал: Gibson (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Sergey A. Wedensky
Здравствуйте, Gibson!
lpThreadAttributes отвечает за возможность наследования дескриптора
дочерними процессами и обычно NULL
dwStackSize - размер стека потока в байтах, если 0 по умолчанию 1Мб
lpStartAddress - адрес функции потока (см. ниже)
lpParameter - параметр, который будет передан в функцию потока (можете
передать указатель на свой класс или структуру, если нужно)
dwCreationFlags - если 0, поток запускается сразу, если
CREATE_SUSPENDED нужно вызвать ResumeThread()
lpThreadId - принимает идентификатор потока
Возвращает дескриптор потока
Функция потока выглядит так:
DWORD WINAPI ThreadProc(
LPVOID lpParameter
);
lpParameter - тот самый параметр, который Вы указали в CreateThread()
Если Вы хотите обрабатывать сообщения, в этой функци нужно создать
очередь типа while GetMessage()...
Посылать сообщения потоку можно при помощи PostThreadMessage();
Завершить поток внутри функции потока можно при помощи