Jump to content
Mr. E

Application containing ActiveX control hangs.

Recommended Posts

Greetings, I need your guidance.


I made an ActiveX control which I need to use in one big applications (ParnetMenu) for various containers, but it is somewhat elaborate to update.

 

So, to get out of trouble, I made an emergent application as a simple container for this ActiveX control.
On my development machine, the application closes correctly and disappears from the processes running on Windows 10 pro 64 bit (virtualized in virtualbox).

The problem occurs with end users (Windows 10 pro 64 bit), when closing the application it remains running in the windows processes and it is necessary to go and terminate the process manually.

 

In fact, my main application (ParnetMenu) where I will use this control, suffers the same problem but there we programmed a button that looks for the id of each container and closes the process, using the TDOSCommand component and performs a Taskkill to close the screens that use these ActiveX controls.

(Force closure)

image.png.9d465a90dc744fda1a47ea24ee8b0ffa.png

    exe := stringReplace(button.Caption, ' ', '_',
      [rfReplaceAll, rfIgnoreCase]);
    button.visible := false;
    PID := escribeVar(exe);
    PID := 'Taskkill /F /PID ' + PID;
    dos.CommandLine := PID;
    dos.Execute;

In this emergent application I have tried several things, attached actual and previous code:

  • First by clicking on "X" in the application I release the control and Terminates de application. It did not work.
  • Second. Then I removed the buttons and add a panel with a button to try another way.

 

Same result the application remains running in the background:

image.thumb.png.56fb47b4f753ab3508580c5d6cf668b8.png

 

The layout of the application:

2021-07-02_13-47-container.thumb.png.402e2a50467a8b14667651408f25f12b.png


This is the code for this emergent container:

unit MainForm;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs
  , SALMVCC_To_Cancel_AX_TLB, RzButton, Vcl.ExtCtrls, System.ImageList, Vcl.ImgList, Vcl.StdCtrls
  ;
  
type
  TMain = class(TForm)
    il1: TImageList;
    pnl1: TPanel;
    bb1: TRzBitBtn;
    lbl1: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure bb1Click(Sender: TObject);
  private
    { Private declarations }
    var
      CADISalidasCancelacionAutorizacion: TcoADI_SALMVCC_To_Cancel;
    procedure doLoadOCX;
  public
    { Public declarations }
  end;

var
  Main: TMain;

implementation

{$R *.dfm}

procedure TMain.bb1Click(Sender: TObject);
begin
  lbl1.Visible:= True;
  self.Refresh;
  Sleep(200); // to give time for the message to be displayed.
  CADISalidasCancelacionAutorizacion.Destroy;
  Sleep(500); // to give time for the message to be released?
  Application.Terminate();
  Sleep(2500); // Just to debug this problem
  System.Halt(0);
  //TerminateProcess; // don't know how to use yet
end;

procedure TMain.doLoadOCX;
begin
  CADISalidasCancelacionAutorizacion := TcoADI_SALMVCC_To_Cancel.Create(self);
  CADISalidasCancelacionAutorizacion.Parent:= self;
  CADISalidasCancelacionAutorizacion.Align:= alClient;
end;


{procedure TMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  CADISalidasCancelacionAutorizacion.Free;
  Application.Terminate;
end;}

procedure TMain.FormCreate(Sender: TObject);
begin
  doLoadOCX;
end;

end.

 

I had previously used this, but it didn't work either.

procedure TMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  CADISalidasCancelacionAutorizacion.Free;
  Application.Terminate;
end;

 

Note: My PC has no antivirus running (except Microsoft's), my users use Avast and there is already an exception for them not to send the application to the sanbox. I even tried disabling the antivirus on a computer and the problem persists.

 

Regards and thank you.

-------

Addendum:

The main goal is not only to solve this problem with the emergent application. But also to eliminate the use of TaskKill in my ParnetMenu application; and to eliminate the hang that occurs.

And of course, occasionally I will be able to create more definitive applications using the ActiveX container.

 

 

 

 

Edited by Mr. E
fix + addendum

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×