Сейчас на форуме: Rio (+5 невидимых) |
![]() |
eXeL@B —› Вопросы новичков —› Подмена GUI в консоли |
Посл.ответ | Сообщение |
|
Создано: 21 мая 2008 20:50 · Личное сообщение · #1 Здрасте... Вопрос не по тематике форума, но новичку больше писать с таким вопросом некуда... Есть cmd файл, хочется чтоб по его запуску открывалось не кЫвадратное окно консоли, а какое-нить окно с красивым тырфейсом, перехватывающее текст выполняемых операций исходного cmdшника. Если интересно - тема такая. Собрал драйверпак для автоустановки с множеством дров. Сделал авторан, закатал на болванку, все пашет, вот тока красоты не хватает. И еще хочется, ну эт уж менее важно, чтоб выводился не только текст прописанный для вывода из cmd, но и вывод операций с файлами, которые в данный момент обрабатываются, типа как при извлечении из sfx, тупо отображение списка... Какой есть софт по этой затее? Программы для сбора инсталляторов не подходят из за их ориентированность на участие пользователя в процессе установки, типа куда ставить и др... А мне нужно чтоб при старте открылся какой-нить фон с отображением перехваченного текста, то есть даже не окно с кнопками наверху, а что то вроде splash screen, как, опять же к примеру, при запуске 10 фотошопа картинка с текстом о инициализации модулей программы! Спасибо. ![]() |
|
Создано: 21 мая 2008 21:40 · Личное сообщение · #2 |
|
Создано: 21 мая 2008 21:42 · Личное сообщение · #3 |
|
Создано: 21 мая 2008 21:58 · Поправил: EmytZ · Личное сообщение · #4 |
|
Создано: 21 мая 2008 22:36 · Поправил: Stack · Личное сообщение · #5 EmytZ пишет: А как вывести текст на ентот скрин и расширить его включив вывод имен файлов обработки? Я же говорю пишешь прогу (на чем хочешь ххоть на бейсике) делаешь свое дело а результат выводишь на Memo( в случае с delphi ) или на RichEdit. EmytZ пишет: А не подскажете что конретно в delphi мне может помочь? Язык простой + VCL ----- Md5 fcbb6c9c9a5029b24d70f2d67c7cca74 ![]() |
|
Создано: 21 мая 2008 22:45 · Личное сообщение · #6 |
|
Создано: 22 мая 2008 05:58 · Поправил: MACKLIA · Личное сообщение · #7 EmytZ пишет: А не подскажете что конретно в delphi мне может помочь? 1.На форму кидаем Memo и Button 2.В uses дописываем ShellAPI; 3.При нажатии кнопки пишем procedure TForm1.Button1Click(Sender: TObject); var Disk:string; begin Disk:=ExtractFilePath(Application.ExeName); //в переменную Disk запишем путь ,где находится программа (*.bat находится там же) ShellExecute(Handle, nil, '*.bat', nil, nil, SW_Hide);// *.bat - это твой bat или cmd Memo1.Lines.Add('установка началась'); Sleep(3000);//пауза 3000 = 3 сек. Memo1.Lines.Add('установка идет'); Sleep(3000); Memo1.Lines.Add('всё установилось'); end; ----- Что один человек сделал , другой всегда сломать может... ![]() |
|
Создано: 22 мая 2008 09:29 · Личное сообщение · #8 |
|
Создано: 22 мая 2008 12:32 · Личное сообщение · #9 |
|
Создано: 22 мая 2008 16:19 · Поправил: EmytZ · Личное сообщение · #10 хм... спасибо. Button мне не нужон, т.к. все автоматом будет. Вот пример из моего Setup.cmd ... ECHO. ECHO Installing Chipset Driver ECHO Please wait... start /wait %systemdrive%\install\Drivers\Chipset ... /wait как понимаете сдесь лучше подходит, чем "Sleep(3000);//пауза 3000 = 3 сек." как с этим быть? И как на счет VisualBasic6 вместо Delphi? ![]() |
|
Создано: 22 мая 2008 16:56 · Поправил: MACKLIA · Личное сообщение · #11 EmytZ пишет: Button мне не нужон, т.к. все автоматом будет. Тогда procedure TForm1.FormCreate(Sender: TObject); EmytZ пишет: И как на счет VisualBasic6 вместо Delphi? А нафига ,если чтобы прога меньше была то или писать на API ,но тогдауж ASM рулит ![]() ----- Что один человек сделал , другой всегда сломать может... ![]() |
|
Создано: 22 мая 2008 18:41 · Личное сообщение · #12 EmytZ пишет: И как на счет VisualBasic6 вместо Delphi? Пиши на чем душа просит. MACKLIA пишет: А нафига ,если чтобы прога меньше была то или писать на API ,но тогдауж ASM рулит ,или сожмёшь готовую прогу и сё - правда 150~170 кб всё равно будет Ну еще можно сделать диалог в ресурсах (ручками или программой каконить) и удалить модуль Forms около 50 кб можно впихнуть + изображение. Вот тебе и винапи. ----- Md5 fcbb6c9c9a5029b24d70f2d67c7cca74 ![]() |
|
Создано: 22 мая 2008 19:16 · Личное сообщение · #13 Все можно реализовать и на масме, юзая пайп. Вот 21й урок айзелона который я чуть переделал. ![]() ![]() |
|
Создано: 22 мая 2008 19:52 · Поправил: EmytZ · Личное сообщение · #14 Delphi скачали ) Колдуем ![]() А с этим как: "/wait как понимаете сдесь лучше подходит, чем "Sleep(3000);//пауза 3000 = 3 сек." сейчас на ентом ожидании и застряли... Короч, вт что вышло: unit Unit1;
Когда в delphi жму на Run он выделяет красным подчеркнутую строку и ставит курсор в позицию после "TForm1.FormCreate"... Может я вообще не так что то делаю? При этом все лежит на "D:" - и sfx c дровами и test.cmd ![]() |
|
Создано: 22 мая 2008 20:11 · Личное сообщение · #15 |
|
Создано: 23 мая 2008 13:43 · Поправил: MACKLIA · Личное сообщение · #16 EmytZ пишет: procedure TForm1.FormCreate|(Sender: D:\test.cmd); Это что за фигня такая ? Короче делай так - мышкой по форме два раза кликни и Delphi сам создаст procedure TForm1.FormCreate(Sender: TObject); ,что идет в скобках трогать вообще не надо !!! EmytZ пишет: Disk:=ExtractFilePath(D:\Install\); Переменная Disk служит для занесения в неё информации о месте расположения программы(будем считать ,что прога и батник находятся в одой директории).ExtractFilePath(Application.ExeName); сам определит где прога находится ,т.е. надо писать Disk:=ExtractFilePath(Application.ExeName); .а не как у тебя Disk:=ExtractFilePath(D:\Install\). И напиши вот так надо - ShellExecute(Handle, nil,PChar(Disk+'*.bat'), nil, nil, SW_show); - ато я чтото первый раз ступил . Потому что PChar(Disk+'*.bat') -это полный путь да батника , а не у всех сидюк это диск D EmytZ пишет: А с этим как: "/wait как понимаете сдесь лучше подходит, чем "Sleep(3000);//пауза 3000 = 3 сек." сейчас на ентом ожидании и застряли... подумаю как лучше сделать ,но позднее.Сначала пусть у тебя хоть так получится,а там доработаем. ----- Что один человек сделал , другой всегда сломать может... ![]() |
|
Создано: 24 мая 2008 17:20 · Поправил: EmytZ · Личное сообщение · #17 MACKLIA сидюк у меня не D. Это я тренируюсь на диске D. Сложно блин понять все енто! Надо было наверное сразу написать все подробно... Каюсь. Что имеется вообще: я взял установочные файлы дров и положил каждый в соотв директорию собрал SFX архив содержащий эти папки и с параметром выполнения запуска файла по адресу: %systemdrive%\install\Setup.cmd написал Setup.cmd следуцющего содержания: @echo off
и так далее для каждого драйвера. %systemdrive%\install - это временная папка на диске с где установлена система, куда извлекаются дрова с сидюка. Этот Setup.cmd положил в корень архива. Как запускается это все? Методом cmdlines.txt на этапе T-12, т.е. за 12 минут до завершения установки винды происходит извлечение с диска в папку %systemdrive%\install\, а оттуда уже запускается мой Setup.cmd То есть сидюк тут уже не при делах! Сейчас осмысляю выше написанное и изучаю литературу по Delphi, о результате сообщу. ![]() |
|
Создано: 26 мая 2008 04:40 · Поправил: EmytZ · Личное сообщение · #18 Учитывая то что я с программированием не сталкивался, думаю, что для начала неплохо - скроллбары поставил и поле Memo меняет размер в зависимости от размера окна (см вложение)... Без книг Delphi сложно понять... Неясным остается - как прописать пути относительно папки %systemdrive%\install - как перехватить текст из консоли В архиве помимо результата я положил еще test.cmd. Прошу помочь на примере вывести текста на Memo. Или нужно как то синхронизировать процесс показа нового (следующего по списку) текста в Memo с окончанием /wait в скрытой консоли... P.S. GodFather - архив поврежден... А может в Delphi есть команды для запуска тихой установки и ожидания завершения процесса? ![]() ![]() |
![]() |
eXeL@B —› Вопросы новичков —› Подмена GUI в консоли |