Вопрос № 50479: Написал программку: лончер консольного приложения upx.exe. Потом решил внедрить upx.exe в свою программу, чтобы было все в одном файле. Теперь 2 вопроса:
1. Как решить проблему внедрения так, чтобы в нужный момент upx.exe выгружалась в папку TEMP...
Вопрос № 50.479
Написал программку: лончер консольного приложения upx.exe. Потом решил внедрить upx.exe в свою программу, чтобы было все в одном файле. Теперь 2 вопроса:
1. Как решить проблему внедрения так, чтобы в нужный момент upx.exe выгружалась в папку TEMP для запуска. Сейчас сделал совершенно жутко: вставил как OLE, выгружаю через OLE.saveToFile, при этом выгружается не чистый файл, а в некоей обертке, из которой его приходится еще выковыривать (код прилагаю). Работает это, конечно, очень медленно. Как можно (и можно ли силами VB) корректно объединить лончер и консольную программу в одном файле, из которого вторая в нужный момент быстро выгрузится?
2. Как можно (если можно) вывод результатов консольной проги перехватывать, чтобы отобразить их, скажем, в TextBox, а окно консоли вообще можно будет скрыть?
Приложение:
Отправлен: 28.07.2006, 20:05
Вопрос задал: Fole (статус: Посетитель)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 2)
Отвечает: Кокорич Вадим Леонидович
Здравствуйте, Fole!
Если Вы имеете в виду упаковщик РЕ-файлов UPX.exe, то Ваш случай давно и успешно реализован (как раз в одном файле), но я сомневаюсь, что это было сделано в VB. Приведу дословно из "О программе":
UPX_Control v.1.5 (FreWare) Copyright (c) 2004-2006 Rafsoft & Rafael Abdulmanov
http://rafsoft.narod.ru
Данная программа является Windows - оболочкой хорошо известного
упаковщика exe - файлов: The Ultimate Packer for eXecutables (UPX v2.00)
Copyright (c) 1996-2006 Markus Oberhumer & Laszlo Molnar
http://upx.sourceforge.net
Свяжитесь с автором, может быть, он подскажет конкретное решение.
--------- Труд сделал обезьяну человеком, а лень человека - программистом !
Ответ отправил: Кокорич Вадим Леонидович (статус: 2-ой класс)
Ответ отправлен: 29.07.2006, 08:37 Оценка за ответ: 1 Комментарий оценки: Понимаете, вопрос был не об UPX, а о VB, его возможностях и моем незнании этих возможностей. Вместо upx.exe можно было написать любое ConsoleApplication.exe. Я четко сформулировал 2 вопроса и ждал ответа именно на них.
Отвечает: Залетин Виталий Викторович (мь!тарь)
Здравствуйте, Fole!
1. А почему нельзя пoместить экзешник в ресурсы как бинарный ресурс и извлекать оттуда в байтовый массив или строку и записывать этот массив или строку во временный файл? И потом уже запускать его... Как по мне - времени займет минимум, правда размер основного файла .exe немного подрастет, но если так надо - то надо...
2. Почитайте вот это - как раз в тему:
http://www.vbnet.ru/articles/showarticle.aspx?id=85
--------- Учиться никогда не поздно. Особенно программированию!
Отвечает: Александр Шевченко
Здравствуйте, Fole!
1. Попробуйте запихнуть upx в ресурсы и вытягивать его оттуда при помощи функции LoadResData
2. Примеры отлова вывода консоли:
http://www.vb.kiev.ua/code/shell/Control_Console_App.zip
http://www.vb.kiev.ua/code/shell/DOS_App_Output_Capturing.zip
http://www.vb.kiev.ua/code/shell/stdin_cshell.zip
--------- Вместо внутренней почты лучше стучитесь в аську
Ответ отправил: Александр Шевченко (статус: Студент)
Ответ отправлен: 31.07.2006, 11:38 Оценка за ответ: 5