Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Windows 7 Programm in Vordergrund (https://www.delphipraxis.net/166450-windows-7-programm-vordergrund.html)

Andidreas 14. Feb 2012 10:23

Windows 7 Programm in Vordergrund
 
aloha...

über die folgende routine habe ich unter xp einen 2. start eines programmes vermieden und das programm in den vordergrund gebracht:

Delphi-Quellcode:
program DPStart;

uses
  Forms,
  Windows,
  DPStart_main in 'DPStart_main.pas' {Main_Form};

{$R *.res}

var
FirstInstance : hWnd;

begin

  FirstInstance := FindWindow('TApplication', 'hier muss ich denn text reinschreiben'); // <-- die stelle hätte ich gern variabel!!!
  If FirstInstance <> 0 Then
  Begin
    If IsIconic(FirstInstance) Then ShowWindow(FirstInstance, SW_RESTORE)
  Else
    SetForeGroundWindow(FirstInstance);
    FlashWindow(FirstInstance, True);
  End Else
  Begin
    Application.Title := 'hier muss ich denn text reinschreiben';´// <-- und diese auch
    Application.CreateForm(TMain_Form, Main_Form);
    Application.Run;
  End;

end.
unter windows 7 funktioniert das jetzt nicht mehr...

weiß jemand was man in windows 7 anders machen muss?

himitsu 14. Feb 2012 10:33

AW: Windows 7 Programm in Vordergrund
 
Delphi-Quellcode:
  If FirstInstance <> 0 Then
  Begin

    Else

  End Else
  Begin

  End;
Das kann noch nie funktioniert haben. :roll:


Zitat:

Zitat von Andidreas (Beitrag 1150983)
<-- die stelle hätte ich gern variabel!!!

Dann mach es doch variabel?

Delphi-Quellcode:
program DPStart;

uses
  Forms,
  Windows,
  DPStart_main in 'DPStart_main.pas' {Main_Form};

{$R *.res}

var
FirstInstance : hWnd;

begin
  Application.Title := 'bfjdcnmx'; // was eigenes nehmen oder das so lassen, welches über die Projektoptionen eingestellt wurde

  FirstInstance := FindWindow(PChar(Application.ClassName), PChar(Application.Title)); // <-- den originalen Text nehmen
  If FirstInstance <> 0 Then
  Begin
    If IsIconic(FirstInstance) Then ShowWindow(FirstInstance, SW_RESTORE);
    SetForeGroundWindow(FirstInstance);
    FlashWindow(FirstInstance, True);
  End Else
  Begin
    //Application.Title := nicht ändern
    Application.CreateForm(TMain_Form, Main_Form);
    Application.Run;
  End;

end.

PS: Wenn MainFormOnTaskbar True ist, dann mußt du das Handle und die Texte der Mainform nutzen und nicht das von Application. :zwinker:


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:32 Uhr.

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