git-svn-id: https://192.168.0.254/svn/Componentes.Terceros.SDAC@3 6f543ec7-021b-7e4c-98c9-62eafc7fb9a8
277 lines
7.8 KiB
ObjectPascal
277 lines
7.8 KiB
ObjectPascal
|
|
//////////////////////////////////////////////////
|
|
// SQL Server Data Access Components
|
|
// Copyright © 2001-2007 Core Lab. All right reserved.
|
|
// SDAC IDE Menu
|
|
//////////////////////////////////////////////////
|
|
|
|
{$IFNDEF CLR}
|
|
|
|
{$I Sdac.inc}
|
|
|
|
unit MSMenu;
|
|
{$ENDIF}
|
|
interface
|
|
|
|
{$IFDEF VER7P}
|
|
{$WARN UNIT_DEPRECATED OFF}
|
|
{$ENDIF}
|
|
|
|
uses
|
|
DAMenu, Windows;
|
|
|
|
type
|
|
TMSMenu = class (TDAProductMenu)
|
|
private
|
|
FEmFile: string;
|
|
FQaFile: string;
|
|
FMsFile: string;
|
|
|
|
procedure EnterpriseManagerItemClick(Sender: TDAMenuClickSender{$IFDEF CLR}; E: EventArgs{$ENDIF});
|
|
procedure QueryAnalyzerItemItemClick(Sender: TDAMenuClickSender{$IFDEF CLR}; E: EventArgs{$ENDIF});
|
|
procedure ManagementStudioItemItemClick(Sender: TDAMenuClickSender{$IFDEF CLR}; E: EventArgs{$ENDIF});
|
|
|
|
procedure HomePageItemClick(Sender: TDAMenuClickSender{$IFDEF CLR}; E: EventArgs{$ENDIF});
|
|
procedure SdacPageItemClick(Sender: TDAMenuClickSender{$IFDEF CLR}; E: EventArgs{$ENDIF});
|
|
procedure AboutItemClick(Sender: TDAMenuClickSender{$IFDEF CLR}; E: EventArgs{$ENDIF});
|
|
procedure DBMonitorItemClick(Sender: TDAMenuClickSender{$IFDEF CLR}; E: EventArgs{$ENDIF});
|
|
procedure DBMonitorPageItemClick(Sender: TDAMenuClickSender{$IFDEF CLR}; E: EventArgs{$ENDIF});
|
|
public
|
|
constructor Create;
|
|
|
|
function AddItems(Instance: HINST): boolean; override;
|
|
end;
|
|
|
|
var
|
|
Menu: TMSMenu;
|
|
|
|
implementation
|
|
|
|
uses
|
|
{$IFDEF CLR}
|
|
MemUtils, WinUtils,
|
|
{$ELSE}
|
|
ToolIntf, CLRClasses,
|
|
{$ENDIF}
|
|
Classes, Registry, MSDesign,
|
|
SysUtils, Forms, ShellApi, SdacAbout, DBMonitorIntf, DBMonitorClient,
|
|
HelpUtils;
|
|
|
|
resourcestring
|
|
sCRMenuName = 'SDACMenu';
|
|
sSDACMenu = 'S&QL Server';
|
|
|
|
sEmItemCaption = 'Enterprise Manager';
|
|
sEmItemName = 'SDACEmItem';
|
|
sQaItemCaption = 'Query Analyzer';
|
|
sQaItemName = 'SDACQaItem';
|
|
SMsItemCaption = 'Management Studio';
|
|
sMsItemName = 'SDACMsItem';
|
|
sHelpItemCaption = 'SDAC Help';
|
|
sHelpItemName = 'SDACHelpItem';
|
|
sAboutItemCaption = 'About SDAC...';
|
|
{$IFDEF CLR}
|
|
sAboutItemName = 'CRMSAboutItemCLR';
|
|
{$ELSE}
|
|
sAboutItemName = 'CRMSAboutItemWin32';
|
|
{$ENDIF}
|
|
//sMSDesSeparator = 'MSDesSeparator';
|
|
sHomePageCaption = 'Core Lab Home Page';
|
|
sHomePageName = 'CRSDACHomePageItem';
|
|
sFAQCaption = 'SDAC FAQ';
|
|
sFAQName = 'CRSDACFAQItem';
|
|
sSdacPageCaption = 'SDAC Home Page';
|
|
sSdacPageName = 'CRSDACPageItem';
|
|
sDBMonitorItemCaption = 'DBMonitor';
|
|
sDBMonitorItemName = 'SDACDBMonitorItem';
|
|
//sMigWizardItemCaption = 'BDE/ADO Migration Wizard...';
|
|
sDBMonitorPageCaption = 'Download DBMonitor';
|
|
sDBMonitorPageName = 'SDACDBMonitorPageItem';
|
|
|
|
{ TMSMenu }
|
|
|
|
constructor TMSMenu.Create;
|
|
begin
|
|
inherited Create (sCRMenuName, sAboutItemCaption, sAboutItemName, sSDACMenu);
|
|
FAboutClickEvent := AboutItemClick;
|
|
end;
|
|
|
|
function TMSMenu.AddItems(Instance: HINST): boolean;
|
|
function IsEmAvaible: boolean;
|
|
type
|
|
TRegKeyString = record
|
|
Root: HKEY;
|
|
Path, KeyName: string;
|
|
end;
|
|
const
|
|
KeyPaths: array [0..3] of TRegKeyString =
|
|
((Root: HKEY_CLASSES_ROOT; Path: 'TypeLib\{10010001-E260-11CF-AE68-00AA004A34D5}\8.0\HELPDIR'; KeyName: ''),
|
|
(Root: HKEY_LOCAL_MACHINE; Path: 'SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\sqlservr.exe'; KeyName: 'Path'),
|
|
(Root: HKEY_CLASSES_ROOT; Path: 'TypeLib\{10010001-EB1C-11CF-AE6E-00AA004A34D5}\2.0\HELPDIR'; KeyName: ''),
|
|
(Root: HKEY_CLASSES_ROOT; Path: 'TypeLib\{10010200-740B-11D0-AE7B-00AA004A34D5}\2.0\HELPDIR'; KeyName: ''));
|
|
var
|
|
Reg: TRegistry;
|
|
i: integer;
|
|
begin
|
|
Result := False;
|
|
FEmFile := '';
|
|
Reg := TRegistry.Create{$IFDEF VER5P}(KEY_READ){$ENDIF};
|
|
try
|
|
for i := Low(KeyPaths) to High(KeyPaths) do begin
|
|
Reg.RootKey := KeyPaths[i].Root;
|
|
if Reg.OpenKeyReadOnly(KeyPaths[i].Path) then begin
|
|
FEmFile := Reg.ReadString(KeyPaths[i].KeyName);
|
|
Reg.CloseKey;
|
|
if FEmFile <> '' then begin
|
|
FEmFile := FEmFile + '\SQL Server Enterprise Manager.MSC';
|
|
Result := FileExists(FEmFile);
|
|
Break;
|
|
end;
|
|
end;
|
|
end;
|
|
finally
|
|
Reg.Free;
|
|
end;
|
|
end;
|
|
|
|
function IsQaAvaible: boolean;
|
|
var
|
|
p: IntPtr;
|
|
begin
|
|
FQaFile := 'isqlw.exe';
|
|
{$IFDEF CLR}
|
|
Result := SearchPath(nil, FQaFile, nil, 0, nil, p) <> 0;
|
|
{$ELSE}
|
|
Result := SearchPath(nil, @FQaFile[1], nil, 0, nil, PAnsiChar(p)) <> 0;
|
|
{$ENDIF}
|
|
end;
|
|
|
|
function IsMsAvaible: boolean;
|
|
var
|
|
p: IntPtr;
|
|
begin
|
|
FMsFile := 'sqlwb.exe';
|
|
{$IFDEF CLR}
|
|
Result := SearchPath(nil, FMsFile, nil, 0, nil, p) <> 0;
|
|
{$ELSE}
|
|
Result := SearchPath(nil, @FMsFile[1], nil, 0, nil, PAnsiChar(p)) <> 0;
|
|
{$ENDIF}
|
|
end;
|
|
|
|
var
|
|
QaAvaible, EmAvaible, MsAvaible: boolean;
|
|
|
|
begin
|
|
Result := inherited AddItems(Instance);
|
|
if not Result then
|
|
Exit;
|
|
|
|
with FCRMenu.SubMenu do begin
|
|
EmAvaible := IsEmAvaible;
|
|
QaAvaible := IsQaAvaible;
|
|
MsAvaible := IsMsAvaible;
|
|
|
|
|
|
if EmAvaible or QaAvaible or MsAvaible then begin
|
|
if EmAvaible then
|
|
Add(sEmItemCaption, sEmItemName, EnterpriseManagerItemClick);
|
|
if QaAvaible then
|
|
Add(sQaItemCaption, sQaItemName, QueryAnalyzerItemItemClick);
|
|
if MsAvaible then
|
|
Add(SMsItemCaption, sMsItemName, ManagementStudioItemItemClick);
|
|
|
|
AddSeparator;
|
|
end;
|
|
|
|
if HasMonitor then begin
|
|
Add(sDBMonitorItemCaption, sDBMonitorItemName, DBMonitorItemClick);
|
|
end;
|
|
|
|
AddWizards;
|
|
AddSeparator;
|
|
|
|
AddHelp(sHelpItemCaption, sHelpItemName, 'Sdac');
|
|
AddFAQ(sFAQCaption, sFAQName, 'Sdac');
|
|
AddSeparator;
|
|
|
|
Add(sHomePageCaption, sHomePageName, HomePageItemClick);
|
|
Add(sSdacPageCaption, sSdacPageName, SdacPageItemClick);
|
|
Add(sDBMonitorPageCaption, sDBMonitorPageName, DBMonitorPageItemClick);
|
|
AddSeparator;
|
|
AddAbout;
|
|
end;
|
|
end;
|
|
|
|
procedure TMSMenu.DBMonitorItemClick(Sender: TDAMenuClickSender{$IFDEF CLR}; E: EventArgs{$ENDIF});
|
|
begin
|
|
ShellExecute(0, 'open', PChar(WhereMonitor), '', '', SW_SHOW);
|
|
end;
|
|
|
|
procedure TMSMenu.DBMonitorPageItemClick(Sender: TDAMenuClickSender{$IFDEF CLR}; E: EventArgs{$ENDIF});
|
|
begin
|
|
OpenUrl('http://www.crlab.com/dbmonitor/dbmon.exe');
|
|
end;
|
|
|
|
procedure TMSMenu.EnterpriseManagerItemClick(Sender: TDAMenuClickSender{$IFDEF CLR}; E: EventArgs{$ENDIF});
|
|
var
|
|
i: integer;
|
|
begin
|
|
{$IFDEF CLR}
|
|
i := ShellExecute(0, '', FEmFile, '', '', SW_SHOWNORMAL);
|
|
{$ELSE}
|
|
i := ShellExecute(0, nil, @FEmFile[1], nil, nil, SW_SHOWNORMAL);
|
|
{$ENDIF}
|
|
if i <= 32 then
|
|
TAPIMenuItem(Sender).Enabled := False;
|
|
end;
|
|
|
|
procedure TMSMenu.QueryAnalyzerItemItemClick(Sender: TDAMenuClickSender{$IFDEF CLR}; E: EventArgs{$ENDIF});
|
|
var
|
|
i: integer;
|
|
s: string;
|
|
begin
|
|
s := '-1';
|
|
{$IFDEF CLR}
|
|
i := ShellExecute(0, '', FQaFile, s, '', SW_SHOWNORMAL);
|
|
{$ELSE}
|
|
i := ShellExecute(0, nil, @FQaFile[1], @s[1], nil, SW_SHOWNORMAL);
|
|
{$ENDIF}
|
|
if i <= 32 then
|
|
TAPIMenuItem(Sender).Enabled := False;
|
|
end;
|
|
|
|
procedure TMSMenu.ManagementStudioItemItemClick(Sender: TDAMenuClickSender{$IFDEF CLR}; E: EventArgs{$ENDIF});
|
|
var
|
|
i: integer;
|
|
begin
|
|
{$IFDEF CLR}
|
|
i := ShellExecute(0, '', FMsFile, nil, '', SW_SHOWNORMAL);
|
|
{$ELSE}
|
|
i := ShellExecute(0, nil, @FMsFile[1], nil, nil, SW_SHOWNORMAL);
|
|
{$ENDIF}
|
|
if i <= 32 then
|
|
TAPIMenuItem(Sender).Enabled := False;
|
|
end;
|
|
|
|
procedure TMSMenu.HomePageItemClick(Sender: TDAMenuClickSender{$IFDEF CLR}; E: EventArgs{$ENDIF});
|
|
begin
|
|
OpenUrl('http://www.crlab.com');
|
|
end;
|
|
|
|
procedure TMSMenu.SdacPageItemClick(Sender: TDAMenuClickSender{$IFDEF CLR}; E: EventArgs{$ENDIF});
|
|
begin
|
|
OpenUrl('http://www.crlab.com/sdac');
|
|
end;
|
|
|
|
procedure TMSMenu.AboutItemClick(Sender: TDAMenuClickSender{$IFDEF CLR}; E: EventArgs{$ENDIF});
|
|
begin
|
|
ShowAbout;
|
|
end;
|
|
|
|
initialization
|
|
Menu := TMSMenu.Create;
|
|
finalization
|
|
Menu.Free;
|
|
end.
|
|
|