Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Förhindra dubbelkörning av exe.fil i Shell ??

Postades av 2005-10-05 12:05:20 - Kenneth Jonsson, i forum visual basic - allmänt, Tråden har 12 Kommentarer och lästs av 851 personer

Hej.
Öppnar en separat exe. fil till mitt program. Vill hindra att man öppnar programmet Skapa lista.EXE fler en 1 ggr. Som det nu är öppnas hur många som helst ????
Har kollat på Pellesoft men hittar inget motsvarande.

Plus att går det att förhindra via en Msgbox eller ngt att (Skapa lista.EXE) tvingas att avslutas innan man fortsätter i det ordinarie programmet.

Tillägg: (Skapa lista.EXE) är satt till vara över alla forms innan den kompillerats till exe.fil.
påverkar det negativt på ngt sätt??

Bra lösningar ??


(Inga problem att avsluta programmet Skapa lista.EXE.)

Private ProcessID As Long
Private Const SYNCHRONIZE = &H100000
Private Const PROCESS_TERMINATE As Long = &H1

Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long

Private Sub Skapalista_Click()
ProcessID = Shell("D:\Skapa lista.EXE", vbNormalFocus)
End Sub

Private Sub Avsluta_Click()
Unload Me
Unload Resultat1
Unload Hjälpen2
Dim hProcess As Long
If ProcessID Then
hProcess = OpenProcess(SYNCHRONIZE Or PROCESS_TERMINATE, 0&, ProcessID)
If hProcess Then
TerminateProcess hProcess, 0&
CloseHandle hProcess
ProcessID = 0
End If
End If
Välkommen.Show
End Sub

Har testat den version som finns på Pellesoft där
man stänger ner vid dubbelkörning och där en form av Msgbox dyker upp med information.
Den funkar såtillvida att "dubletten av exe.filen försvinner, men där jag ändå har en dublett när jag stänger ner det ordinarie programmet ???


Mvh Kenneth


Svara

Sv: Förhindra dubbelkörning av exe.fil i Shell ??

Postades av 2005-10-05 22:30:07 - Kenneth Axi

Använd dig av App.PrevInstance. Kolla i msdn-hjälpen för detta!


Svara

Sv:Förhindra dubbelkörning av exe.fil i Shell ??

Postades av 2005-10-06 08:33:24 - Kenneth Jonsson

Hej min namne:


Tyvärr som jag beskrev (ej utryckligt) har jag använt mig av denna funktion via Helpen MSDN.
Det funkar visuellt till en början, men antagligen inte (eftersom) att jag lagt den externa exe.filen som över alla andra forms i det ordinarie exe.filen. Klurigt tycker jag????

Jag har så att säga fortfarande 1 extern exe.fil fast jag stängt ner exekveringen av Informationsfilen att programmet redan körs.


Ja ????


Mvh
Kenneth till Kenneth


Svara

Sv: Förhindra dubbelkörning av exe.fil i Shell ??

Postades av 2005-10-06 17:37:53 - Kenneth Axi

Hmm... Förstår inte riktigt vad du menar och varför det inte fungerar... men har det löst sig eller?


Svara

Sv: Förhindra dubbelkörning av exe.fil i Shell ??

Postades av 2005-10-07 10:22:53 - Kenneth Jonsson

Hej Kenneth

'Kod i ordinarie exe plus extra exe



Private ProcessID As Long
Private Const SYNCHRONIZE = &H100000
Private Const PROCESS_TERMINATE As Long = &H1

Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long


Private Sub Skapalista_Click()
ProcessID = Shell("C:\Skapa lista.EXE", vbNormalFocus)
End Sub

Private Sub Avsluta_Click()
Unload Me
Unload Resultat1
Unload Hjälpen2
Dim hProcess As Long
If ProcessID Then
hProcess = OpenProcess(SYNCHRONIZE Or PROCESS_TERMINATE, 0&, ProcessID)
If hProcess Then
TerminateProcess hProcess, 0&
CloseHandle hProcess
ProcessID = 0
End If
End If
Välkommen.Show
End Sub


I den externa exe.filen (Skapalista)

Option Explicit

Private Declare Function GetSystemMenu Lib "User32" _
(ByVal hWnd As Long, _


ByVal bRevert As Long) As Long
Private Declare Function GetMenuItemCount Lib "User32" _
(ByVal hMenu As Long) _
As Long
Private Declare Function RemoveMenu Lib "User32" _
(ByVal hMenu As Long, ByVal _
nPosition As Long, ByVal wFlags As Long) As Long
Private Declare Function DrawMenuBar Lib "User32" _
(ByVal hWnd As Long) As Long
Private Const MF_BYPOSITION = &H400&
Private Const MF_REMOVE = &H1000&
Dim Använd As Variant


Private Sub Form_Load()
SetWindowPos Me.hWnd, HWND_TOPMOST, Me.Left / 15, Me.Top / 15, Me.Width / 15, Me.Height / 15, SWP_NOACTIVATE Or SWP_SHOWWINDOW
If App.PrevInstance = True Then
MsgBox "Programmet körs redan.", vbInformation, "Information"
Unload Me
Next
End If
'Om nedre baren är aktiverad kommer
'den att ligga över
Me.WindowState = vbMaximized
End Sub


