![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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]Найти окно :)