![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Запущена ли Delphi IDE
Gu © (2011-08-13 04:50:00)Вопрос такой, как определить, производится ли запуск приложения из среды Delphi IDE или вне его?
Т.е. наличие активных дельфей, понятно можно определить как:
Function GuIsDelphiRun:Bool;
begin
Result:=false;if FindWindow('TAppBuilder',Nil)<>0 then Result:=true;
end;
Но это немного не то, она вернет True, даже когда приложение запускается например из проводника, а дельфи просто активна. Т.е. что нужно: определить, запускается ли приложение из среды Delphi IDE (по F9) или из например проводника (в этот момент среда Delphi тоже может быть загружена).
Спасибо.
Германн (2011-08-16 00:23:00) [1]
> Gu (13.08.11 04:50)
>
> Вопрос такой, как определить, производится ли запуск приложения
> из среды Delphi IDE или вне его?
А для чего? Для создания триала? Сильно устаревший способ защиты, имхо.
Юрий Зотов (2011-08-15 17:54:00) [2]http://forum.xakep.ru/m_1312971/tm.htm
Юрий Зотов (2011-08-15 16:50:00) [3]Может быть, есть смысл копнуть в сторону породившего процесса?
Юрий Зотов (2011-08-15 16:46:00) [4]
> Gu (13.08.11 06:04) [4]
А если запущено под другим дебаггером?
Gu (2011-08-13 06:04:00) [5]ага, сделал через IsDebuggerPresent kernel32.dll
Gu (2011-08-13 05:37:00) [6]черт, не то.
Result:=DebugHook<>0;
не отрабатывает перед application.run;
еще идеи есть?
Gu (2011-08-13 05:25:00) [7]угу, ответ нашел тут http://www.sql.ru/forum/actualthread.aspx?tid=189434
Gu (2011-08-13 05:18:00) [8]для первых версий ltkmab нашел это, но это не фурычит в delphi Xe (вообще это только для 1й версии вроде)
function InIDE: Boolean;
begin
Result := Bool(PrefixSeg) and
Bool(PWordArray(MemL[DSeg:36])^[8]));
end; { InIDE }
или как это под xe переделать?