Module
Declare Sub SetWindowPos Lib "User32" (ByVal hWnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long)
Public Const HWND_TOPMOST = -1
Public Const HWND_NOTOPMOST = -2
Public Const SWP_NOACTIVATE = &H10
Public Const SWP_SHOWWINDOW = &H40


'När jag öppnar Skapa lista först 1 gång (inga problem). Sedan öppnar jag den en gång till...
MsgBox "Programmet körs redan.", vbInformation, "Information"
'Allt OK så långt när jag klickar på OK försvinner en av Skapa lista....
'När jag sedan vill avsluta i ordinarie programmet ska den Skapa lista som finns kvar försvinna, vilket den inte gör.
' Har jag endast öppnat en Skapa lista försvinner den när jag vill avsluta fönstret i ordinarie programmet enl. kod
Private Sub Avsluta_Click()
Unload Me
Unload Resultat1
Unload Hjälpen2
Dim hProcess As Long
If ProcessID Then
hProcess = OpenProcess(SYNCHRONIZE Or PROCESS_TERMINATE, 0&, ProcessID)
If hProcess Then
TerminateProcess hProcess, 0&
CloseHandle hProcess
ProcessID = 0
End If
End If
Välkommen.Show
End Sub


Ja vad är fel eller ???

Mvh
Kenneth


Svara

Sv:Förhindra dubbelkörning av exe.fil i Shell ??

Postades av 2005-10-07 10:51:58 - Mikael Wedham

Du kanske skall köra din Unload me sist i proceduren?
Annars slutar väl programmet att köra innan den terminerat processen?

Alltså: Unload Me efter Välkommen.Show

/micke


Svara

Sv: Förhindra dubbelkörning av exe.fil i Shell ??

Postades av 2005-10-07 12:47:02 - Kenneth Jonsson

Får ingen ordning, behöver testa en del varianter.

Kanske ditt exempel är rätt med modifieringar

Mvh
Kenneth


Svara

Sv: Förhindra dubbelkörning av exe.fil i Shell ??

Postades av 2005-10-07 15:36:20 - Thomas Roman

Jag har för mig att det är som Mikael säger.
Har man kod efter Unload Me så kommer nog fönstret att laddas upp igen.


Thomas


Svara

Sv:Förhindra dubbelkörning av exe.fil i Shell ??

Postades av 2005-10-08 15:41:28 - Kenneth Jonsson

Hej Thomas

Unload Me i det här fallet är ju att
en del av huvudprogrammets fönster
är "Öppet" men ska stängas ner inkl Skapa lista.EXE

Mvh
Kenneth


Svara

Sv: Förhindra dubbelkörning av exe.fil i Shell ??

Postades av 2005-10-08 16:21:35 - Thomas Roman

Jag har väldigt svårt att förstå vad det är du menar, men har du Unload Me så lägg den sist i koden.
Kan du förklara exakt vad det är du ska ha programmet till?


Thomas


Svara

Sv: Förhindra dubbelkörning av exe.fil i Shell ??

Postades av 2005-10-08 16:36:07 - Lars Persson

I filen lista .exe skall du under load lägga in följande Prog snutt.
Detta bör lösa ditt problem

If App.PrevInstance Then
MsgBox "Detta program är redan öppnat.", 64, "LPd Systemutveckling"
End
End If


Svara

Sv:Förhindra dubbelkörning av exe.fil i Shell ??

Postades av 2005-10-08 16:57:58 - Kenneth Jonsson

Hej

No, problems still going on. Ja jag vet inte.... På något sätt förstår inte programmet eller programeraren (jag) hur eller varför. (När det gäller unload forms kan man ju ange unload all forms etc), men på ngt sätt i det här fallet är det första öppnade alternativet av Skapa lista.Exe fortfarande kvar trots avslut med OK i MsgBox vilket i sig hindrar dubbelkörning.

Alltså vad jag menar:
I det läget är allt status que och man tror att man är tillbaka innan MsgBox öppnades om att dubbelkörning pågår.

När huvudprogrammet körs och man öppnar upp Skapa lista.EXE endast 1 ggr är allt OK och det stänger sedan ner jag går vidare i mitt ordinarie program.


Jag tror vi ger oss och jag bibehåller Me.WindowState = vbMaximized och Border Style satt till Sizeable i Skapa lista.EXE eftersom det då täcker hela skärmem utom nedre baren.


Tanken med hela det här var om jag Sizar ner programmets storlek ska jag inte öppna en gång till av misstag.
Egentligen var inte det här så "viktigt", men trots allt dynamiken hade varit roligare om det funkat.

Tack i alla fall


Svara

Nyligen

  • 19:55 kick-off med fokus på hälsa?
  • 19:53 kick-off med fokus på hälsa?
  • 16:24 Föreslå en skönhetsklinik online
  • 16:23 Föreslå en skönhetsklinik online
  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper
  • 16:36 Allt du behöver veta om keramiskt
  • 16:14 Vem anlitar man egentligen när tak

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 722
27 958
271 751
374
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies