Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Запущена ли 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 переделать?


Наверх

Титульная страница Поиск, карта сайта Написать письмо