Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // 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.
Advertisement
Add Comment
Please, Sign In to add comment