Två program startade samtidigt

.NET

7 svar · 466 visningar · startad av Baalzamon

Medlem sedan okt. 200088 inlägg
Trådstart#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!

Medlem 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.

Medlem 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)

Medlem 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...

Medlem sedan okt. 200088 inlägg
#5

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

Medlem 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... :)

Medlem 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.?

Medlem 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...

273 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
146 ms — hämta tråd, inlägg och bilagor (db)
119 ms — ändringar (db)