webForumDet fria alternativet

Två program startade samtidigt

7 svar · 430 visningar · startad av Baalzamon

BaalzamonMedlem sedan okt. 200088 inlägg
#1

Finns det någon som vet hur man fixar så att man endast kan starta en version av ett egetkompilerat program i VB åt gången. Alltså, om man har programmet öppet och försöker öppna det en gång till, så ska den säga ifrån att programmet redan är startat och avsluta det.

Tacksam för svar!

------------------

/Baalzamon

[Redigerat av Baalzamon den 21 jun 2001]

fredrikMedlem sedan dec. 19991 072 inlägg
#2

Du borde kunna använda API.t "FindWindowA", den leter iof efter en viss caption på ett fönster, fast det kanske funkar ändå.
<font size="1" face="Verdana, Arial, Helvetica, sans-serif">Kod:<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#666600">
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Dim lngWnd As Long
lngWnd = FindWindow(vbNullString, "caption namn")

Om lngWnd <> 0 så finns fönstret öppet.

------------------
Fredrik Klarqvist
fredrik.klarqvist@swipnet.se
http://server.webwerkstaden.se/fredde/

SweyMedlem sedan apr. 20003 971 inlägg
#3

Det finns bättre sätt. T.ex. detta:
"If you need to detect whether another instance already exists, create a uniquely named mutex using the CreateMutex function. CreateMutex will succeed even if the mutex already exists, but the GetLastError function will return ERROR_ALREADY_EXISTS. This indicates that another instance of your application exists, because it created the mutex first."

(Från MSDN, WinMain)

------------------
- Swey
A hacker from the south

fredrikMedlem sedan dec. 19991 072 inlägg
#4

Ja, du kan även använda en app-property:
<font size="1" face="Verdana, Arial, Helvetica, sans-serif">Kod:<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#666600">
App.PrevInstance

som returnerar true eller false beroende på om applikationen körs eller inte. Det är nog det lättaste egentligen...

------------------
Fredrik Klarqvist
fredrik.klarqvist@swipnet.se
http://server.webwerkstaden.se/fredde/

BaalzamonMedlem sedan okt. 200088 inlägg
#5

Tack så mycket! Ska testa detta så fort jag har tid!

------------------

/Baalzamon

BaalzamonMedlem sedan okt. 200088 inlägg
#6

Swey: "CreateMutex" funkar perfekt!
fredrik: "App.PrevInstance" funkar bara om man har programmet i samma katalog hela tiden, inte om man öppnar programmet och sen öppnar det igen från en annan plats.

Jaha, då har vi lärt oss någonting mer... :)

------------------

/Baalzamon

[Redigerat av Baalzamon den 25 jun 2001]

fredrikMedlem sedan dec. 19991 072 inlägg
#7

Hej, är bara lite nyfiken på hur din kod ser ut för att skapa denna "mutex", hur skapas den och vad är det för nåt eg.?

------------------
Fredrik Klarqvist
fredrik.klarqvist@swipnet.se
http://server.webwerkstaden.se/fredde/

BaalzamonMedlem sedan okt. 200088 inlägg
#8

Kolla in den här sidan:
http://www.vb-world.net/books/vb6api/sample9.html

Man får rensa i koden lite grann bara, för att få ut just det där med att redan ha startat ett program...

------------------

/Baalzamon

124 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
121 ms — hämta tråd, inlägg och bilagor (db)