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


Stänga ett program

Postades av 2012-04-13 23:32:17 - Larz Eidwall, i forum visual basic - allmänt, Tråden har 12 Kommentarer och lästs av 7367 personer

Jag har gjort ett program som ibland behöver uppdateras av användarna. Ett uppdateringsprogram hämtar då den nya versionen på en plats i servern och kopierar den nya exe-filen till datorn och skriver över den gamla filen.

Ibland förekommer det att en annan användare har programmet öppet på datorn men inte stängt det utan bara använt "Växla användare". Det betyder att programmet kan vara igång i ända upp till fyra gånger samtidigt på datorn.

När en användare ska uppdatera programmet kopieras inte exe-filen för att filen redan körs hos dom andra användarna som ej är utloggade. Då har jag lagt in att uppdateringsprogrammet först ska stänga alla öppna exe-filer som ska bytas ut. Jag använder koden:

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Const WM_CLOSE = &H10

Dim ghw As Long
ghw = FindWindow(vbNullString, "Kalkylatorn")
PostMessage ghw, WM_CLOSE, CLng(0), CLng(0)

Den här exemplet stänger ner Kalkylatorn. Men nu till problemet, det stänger bara ner ett program inte alla fyra som kan vara öppna. Vad gör jag.


Svara

Sv: Stänga ett program

Postades av 2012-04-15 23:19:44 - Sven Åke Persson

Jag bara spånar utan täckning.
Kan du inte köra koden ovan i en loop tills du får ett ERROR meddelande.

If ERROR vad det nu blir så hoppar du ur loopen.


Svara

Sv:Stänga ett program

Postades av 2012-04-16 09:02:08 - Sven Åke Persson

Något i den här stilen
<code>
Private Sub Command1_Click()
Dim ghw As Long
Do
ghw = FindWindow(vbNullString, "Kalkylatorn")
PostMessage ghw, WM_CLOSE, CLng(0), CLng(0)
DoEvents
On Error GoTo ErrorHandler
Exit Do
Loop
ErrorHandler:
MsgBox "Klar"
Resume Next
End Sub
</code>


Svara

Sv: Stänga ett program

Postades av 2012-04-18 16:25:01 - Larz Eidwall

Ditt exemplar stängde bara ett program tyvärr men idén med en loop verkar instressant. Ska kolla vidare med med det.


Svara

Sv:Stänga ett program

Postades av 2012-04-18 18:38:55 - Per-Olof Ohlsson

Ett sätt som ofta används för uppdatering är att byta namn på exe-filen som körs (det går nämligen, även om det inte går att skriva över den eller radera den) och sedan kopiera dit den nya versionen med rätt namn.
Nästa gång användarna startar blir det den nya versionen. Sedan kan ju den nya versionen leta efter gamla om den vet vad de kan tänkas heta och städa bort dem.


Svara

Sv: Stänga ett program

Postades av 2012-04-18 18:58:59 - Sven Åke Persson

<b>ghw = FindWindow(vbNullString, "Kalkylatorn")</b>

Kan det vara så att dom får namn Ex. "Kalkylatorn2" "Kalkylatorn3" osv.
Dvs har alla 4 samma/olika WindowName. ?
Spånar Sven


Svara

Sv:Stänga ett program

Postades av 2012-04-20 04:13:36 - Sven Åke Persson

Jag var tvungen att göra ett test.
Jag lade upp 4 instanser av ett Form1 projekt.

Lade din kod i en CommandClick.
<code>
Private Sub Command1_Click()
Dim ghw As Long
ghw = FindWindow(vbNullString, "Form1")
PostMessage ghw, WM_CLOSE, CLng(0), CLng(0)
End Sub
</code>

Trycker 1gg en försvinner ,trycker igen och nästa försvinner osv 4 ggr

Dvs om du kör Call Command1_Click 4 ggr så är det löst.
Vi måste förstås försöka ta reda på hur många instanser som är igång.
Och tex köra en For Next detta antal ggr med Call till Command_Click

I o fs så händer det inget tokigt om du kör 10ggr och det bara finns 3 instanser.
Ful lösning men "was tut man" som tysken säger


Svara

Sv: Stänga ett program

Postades av 2012-04-20 23:26:07 - Thomas Roman

Loopa igenom alla processer och kontrollera sökvägen till varje process. Går den till ditt program så stänger du ner den.

https://www.google.se/search?sourceid=chrome&ie=UTF-8&q=vb+find+process+path


Svara

Sv:Stänga ett program

Postades av 2012-04-21 09:28:56 - Sven Åke Persson

Den här koden stänger ner 4 instanser av Form1 på min skärm.
<code>
Option Explicit
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" _
(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, _
ByVal lParam As Long) As Long

Private Const WM_CLOSE = &H10
Private Sub Command1_Click()
Dim i As Long
For i = 0 To 5
Call KillInstans("Form1")
DoEvents
Next 'i
End Sub
Private Sub KillInstans(ByVal wName As String)
Dim ghw As Long
ghw = FindWindow(vbNullString, wName)
PostMessage ghw, WM_CLOSE, CLng(0), CLng(0)
DoEvents
End Sub
</code>


Svara

Sv: Stänga ett program

Postades av 2012-04-28 15:09:13 - Larz Eidwall

Nej jag får bara din kod att stänga ett program (Tog Kalkylatorn) i taget, man får alltså klicka flera gånger. Däremot fungerar det om man lägger koden i en Timer istället med en låg Interval så att det går snabbt men det är nog väldigt dålig kod. Sen måste man ju stanna timern efter ett tag på något sätt.


Svara

Sv:Stänga ett program

Postades av 2012-04-28 18:20:39 - Sven Åke Persson

mmm.... förstår ungefär.

Stänga processor mmmm.... Timer mmm...

Lycka till mina förslag har tagit slut.


Svara

Sv:Stänga ett program

Postades av 2012-04-29 00:14:57 - Thomas Roman

Jag är ganska säker på att mitt förslag fungerar, har för mig att jag själv gjorde så.
Har du testat?


Svara

Sv: Stänga ett program

Postades av 2012-06-25 19:32:53 - Larz Eidwall

Ja jag testade men fick inget att fungera mer än en gång. Löste det dock med en timer så stänger programet 10 ggr och det fungerade bra. Tack alla.


Svara

Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

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 569 153
27 952
271 704
843
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