|
Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » [архив] Скрипты Inno Setup. Помощь и советы [часть 2] |
|
[архив] Скрипты Inno Setup. Помощь и советы [часть 2]
|
Ветеран Сообщения: 1133 |
Лимит страниц.
Тема закрыта. Продолжение по ссылке Скрипты Inno Setup. Помощь и советы [часть 3] Внимание! Данная тема предназначена только для обсуждения написания скриптов ! Остальные вопросы, а также последние версии компилятора в теме Inno Setup. Прочие вопросы. Ссылка на архив предыдущей темы (также можно скачать из вложения) |
|
------- Отправлено: 22:06, 23-08-2009 |
Новый участник Сообщения: 16
|
Профиль | Отправить PM | Цитировать |
Последний раз редактировалось Cranz86, 21-01-2010 в 16:58. Отправлено: 16:46, 21-01-2010 | #891 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 1640
|
Профиль | Отправить PM | Цитировать Cranz86
тогда да, файлик не в тему, как чекбоксы в коде делать я не знаю и уже вряд ли помогу. |
------- Отправлено: 17:21, 21-01-2010 | #892 |
Ветеран Сообщения: 1133
|
Профиль | Отправить PM | Цитировать Цитата South:
Цитата South:
Видимо вы слабо знакомы с Inno Setup. Попробуйте запустить любую программу через Exec или ShellExec с параметром ожидания ewWaitUntilTerminated или запустить через [Run] и вы не сможите передвинуть окно инсталлятора. Цитата South:
![]() Самый простой вариант, это открыть файл через OpenProcess, если Handle > 0, то процесс работает... Ну вообще-то, вы наверно заметили, что я сначала сверяю ID процесса, а затем его имя, т.е. чтоб определить, что это именно тот файл. Не знаю, знаете вы или нет, но ID процесса в системе не уникален. После завершения этого процесса, его ID освобождается и при запуске другого процесса ему может быть присвоен системой точно такой же ID. Так что проверка просто по ID, я счёл не совсем правильным и точным. Ну а более простой способ узнать имя процесса через его ID, мне к сожалению не известен. Если вам известен более простой способ, то поделитесь, так сказать для само развития. Цитата South:
Цитата South:
Цитата South:
Цитата South:
Цитата South:
Цитата South:
|
|||||||||
------- Отправлено: 18:18, 21-01-2010 | #893 |
Старожил Сообщения: 178
|
Профиль | Отправить PM | Цитировать Inno Setup Compiler 5.3.7 build 100121 (English) by Restools
|
Отправлено: 18:21, 21-01-2010 | #894 |
Новый участник Сообщения: 29
|
Профиль | Отправить PM | Цитировать Цитата Serega:
Цитата:
Цитата:
Цитата:
Цитата:
TProcessInformation = record hProcess: THandle; hThread: THandle; dwProcessId: DWORD; dwThreadId: DWORD; end; Цитата:
Цитата:
Цитата:
![]() Цитата:
|
|||||||||
Отправлено: 21:52, 21-01-2010 | #895 |
Ветеран Сообщения: 1133
|
Профиль | Отправить PM | Цитировать Цитата South:
Цитата South:
Это можно увидеть, если добавить сообщение в функцию _StartProc, пример: ProcessName:= ExtractFileName(Filename); ProcessId:= PI.dwProcessId; MsgBox('Запущена программа: ' + ProcessName + #13#10 + 'PI.hProcess: ' + IntToStr(PI.hProcess) + #13#10 + '_OpenProcess: ' + IntToStr(_OpenProcess(PROCESS_ALL_ACCESS, False, ProcessId)), mbInformation, MB_OK); _CloseHandle(PI.hProcess); _CloseHandle(PI.hThread); Цитата South:
Цитата South:
А так понятно, можно было написать отдельную dll'ку и всего это скрипта не надо, но этих dll'ок и так уже куча... P.S. |
||||
------- Отправлено: 22:32, 21-01-2010 | #896 |
Новый участник Сообщения: 29
|
Профиль | Отправить PM | Цитировать Цитата Serega:
по поводу приведенного куска hProcess:THandle, THandle=Longword в инно - function IntToStr(i: Longint): String; выводы по поводу IntToStr(PI.hProcess) должны быть очевидны Цитата:
Цитата:
ЗЫ все-таки для данной задачи в такой постановке достаточно WaitForSingleObjects. если интересно можно посмотреть на руборде в шапке скрипт ExecAppAndMoveWindow.iss. давненько делал, тоже была задача без привлечения внешних длл запустить приложение и переместить его окно и тоже для распаковки внешних архивов ![]() ![]() ЗЗЫ тут глянул, в TStartupInfo 3 поля являются указателями, ты же их обзываешь Longint'ом, который может принимать отрицательные значения, при этом не инициализируешь все поля, хотя это нужно делать. попробуй эти три поля объявить как Longword, обнули все поля которые не заполняешь конкретными значениями (обычно вызывают FillChar(TStartupInfo , SizeOf(TStartupInfo ), 0)). после этого вызывай CreateProcess, тогда возможно Longword нормально приведется к Pointer и в ответ нормально заполнится TProcessInformation |
|||
Последний раз редактировалось South, 22-01-2010 в 00:23. Отправлено: 23:32, 21-01-2010 | #897 |
Ветеран Сообщения: 1133
|
Профиль | Отправить PM | Цитировать Цитата South:
Цитата South:
Приятно познакомиться с экспертом... ![]() Эх, давненько я не просматривал архив со скриптами, не пришлось бы над многим ломать голову. Кстати запускается там файл у вас через ShellExec, а не через CreateProcess и я попробовал такой вариант: Действительно работает ![]() |
||
------- Отправлено: 00:12, 22-01-2010 | #898 |
Новый участник Сообщения: 29
|
Профиль | Отправить PM | Цитировать Цитата Serega:
Цитата:
![]() вот так вот, из 2 скриптов можно уже собрать что-то человеческое PS а вот тут я выкладывал этот скрипт. правда поиск местонахождения скрипта так и не прояснил не использование CreateProcess ![]() |
||
Последний раз редактировалось South, 22-01-2010 в 01:09. Отправлено: 00:50, 22-01-2010 | #899 |
Ветеран Сообщения: 1133
|
Профиль | Отправить PM | Цитировать Цитата South:
![]() Потом смотрю, чего-то много строк в скрипте получается... решил лишнее не делать, а в итоге оказывается можно ещё проще где-то ещё на 50-70 строк ![]() Цитата South:
![]() Цитата South:
|
|||
------- Последний раз редактировалось Serega, 22-01-2010 в 01:25. Отправлено: 01:11, 22-01-2010 | #900 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Скрипты Inno Setup. Помощь и советы [часть 3] | Serega | Автоматическая установка приложений | 3755 | 26-10-2011 17:58 | |
[архив] Inno Setup .:[все вопросы]:. | Mchik | Автоматическая установка приложений | 1329 | 23-08-2009 20:13 | |
[архив - Часть 2] AutoIt скрипты | Vadikan | AutoIt | 985 | 21-01-2008 09:58 | |
Скрипты Inno Setup Compiler | QAZAK | Автоматическая установка приложений | 7 | 15-01-2007 17:59 | |
[Архив - Часть 1.1] AutoIt скрипты | EgOrus | AutoIt | 335 | 04-02-2006 16:58 |
|