В секции implementation:
Const InIDE: Boolean := False; |
И в процедуре Register:
|
InIDE := True; |
Теперь, когда вам необходимо проверить "запущенность" компонент в среде Delphi, просто проверьте данный флаг. [000604]
function DelphiIsRunning : boolean;varH1, H2, H3, H4 : Hwnd;constA1 : array[0..12] of char = 'TApplication'#0;A2 : array[0..15] of char = 'TAlignPalette'#0;A3 : array[0..18] of char = 'TPropertyInspector'#0;A4 : array[0..11] of char = 'TAppBuilder'#0;T1 : array[0..6] of char = 'Delphi'#0;beginH1 := FindWindow(A1, T1);H2 := FindWindow(A2, nil);H3 := FindWindow(A3, nil);H4 := FindWindow(A4, nil);Result := (H1 <> 0) and (H2 <> 0) and (H3 <> 0) and (H4 <> 0);end; initializationif not DelphiIsRunning thenbeginAboutBox := TAboutBox.Create(nil);AboutBox.ShowModal;AboutBox.Free;Halt;end;end. |
Самая большая каверза, которую я обнаружил в данном методе, заключается в том, что когда вы запускаете программу с данным кодом, она работает из-под Delphi (что, в прочем, нам необходимо), но она будет работать и в том случае, когда программа запущена не из-под Delphi, а Delphi также загружена и работает параллельно. [000748]