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

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

IDE или нет?


stone ©   (2007-04-12 17:39:00) 

Как определить, что приложение запущено под IDE?


{RASkov}   (2007-04-13 15:09:00) [1]

> Если Delphi запущена, но программа запущена не из под нее, что будет?

Конкретно в моем примере:
procedure TForm.ButtonClick();
begin
if not IsRunDelphi then begin ShowMessage('Sorry...функия еще в разработке'); Exit; end;
.....
end;

Выполнится код обработчика ButtonClick без сообщения "Sorry...функия еще в разработке"
Не хочу рассказывать для чего я это использую, долгая история может получится....а объяснения не к чему здесь.
Автор вопроса пусть сам выбирает, что ему надо, а что нет. Он хотел простой вариант....разве не просто?


_Аноним   (2007-04-13 14:34:00) [2]


> DrPass ©  


> Дык, запущено из IDE и запущено из-под отладчика - две большие
> разницы.



> Сразу оговорюсь. Задача не принципиальная, нужно в основном
> для удобства. Поэтому сложных операций не предлагать. Если
> нет быстрых способов, то и не надо.



> {RASkov}  


Если Delphi запущена, но программа запущена не из под нее, что будет?


IceBeerg   (2007-04-13 11:47:00) [3]

Да чего тут сложнонго
Function GetParentProcessID:DWORD;
//Uses TlHelp32!!!
var
ProcessEntry:TProcessEntry32;
Snapshot,CurrentProcessId:THandle;
Begin
Result:=0;
CurrentProcessId:=GetCurrentProcessId();
Snapshot:=CreateToolhelp32Snapshot(th32cs_snapprocess,0);
ProcessEntry.dwSize:=SizeOf(ProcessEntry);
If Process32First(Snapshot,ProcessEntry) then
 Repeat
  If ProcessEntry.th32ProcessID=CurrentProcessId Then
   Begin
    Result:=ProcessEntry.th32ParentProcessID;
    Exit;
   End;
 Until Not Process32Next(Snapshot,ProcessEntry);
End;

Посмотри структуру ProcessEntry-   ProcessEntry.szExeFileпеределай функцию...
Подойдет?


{RASkov}   (2007-04-13 08:19:00) [4]

function IsRunDelphi: Boolean;
begin
 Result:=(FindWindow('TAppBuilder', nil)>0);
end;
.................
procedure TForm.ButtonClick();
begin
if not IsRunDelphi then ShowMessage('Sorry...функия еще в разработке');
end;


DrPass   (2007-04-13 01:22:00) [5]


> function IsDebuggerPresent

Дык, запущено из IDE и запущено из-под отладчика - две большие разницы.


_Аноним   (2007-04-12 20:25:00) [6]

function IsDebuggerPresent : BOOL; stdcall; external 'KERNEL32.DLL' name 'IsDebuggerPresent';


stone   (2007-04-12 18:18:00) [7]

Меня интересует, запущено приложение из дельфи путем нажатия ф9 (ф8 и т.п.), или в обычном режиме, например из проводника?

Сразу оговорюсь. Задача не принципиальная, нужно в основном для удобства. Поэтому сложных операций не предлагать. Если нет быстрых способов, то и не надо.


_Аноним   (2007-04-12 18:12:00) [8]

Тебя интересует наличие именно IDE, или любой отладчик?


Сергей М.   (2007-04-12 18:09:00) [9]


> особая директива компилятора


Компилятор-то тут причем ?)

Компилятор уже сделал свое дело - создал образ того самого твоего приложения.

"Мавр сделал свое дело" (С)

)


stone   (2007-04-12 17:56:00) [10]

хмм, ну это понятно
я думал может при этом существует какая-то особая директива компилятора или что-то вроде того


Сергей М.   (2007-04-12 17:47:00) [11]

В этом случае род.процессом является IDE-процесс ?)


Johnmen   (2007-04-12 17:42:00) [12]

Найти окно :)


Наверх

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