hallo himitsu
An das break hatte ich zwar auch gedacht, aber ohne Erfolg.
Dein Ansatz ist natürlich sehr elegant, aber es ist zum verzweifeln, der erste wird gesetzt aber die anschliessenden werden ignoriert.
Es ist als ob die erste
mutex "überschrieben" wird. Wenn ich hingegen die
Mutex abfrage, dann hab ich wieder das ursprüngliche Problem.
Delphi-Quellcode:
For i := 0
to High(
mutex)
do Begin
// if openmutex(MUTEX_ALL_ACCESS, False, PChar(mutex[i])) = 0 then
mH := CreateMutex(
nil, True, Pchar(
mutex[i]));
If mH <> 0
Then Break;
End;
If mH = 0
Then Begin
MessageBox(0, PChar(MSG004),
nil, MB_OK
or MB_ICONEXCLAMATION);
Halt(0);
End;
wenn man testet
Delphi-Quellcode:
For i := 0
to High(
mutex)
do Begin
if openmutex(MUTEX_ALL_ACCESS, False, PChar(
mutex[i])) = 0
then showmessage((
mutex[i]) + '
null')
else showmessage((
mutex[i]) +'
not null') ;
End;
dann ist tatsächlich nur die erste in der Liste not null.
mirage228:
weisst Du zufällig ob dass mit den Semaphoren auch mit TerminalServer (und über sessions hinweg) auch klappt?