unit RegexBuddyRegexClientUnit; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, OleServer, RegexBuddy_TLB, StdCtrls, ExtCtrls; type TFormRegexDemo = class(TForm) MemoRegex: TMemo; RadioStringType: TRadioGroup; BtnInvoke: TButton; RegexBuddyConnection: TRegexBuddyIntf; procedure BtnInvokeClick(Sender: TObject); procedure RegexBuddyConnectionFinishRegex(ASender: TObject; const Regex: WideString; StringType: Cardinal); private Connected: Boolean; public end; var FormRegexDemo: TFormRegexDemo; implementation {$R *.dfm} procedure TFormRegexDemo.BtnInvokeClick(Sender: TObject); begin if not Connected then begin // Connect to RegexBuddy try RegexBuddyConnection.Connect; except on E: Exception do begin Application.MessageBox(PChar('Could not connect to RegexBuddy because of the following error:' + sLineBreak + E.Message + sLineBreak + sLineBreak + 'Make sure that RegexBuddy is installed on your computer, and has been run at least once.'), 'Invoke RegexBuddy', 0); Exit; end end; Connected := True; // Make sure our instance of RegexBuddy makes it clear to the user that we're connected to it RegexBuddyConnection.IndicateApp(Caption, Handle); end; RegexBuddyConnection.InitRegex(MemoRegex.Lines.Text, RadioStringType.ItemIndex); // Bring RegexBuddy to front // SetForegroundWindow only works when the calling thread has input focus // Since we have input focus when the user clicked our button, // it is our job to bring RegexBuddy to front. SetForegroundWindow(RegexBuddyConnection.GetWindowHandle()); end; procedure TFormRegexDemo.RegexBuddyConnectionFinishRegex(ASender: TObject; const Regex: WideString; StringType: Cardinal); begin MemoRegex.Lines.Text := Regex; RadioStringType.ItemIndex := StringType; end; end.