![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » Скрипты Inno Setup. Помощь и советы [часть 5] |
|
Скрипты Inno Setup. Помощь и советы [часть 5]
|
Ветеран Сообщения: 1274 |
Внимание! Данная тема предназначена только для обсуждения написания скриптов !
Остальные вопросы, а также последние версии компилятора в теме Inno Setup. Прочие вопросы. Предыдущие ветки обсуждения по ссылкам ниже и в прикреплённых архивах: Inno Setup [все вопросы] часть 1 Inno Setup [все вопросы] часть 2 Скрипты Inno Setup. Помощь и советы [часть 3] Скрипты Inno Setup. Помощь и советы [часть 4] |
|
Отправлено: 03:49, 21-05-2012 |
Ветеран Сообщения: 649
|
Профиль | Отправить PM | Цитировать Пацаны, помогите пожалуйста создать настоящий генератор случайных чисел!
дело в том, что функция random основана на математике, а потому числа которые она возвращает не хаотичны, много повторов подряд перевернул форумы и понял, что единственный способ получить настоящее случайное число описан здесь http://habrahabr.ru/post/62237/ за исключением получения их из квантового вакуума http://www.lenta.ru/news/2012/04/16/randomiser/ ![]() а именно "запись помех электропитания" звуковой карты в буфер, считывание оттуда значения грубо говоря мне нужен "более рандомный рандом" в общем импортировал из MMSystem.pas функции и структуры данных, и перевернул форумы по записи с микофона и вообще записи, но сложновато прошу помочь по возможности! код: PS: извините, что выношу вам мозг своими злостными потребностями ![]() |
Отправлено: 01:04, 30-11-2012 | #1341 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 3
|
Профиль | Отправить PM | Цитировать Доброго времени суток! Как сделать такой серийный номер, который будет зависеть от каких-либо параметров компьютера?
Идея в том, чтобы клиент скидывал мне серийный номер, а я ему отправлял правильный пароль. есть функция (взята из справки, как просто вводить определенный серийный номер), например по маске: function CheckSerial(Serial: String): Boolean; var mask:string; i:Integer; begin Result:=True; mask:='####-####-##****'; If Length(Serial)<>Length(mask) then begin Result:=False; exit; end; For i:=1 to Length(mask) do begin If StrGet(mask, i)='#' then If not ((Ord(StrGet(Serial, i))>=48) and (Ord(StrGet(Serial, i))<=57)) then begin Result:=False; exit; end; If StrGet(mask, i)='*' then If not ((StrGet(Serial, i)>='A') and (StrGet(Serial, i)<='Z')) then begin Result:=False; exit; end; end; end; |
Отправлено: 11:57, 30-11-2012 | #1342 |
Ветеран Сообщения: 649
|
Профиль | Отправить PM | Цитировать RodionSabitov, думаю твой случай WinApi функция http://ru.wikipedia.org/wiki/CryptGenRandom которая выдаёт число собранное из
только портировать сей код http://www.sql.ru/forum/actualthread.aspx?tid=467265 для меня не намного легче чем из моего предыдущего поста ![]() ===================================================================== помню спрашивал http://forum.oszone.net/post-1945197-379.html и El Sanchez дал классный код http://forum.oszone.net/post-1945281-380.html на определение рабочей папки процесса, после чего я убивал процесс через ком строку Exec('taskkill', '/f /im hl2.exe', '', SW_Hide, ewWaitUntilTerminated, ErrorCode); но вот 2 проблемы 1: как узнать, что процесс убит? Можно после команды консоли проверть есть ли этот процесс, но как-то это не очень удобно! 2: Запущено 5 одинаковых процессов из разных директорий, а нужно убить только 1 нли 2 из них, но не все (не мой случай), но всё-таки ![]() намутил код на основе http://forum.oszone.net/post-1945281-380.html под свои нужды ключевая функция function TerminateProcess(hProcess: THandle; uExitCode: UINT): BOOL; external 'TerminateProcess@kernel32.dll stdcall'; Убиение процесса function KillTaskEx(ExeFileName: String): Boolean; функция возвращает булев значение (убила, не убила процесс) входным параметром может быть: 1. Имя процесса - будут завершаться все процессы с этим именем ...if KillTaskEx('calc.exe') then MsgBox('OK', mbInformation, MB_OK); 2. Путь к файлу от которого исходит процесс (рабочая директория) ...if KillTaskEx('C:\calc.exe') then MsgBox('OK', mbInformation, MB_OK); во втором случае завершится процесс/процессы только из этой директории! забирайте кому нужно код: |
Отправлено: 16:41, 01-12-2012 | #1343 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать Johny777, TerminateProcess стоит применять в крайнем случае, когда другие способы завершения процесса не помогают. Нужно послать окну программы сообщение WM_CLOSE, подождать 5 сек (где-то читал, что приложение считается зависшим, если не отвечает на действия системы в течение 5 сек.) и только потом TerminateProcess, если нужно.
|
Отправлено: 17:54, 01-12-2012 | #1344 |
Ветеран Сообщения: 1640
|
Профиль | Отправить PM | Цитировать Цитата El Sanchez:
HKCU\Control Panel\Desktop "HungAppTimeout"="5000" так что ждать нужно не 5сек, а значение параметра HungAppTimeout |
|
------- Отправлено: 18:30, 01-12-2012 | #1345 |
Ветеран Сообщения: 649
|
Профиль | Отправить PM | Цитировать Цитата R.i.m.s.k.y.:
========================================================== El Sanchez, Ты можешь пожалуйста научить свою функцию так чтоб она ещё и путь к файлу сравнивала как у меня, ну короче чтоб при необходимости только определённые процессы завершать. (а то получается грохнули одного Васю, другого, а фамилию не спросили) Я боюсь это делать, тк когда свою функцию ваял мне показали 2 раза синий экран, и сейчс ещё раз когда твою функцию дополнял ![]() Цитата El Sanchez:
Цитата El Sanchez:
![]() http://www.delphisources.ru/forum/sh...ad.php?t=21276 хотя там тоже TerminateProcess, но уже для системных процессов, путём поднятия привилегий текущему процессу, как я понимаю пртировал, не тестил (боюсь) PS: Халфе 2 в полноэкранном режиме на сообщение PostMessage(hwnd, WM_CLOSE, 0, 0); пофиг, (поставлю dwTimeout в 2 раза меньше) но в оконном режиме, закрытие окна работает на ура |
|||
Отправлено: 03:33, 02-12-2012 | #1346 |
Ветеран Сообщения: 978
|
Профиль | Сайт | Отправить PM | Цитировать Цитата Johny777:
|
|
------- Отправлено: 13:37, 02-12-2012 | #1347 |
Ветеран Сообщения: 862
|
Профиль | Отправить PM | Цитировать Люди.помогите мне объеденить эти два кода и чтобы они работали одновременно.Здесь один код на работу wizardsmallimage во время удаления и код на работу кликабельного лого во время удаления.Но если их поменять местами допустим код на лого сверху,а на wizardsmallimage внизу.
procedure InitializeUninstallProgressForm(); begin FileCopy(ExpandConstant('{app}\WizardSmallImage.bmp'), ExpandConstant('{app}\WizardSmallImage.bmp'), False); with UninstallProgressForm.WizardSmallBitmapImage do begin Bitmap.LoadFromFile(ExpandConstant('{app}\WizardSmallImage.bmp')); end; end; begin with TBitmapImage.Create(nil) do begin Parent := UninstallProgressForm; Bitmap.LoadFromResourceName(HInstance, '_IS_logo'); Stretch:= true; SetBounds(ScaleX(20), ScaleY(315), ScaleX(154), ScaleY(42)); end; end. ![]() ![]() вот коды procedure InitializeUninstallProgressForm(); begin FileCopy(ExpandConstant('{app}\WizardSmallImage.bmp'), ExpandConstant('{app}\WizardSmallImage.bmp'), False); with UninstallProgressForm.WizardSmallBitmapImage do begin Bitmap.LoadFromFile(ExpandConstant('{app}\WizardSmallImage.bmp')); end; end; |
------- Последний раз редактировалось habib2302, 04-12-2012 в 11:37. Отправлено: 11:28, 04-12-2012 | #1348 |
Ветеран Сообщения: 978
|
Профиль | Сайт | Отправить PM | Цитировать procedure InitializeUninstallProgressForm(); begin FileCopy(ExpandConstant('{app}\WizardSmallImage.bmp'), ExpandConstant('{app}\WizardSmallImage.bmp'), False); with UninstallProgressForm.WizardSmallBitmapImage do Bitmap.LoadFromFile(ExpandConstant('{app}\WizardSmallImage.bmp')); with TBitmapImage.Create(UninstallProgressForm) do begin Parent := UninstallProgressForm; Stretch:= true; SetBounds(ScaleX(20), ScaleY(315), ScaleX(154), ScaleY(42)); Bitmap.LoadFromResourceName(HInstance, '_IS_logo'); end; end. |
------- Отправлено: 12:20, 04-12-2012 | #1349 |
Ветеран Сообщения: 862
|
Профиль | Отправить PM | Цитировать вот полный скрипт на лого
[Setup] BitmapResource=logo:logo.bmp [Files] Source: logo.bmp; DestDir: {app}; Flags: dontcopy [*Code] procedure InitializeUninstallProgressForm(); begin with TBitmapImage.Create(nil) do begin Parent := UninstallProgressForm; Bitmap.LoadFromResourceName(HInstance, '_IS_logo'); Stretch:= true; SetBounds(ScaleX(20), ScaleY(315), ScaleX(154), ScaleY(42)); end; end; [Setup] WizardSmallImageFile={tmp}\WizardSmallImage.bmp [Files] Source: {tmp}\WizardSmallImage.bmp; DestDir: {app}; Flags: ignoreversion; Attribs: Hidden; [*Code] procedure InitializeUninstallProgressForm(); begin FileCopy(ExpandConstant('{app}\WizardSmallImage.bmp'), ExpandConstant('{app}\WizardSmallImage.bmp'), False); with UninstallProgressForm.WizardSmallBitmapImage do begin Bitmap.LoadFromFile(ExpandConstant('{app}\WizardSmallImage.bmp')); end; end; Цитата Gnom_aka_Lexander:
и как сделать растяжение wizardsmallimage на деинсталляторе с сокрытием лейбелов? |
|
------- Последний раз редактировалось habib2302, 04-12-2012 в 12:36. Отправлено: 12:28, 04-12-2012 | #1350 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Скрипты Inno Setup. Помощь и советы [часть 4] | El Sanchez | Автоматическая установка приложений | 2099 | 22-05-2012 23:16 | |
Скрипты Inno Setup. Помощь и советы [часть 3] | Serega | Автоматическая установка приложений | 3755 | 26-10-2011 17:58 | |
[архив] Скрипты Inno Setup. Помощь и советы [часть 2] | Serega | Автоматическая установка приложений | 2651 | 08-11-2010 18:34 | |
Скрипты Inno Setup Compiler | QAZAK | Автоматическая установка приложений | 7 | 15-01-2007 17:59 | |
Inno Setup | tradeukraine | Вебмастеру | 3 | 13-06-2006 20:39 |
|