تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
Java JDK (system environment variable one-click setting tool) Delphi version source
#1
// Java JDK (system environment variable one-click setting tool) Delphi version source code is here

unit Unit2;
 
interface
 
uses
  Registry, Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
  System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs,
  Vcl.StdCtrls;
 
type
  TForm2 = class(TForm)
    btnSetEnv: TButton;
    btnVerify: TButton;
    edtJdkPath: TEdit;
    lblStatus: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure btnSetEnvClick(Sender: TObject);
    procedure btnVerifyClick(Sender: TObject);
  private
    function SetJavaEnvironment(const JdkPath: string): Boolean;
  public
    { Public declarations }
  end;
 
our
  Form2: TForm2;
 
implementation
 
{$R *.dfm}
 
// Core function: set Java environment variables
function TForm2.SetJavaEnvironment(const JdkPath: string): Boolean;
our
  Reg: TRegistry;
  PathValue: string;
begin
  Result := False;
  Reg := TRegistry.Create;
  try
    Reg.RootKey := HKEY_LOCAL_MACHINE;
 
    // 1. Set JAVA_HOME
    if Reg.OpenKey('SYSTEM\CurrentControlSet\Control\Session Manager\Environment', True) then
    begin
      Reg.WriteString('JAVA_HOME', JdkPath);
      Reg.CloseKey;
    end;
 
    // 2. Update PATH
    if Reg.OpenKey('SYSTEM\CurrentControlSet\Control\Session Manager\Environment', False) then
    begin
      PathValue := Reg.ReadString('Path');
      if Pos(JdkPath + 'bin', PathValue) = 0 then
      begin
        PathValue := JdkPath + 'bin;' + PathValue;
        Reg.WriteString('Path', PathValue);
      end;
      Reg.CloseKey;
    end;
 
    // Broadcast environment variable change notification
    SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, 0, LPARAM(PChar('Environment')), SMTO_ABORTIFHUNG, 5000, nil);
 
    Result := True;
  except
    on E: Exception do
      lblStatus.Caption := 'Error:' + E.Message;
  end;
  Reg.Free;
end;
 
 
 
// Set environment variables
procedure TForm2.btnSetEnvClick(Sender: TObject);
begin
  was JdkPath: string;
  begin
    JdkPath := IncludeTrailingPathDelimiter(edtJdkPath.Text);
 
    if not DirectoryExists(JdkPath) then
    begin
      lblStatus.Caption := 'Error: JDK path does not exist! ';
      Exit;
    end;
 
    if not FileExists(JdkPath + 'bin\java.exe') then
    begin
      lblStatus.Caption := 'Error: java.exe not found';
      Exit;
    end;
 
    if SetJavaEnvironment(JdkPath) then
      lblStatus.Caption := 'Success: Environment variables have been set. Please restart the command line tool to verify.'
    else
      lblStatus.Caption := 'Error: Setting failed! ';
  end;
end;
 
// Verify Java installation
procedure TForm2.btnVerifyClick(Sender: TObject);
begin
  //winexec(PAnsiChar(AnsiString('cmd.exe /c java -version')), sw_hide);
  WinExec('cmd.exe /k java -version', SW_SHOWNORMAL);
end;
 
procedure TForm2.FormCreate(Sender: TObject);
begin
  edtJdkPath.Text := 'X:\jdk-11';
end;
 
end.



https://pastebin.com/ECbjdvNz


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم