Toon posts:

[VB.Net] Afsluiten van Windows

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik zit met een probleem. Ik heb een programma gemaakt die zich op de achtergrond van de pc bezig houdt met een paar simpele functies. bv. Snelstarten van applicaties, een trendie klokje, koppelingen tussen standaard windows functies en mijn applicatie, en noem maar op.

Nu is mijn probleem dat het programma vastloopt als je windows afsluit zonder dat je eerst het programma afsluit. :(

Ik er dus achterkomen wanneer windows afgesloten zodat ik het programma automatisch kan laten afsluiten. Op de juiste manier.

Ik ben erachter gekomen dat dit met system.menagement kan, maar ik weet niet hoe. :?

Kan iemand mij helpen?

  • whoami
  • Registratie: December 2000
  • Laatst online: 22:54
Kan je geen Windows Service van die app maken?

https://fgheysels.github.io/


Verwijderd

is je afsluit code dan wel goed?? dus als de applicatie gesloten word??

  • The-Source
  • Registratie: Augustus 2001
  • Laatst online: 21-08 11:09
Is er geen application.close (zoals het in delphi heet volgens mij) waar in je jouw monitring functie van je app mooi kunt laten afsluiten?
Owja misschien handig om er zelf procedures/ functies van te maken want als je met hybernate gaat werken zul je er ook wel last van krijgen ;)

Taal fouten inbegrepen ;)


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 04:06

.oisyn

Moderator Devschuur®

Demotivational Speaker

In plaats van de symptomen aan te pakken kun je beter uitvinden waarom je applicatie crasht, zodat je dat kan verhelpen. Je applicatie loopt namelijk niet zomaar vast, puur omdat windows aan het afsluiten is.

En ja, windows stuurt messages naar alle apps die nog lopen als windows wordt afgesloten, dus dat moet geen probleem zijn

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Topicstarter
whoami schreef op 12 September 2003 @ 14:39:
Kan je geen Windows Service van die app maken?
Nee, het moet ook op oudere systemen (Windows 98) werken. ;)
Verwijderd schreef op 12 September 2003 @ 15:54:
is je afsluit code dan wel goed?? dus als de applicatie gesloten word??
Ja, als ik het programma gewoon afsluit werkt het wel goed. :)
klaasbram schreef op 12 September 2003 @ 16:02:
Is er geen application.close (zoals het in delphi heet volgens mij) waar in je jouw monitring functie van je app mooi kunt laten afsluiten?
Owja misschien handig om er zelf procedures/ functies van te maken want als je met hybernate gaat werken zul je er ook wel last van krijgen ;)
Dat is er. Die gebruikte ik namelijk al. ;)
.oisyn schreef op 12 September 2003 @ 17:04:
In plaats van de symptomen aan te pakken kun je beter uitvinden waarom je applicatie crasht, zodat je dat kan verhelpen. Je applicatie loopt namelijk niet zomaar vast, puur omdat windows aan het afsluiten is.

En ja, windows stuurt messages naar alle apps die nog lopen als windows wordt afgesloten, dus dat moet geen probleem zijn
Ik wil dus weten hoe ik die berichten kan afvangen. Ik krijg geen foutmelding, maar, de interne functies van de applicatie werken niet goed.

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 21-08 18:29
Filemaker heeft exact hetzelfde probleem. Dit gaat alleen maar fout als er nog cliënts zijn die bestanden op de server gebruiken. Dan verschijnt er een melding wie er nog bezig zijn. Enkele seconden later begint windows te vragen of je het programma wil beëindigen omdat het niet reageerd. Je zou dus eens kunnen kijken waar de app op het moment van afsluiten nog allemaal mee bezig is.

Verwijderd

Topicstarter
Dat is goed bedacht, maar dat is het probleem niet. De app blijft niet 'hangen' maar, vergeet de instellingen op te slaan. (De instellingen worden vrijwel continu veranderd, eerder opslaan kan dus niet ;) ) Als windows afgesloten word word het programma afgesloten zonder het programma via Dispose en/of Form_closing aan te roepen.
edit:
De instellingen worden in het Register opgeslagen

[ Voor 14% gewijzigd door Verwijderd op 13-09-2003 16:55 ]


  • The-Source
  • Registratie: Augustus 2001
  • Laatst online: 21-08 11:09
Verwijderd schreef op 13 September 2003 @ 15:49:
[...]
Ik wil dus weten hoe ik die berichten kan afvangen. Ik krijg geen foutmelding, maar, de interne functies van de applicatie werken niet goed.
Dus jij moet je soort van loop maken die iets elke mili sec controleert op errors?
Soort van on error resume next procedure ?
Of begrijp ik het nu verkeerd?
edit:
Misschien je instellingen porten naar een .ini file.
Want het register zou wel eens afgesloten kunnen worden voordat je app de tijd heeft om het weg te schrijven.

[ Voor 19% gewijzigd door The-Source op 13-09-2003 17:35 ]

Taal fouten inbegrepen ;)


  • LoekD
  • Registratie: Augustus 2000
  • Laatst online: 09-08 16:24
Je zou wat traces kunnen neerzetten in je (try/catch) code en de outputs naar een textfile of windows-eventlog kunnen schrijven.

loading...


  • whoami
  • Registratie: December 2000
  • Laatst online: 22:54
Verwijderd schreef op 13 September 2003 @ 16:53:
Als windows afgesloten word word het programma afgesloten zonder het programma via Dispose en/of Form_closing aan te roepen.
Dat kan ik toch moeilijk geloven.
Die closing event zal toch aangeroepen worden aangezien Windows een message zendt om het programma af te sluiten? :?

https://fgheysels.github.io/


Verwijderd

Topicstarter
Ja, het wordt wel aangeroepen, maar het programma wordt te snel gesloten voordat het iets gedaan heeft. Dus nu wil ik meer weten waardoor de applicatie gesloten wordt...
a. een gebruiker die op Alt+F4 drukt
b. windows die het programma afbreekt.
En in het laatste geval ruimt-ie dus niet netjes alle venster-tjes op. Zoals een gezellige kleine werkbalk die zich in een hoekje van het scherm verstopt.
klaasbram schreef op 13 September 2003 @ 17:29:
[...]

Dus jij moet je soort van loop maken die iets elke mili sec controleert op errors?
Soort van on error resume next procedure ?
Of begrijp ik het nu verkeerd?
edit:

Misschien je instellingen porten naar een .ini file.
Want het register zou wel eens afgesloten kunnen worden voordat je app de tijd heeft om het weg te schrijven.
Tja, als er niet meer programma's waren die dezelfde werkbalk gebruiken, zal dat een oplossing kunnen zijn.

Het énige wat ik wilde weten is hoe vang ik af dat Windows gaat afsluiten. Als ik dát weet, lukt de rest ook. :D

edit:
Deel a van m'n probleem is opgelost. Hij slaat de instellingen nu wel goed op.
Wat door een grote fout van mij komt. Omdat ik sinds het begin van dit topic niet in Visual Studio ben geweest heb ik niet ontdekt dat ik nog géén Form_closing had gebruikt. Ik gebruikte mnAfsluiten_click. |:( Maar, nu nog deel b van mijn probleem hoe kom ik te weten dat Windows afgesloten wordt?

[ Voor 18% gewijzigd door Verwijderd op 13-09-2003 21:40 ]


  • LoekD
  • Registratie: Augustus 2000
  • Laatst online: 09-08 16:24
Misschien zo:

"SystemEvents.SessionEnding"
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Private Shared WM_QUERYENDSESSION As Integer = &H11
Private Shared systemShutdown As Boolean = False
Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
    If m.Msg = WM_QUERYENDSESSION Then
        MessageBox.Show("queryendsession: this is a logoff, shutdown, or reboot")
        systemShutdown = True
    End If
    ' If this is WM_QUERYENDSESSION, the closing event should be fired in the base WndProc
    MyBase.WndProc(m)
End Sub 'WndProc 
Private Sub Form1_Closing(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing
    If (systemShutdown) Then
    ' reset the variable since they may cancel the shutdown
        systemShutdown = False
        If (DialogResult.Yes = _
                MessageBox.Show("My application", "Would you care to save your work before logging off?", MessageBoxButtons.YesNo)) Then
                e.Cancel = True
        Else
                e.Cancel = False
        End If
    End If
End Sub



[bron:]
http://msdn.microsoft.com...asssessionendingtopic.asp

loading...


  • The-Source
  • Registratie: Augustus 2001
  • Laatst online: 21-08 11:09
LoekD schreef op 14 September 2003 @ 15:43:
Misschien zo:

"SystemEvents.SessionEnding"
code:
1
knip



[bron:]
http://msdn.microsoft.com...asssessionendingtopic.asp
Misschien is deze MSDN link ook wel handig

Taal fouten inbegrepen ;)


Verwijderd

Topicstarter
Bedankt, ik ga dit zeker uitproberen ;), Ik post wel wanneer het gelukt is. Ook als het mislukt is.
Maar dat wordt niet eerder dan morgen ;) Ik kom er vandaag niet aan toe.

  • LoekD
  • Registratie: Augustus 2000
  • Laatst online: 09-08 16:24
ohja, misschien kun je je een hoop werk besparen:

.NET windows-apps doen het niet in windows 98.
Alleen in Windows 2000, Windows Server 2003, Windows XP en NT4

edit:

oeps... wel... 95 niet..

[ Voor 13% gewijzigd door LoekD op 15-09-2003 22:45 ]

loading...


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

LoekD schreef op 15 September 2003 @ 22:41:
ohja, misschien kun je je een hoop werk besparen:

.NET windows-apps doen het niet in windows 98.
Alleen in Windows 2000, Windows Server 2003, Windows XP en NT4
sdk installeert niet op win98; .net framework doet het afaik toch wel gewoon?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
Ja, het .Net framework kan je gewoon installeren. En mijn apps werken ook.
Verder wil ik vermelden dat het gelukt is. :D
Bedankt, nu kan ik eindelijk de nieuwe functie toevoegen.
Windows Afsluit Onderbreker! :D :D :D
Pagina: 1