Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi TJvAppInstances Programmgesteuert weitere Instanzen zulassen (https://www.delphipraxis.net/208901-tjvappinstances-programmgesteuert-weitere-instanzen-zulassen.html)

Hobbycoder 27. Sep 2021 12:54

TJvAppInstances Programmgesteuert weitere Instanzen zulassen
 
Hi,

ich nutze in einem Programm der Einfachheithalber TJvAppInstances um eben nur eine Instanz pro Arbeitsplatz zuzulassen.
Funktioniert auch reibungslos.

Jetzt möchte ich gerne irgentwie während des Startens den KeyState z.B: der CTRL-Taste abfragen um für einen Sonderfall eben doch 2 oder mehr Instanzen zuzulassen.

Weiß jemand wie man das mit TJvAppInstances realisieren könnte?

Wenn's nicht geht, würde ich halt eben selber auf den Prozess prüfen und auf TJvAppInstances verzichten. Aber wenn es damit gehen würde, könnte ich mir die Arbeit ersparen.

TurboMagic 27. Sep 2021 21:21

AW: TJvAppInstances Programmgesteuert weitere Instanzen zulassen
 
Alternativ Mutex anlegen versuchen. Wenn das schon vorhanden gibt's einen Fehler und du weißt, dass das Programm schon gestartet ist

jbg 28. Sep 2021 16:26

AW: TJvAppInstances Programmgesteuert weitere Instanzen zulassen
 
TJvAppInstance bietet da direkt nichts an. Mit einem kleinen "Namenstrick" über der Formular/DataModule Deklaration kann man aber die Loaded Methode überschreiben und dort Active deaktivieren, wenn eine der Ctrl+Tasten gedrückt ist.

Delphi-Quellcode:
type
  TJvAppInstances = class(JvAppInst.TJvAppInstances) // same class name above the declaration to "trick" the compiler
  protected
    procedure Loaded; override;
  end;

  TFrmMain = class(TForm)
    JvAppInstances1: TJvAppInstances;
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  FrmMain: TFrmMain;

implementation

{$R *.dfm}

{ TJvAppInstances }

procedure TJvAppInstances.Loaded;
begin
  Active := Active and (GetKeyState(VK_CONTROL) and $80 = 0);
  inherited Loaded;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:43 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz