Autor Beitrag
R4Y
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 41



BeitragVerfasst: Mo 06.10.08 08:49 
Hallo,

Ich habe im moment folgendes problem.
Wenn mein Programm startet wird, ein mutex erstellt und geprüft ob mein Programm schon läuft.
wenn ja, soll sich das "neue" Programm wieder schließen.
Das funktioniert wunderbar.

Nun hätte ich aber gerne das sich das andere Programm in den vordergrund setzt.

Leider klappt das nicht so wie ich es mir erhofft hatte.

Vielleicht liegt es daran, das ich die CoolTryIcon komponente benutze?

mein code:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
unit mutex;

interface

uses Windows,messages;

implementation

var
 mHandle:THandle;

initialization

 mHandle := CreateMutex(nil,true,'Client.exe'); //einen mutex erstellen

 if getlasterror = ERROR_ALREADY_EXISTS then //wenn fenster schon existiert
  begin
   SendMessage(mHandle,WM_SYSCOMMAND,0,SC_RESTORE);
   Halt; //programm sofort anhalten
  end;

 finalization
  if mHandle <> 0 then
   CloseHandle(mHandle);

end.


ich hoffe ihr könnt mir helfen.

Mit freundlichen Grüßen
Maurice

Moderiert von user profile iconNarses: Code- durch Delphi-Tags ersetzt
Moderiert von user profile iconNarses: Topic aus Sonstiges (Delphi) verschoben am Mo 06.10.2008 um 12:05
R4Y Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 41



BeitragVerfasst: Mo 06.10.08 10:28 
Okay ich habe mich mittlerweile von der CoolTrayIcon verabschiedet.
Ich benötige sie nicht wirklich.

Ich habe es mittlerweile geschafft das mein fenster sich auch öffnet.
Aber ... Ich kann es danach nicht wieder minimieren ^^

Wenn das jetzt noch klappt, bin ich zufrieden.

Hat jemand ne idee?

neuer code:
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
unit mutex;  

 
interface  

 
uses Windows,messages;  

 
implementation  

 
var  
 mHandle:THandle;  

 
initialization  

 
 mHandle := CreateMutex(nil,true,'Client.exe'); //einen mutex erstellen  

 
 if getlasterror = ERROR_ALREADY_EXISTS then //wenn fenster schon existiert  
  begin  
   SendMessage(findwindow(nil,'Chat'),WM_SYSCOMMAND,SC_RESTORE,0); //hier war der fehler .. SC_RESTORE und 0 waren vertauscht ...  und ich habe mhandle durch findwindow ersetzt. mhandle macht warum auch immer probleme ...
   Halt; //programm sofort anhalten  
  end;  

 
 finalization  
  if mHandle <> 0 then  
   CloseHandle(mHandle);  

 
end.


Moderiert von user profile iconNarses: Code- durch Delphi-Tags ersetzt
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mo 06.10.08 11:06 
Moin!

Schau mal hier, da sollte sich was für dich ableiten lassen. ;) Ach ja, das mit dem Halt; solltest du dringend lassen, einfach das Programm nicht in die MessageLoop laufen lassen, sondern normal beenden. :idea:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.