Simulando a execução do Delphi

02/03/2003

0

===============================================================================
Esta rotina simula o funcionamento do Delphi para teste de componente que testam
se a IDE está em execução.

Para usá-la, basta incluir seu nome na clausula Uses do projeto. Esta unit deve
ser a primeira da lista: Exemplo: Uses Dsim, Windows, Messages, Sysutils, etc...

Testada com sucesso no Delphi 5.0

Ela funciona para o seguinte tipo de teste:


function IsDelphiRunning : boolean;
begin
Result := (FindWindow(´TAppBuilder´,nil) > 0) and
(FindWindow(´Delphi 5´,nil) > 0) and
(FindWindow(´TPropertyInspector´,nil) > 0) and
(FindWindow(´TAlignPalette´,nil) > 0);
end;

================================================================================
}
unit DSim;

interface

implementation

uses Windows;

Var DelphiVer : String = ´5´;

const

ApplicationWindowClass :TWndClass = (
style :0;
lpfnWndProc :@DefWindowProc;
cbClsExtra :0;
cbWndExtra :0;
hInstance :0;
hIcon :0;
hCursor :0;
hbrBackground :0;
lpszMenuName :´´;
lpszClassName :´Tapplication´
);

AppBuilderWindowClass :TWndClass = (
style :0;
lpfnWndProc :@DefWindowProc;
cbClsExtra :0;
cbWndExtra :0;
hInstance :0;
hIcon :0;
hCursor :0;
hbrBackground :0;
lpszMenuName :´´;
lpszClassName :´Tappbuilder´
);

PropertyInspectorWindowClass :TWndClass = (
style :0;
lpfnWndProc :@DefWindowProc;
cbClsExtra :0;
cbWndExtra :0;
hInstance :0;
hIcon :0;
hCursor :0;
hbrBackground :0;
lpszMenuName :´´;
lpszClassName :´TPropertyInspector´
);

AlignPaletteWindowClass :TWndClass = (
style :0;
lpfnWndProc :@DefWindowProc;
cbClsExtra :0;
cbWndExtra :0;
hInstance :0;
hIcon :0;
hCursor :0;
hbrBackground :0;
lpszMenuName :´´;
lpszClassName :´TAlignPalette´
);

var AppBuilderHWND :HWND;
PropertyInspectorHWND :HWND;
AlignPaletteHWND :HWND;
ApplicationHWND :HWND;

initialization
Begin
{ TApplication }
if FindWindow(ApplicationWindowClass.lpszClassName,PChar(´DELPHI ´+DelphiVer)) = 0 then begin
RegisterClass(ApplicationWindowClass);
ApplicationHWND := CreateWindowEx(0, ApplicationWindowClass.lpszClassName,PChar(´DELPHI ´+DelphiVer),0,0,0,0,0,0,0,HInstance,NIL);
end;

{ TAppBuilder }
if FindWindow(AppBuilderWindowClass.lpszClassName,NIL) = 0 then begin
RegisterClass(AppBuilderWindowClass);
AppBuilderHWND := CreateWindowEx(0, AppBuilderWindowClass.lpszClassName,PChar(´DELPHI ´+DelphiVer+´ - APP [running]´),0,0,0,0,0,0,0,HInstance,NIL);
end;

{ TPropertyInspector }
if FindWindow(PropertyInspectorWindowClass.lpszClassName,NIL) = 0 then begin
RegisterClass(PropertyInspectorWindowClass);
PropertyInspectorHWND := CreateWindowEx(0,PropertyInspectorWindowClass.lpszClassName,PChar(´object inspector DELPHI ´+DelphiVer),0,0,0,0,0,0,0,HInstance, NIL);
end;

{ TAlignPalette }
if FindWindow(AlignPaletteWindowClass.lpszClassName,´Align´) = 0 then begin
RegisterClass(AlignPaletteWindowClass);
AlignPaletteHWND := CreateWindowEx(0,AlignPaletteWindowClass.lpszClassName,´ALIGN´,0,0,0,0,0,0,0,HInstance,NIL);
end;
End;

finalization
Begin
{ TApplication }
UnregisterClass(ApplicationWindowClass.lpszClassName, HInstance);
if ApplicationHWND <> 0 then DestroyWindow(ApplicationHWND);

{ TAppBuilder }
UnregisterClass(AppBuilderWindowClass.lpszClassName, HInstance);
if AppBuilderHWND <> 0 then DestroyWindow(AppBuilderHWND);

{ TPropertyInspector }
UnregisterClass(PropertyInspectorWindowClass.lpszClassName, HInstance);
if PropertyInspectorHWND <> 0 then DestroyWindow(PropertyInspectorHWND);

{ TAlignPalette }
UnregisterClass(AlignPaletteWindowClass.lpszClassName, HInstance);
if AlignPaletteHWND <> 0 then DestroyWindow(AlignPaletteHWND);
End;

end.


Carnette

Carnette

Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar