"Chris" <dsl3353@vip.cybercity.dk> skrev i en meddelelse
news:3b12b394.432591@news.cybercity.dk...
> On Mon, 28 May 2001 21:31:29 +0200, "Bjarke Walling Petersen"
> <bwp@bwp.dk> wrote:
> >"Chris" <dsl3353@vip.cybercity.dk> skrev i en meddelelse
> >news:3b129aa2.40830476@news.cybercity.dk...
> >> On Mon, 28 May 2001 10:59:57 +0200, "Thomas K" <Turbo@usa.uk> wrote:
> >>
> >> >Hej
> >> >
> >> >Hvordan kontrollerer man om ens egen application allerede kører?? Jeg
> >ønsker
> >> >ikke at mit program bliver startet 2 eller flere gange.
> >>
> >> Du skal lave lidt API programmering.
> >> Søgehint: CreateMutex
> >> Søgested:
http://msdn.microsoft.com/library/default.asp
> >
> >Men behøves slet ikke API-programmering... det er faktisk så nemt som
sådan
> >her:
> >
> > If App.PrevInstance = True Then
> > MsgBox "Programmet er allerede startet!"
> > Unload Me
> > Exit Sub
> > End If
> >
> >... det skal bare skrives i starten af Form_Load()
> >
>
> Det selvfølgelig meget smart. Men det er endnu smartere, hvis din
> instance er åbnet og forsøgt åbnet en gang mere, at dit program så
> træder i forgrunden.
Jo, det er selvfølgelig rigtigt... og så bliver man også nød til at bruge
API... jeg plejer at bruge følgende kode, som gør at den allerede åbnede
applikation blinker et par gange:
' <MainKey> og <SubKey> skal skiftes ud med nogle værdier man selv finder
på.
' F.eks.:
' <MainKey> = Mit firma
' <SubKey> = Mit programnavn
Private Declare Function FlashWindow Lib "user32" (ByVal hWnd As Long, ByVal
bInvert As Long) As Long
Private Sub Form_Load()
If App.PrevInstance = True Then
Dim hWnd As Long
hWnd = Val(GetSetting("<MainKey>", "<SubKey>", "hWnd", "-1"))
MsgBox "Programmet er allerede startet!"
If hWnd <> -1 Then
blink hWnd
End If
Unload Me
Exit Sub
End If
SaveSetting "<MainKey>", "<SubKey>", "hWnd", CStr(Me.hWnd)
End Sub
Private Sub blink(hWnd As Long)
Dim tid As Single
Dim i As Integer
For i = 1 To 7
FlashWindow hWnd, 1
tid = Timer
While Timer - tid < 0.4
Wend
Next i
End Sub
> Det kan man lave "pænere" med API end med almindelig VB. Denne fikse
> ting er inkluderet i eksemplet fra vbAccelerator. Ellers kan man lege
> lidt med CreateMutex og SetForegroundWindow, som er API.
Jo...
Jeg har bare lille problem, men det er nok fordi jeg ikke har VB6.0 ... den
egentlige grund er at jeg mangeler filen SSubTmr.dll ... har du den?
- Bjarke Walling Petersen
> Hygge
> Chris