Hallo

Welkom, Gast. Alsjeblieft inloggen of registreren.

Recent

496 gasten, 0 leden

Welkom, Gast. Alsjeblieft inloggen of registreren.

27 april 2024, 11:42:03

Login met gebruikersnaam, wachtwoord en sessielengte

Nieuws

Welkom op het vernieuwde NL Computer Forum!

Auteur Topic: Verbonden gebruikers afmelden  (gelezen 9048 keer)

0 leden en 1 gast bekijken dit topic.

Offline NLCOMP

  • Forumheld
  • *****
  • Berichten: 14.666
    • NL Computer Forum
Verbonden gebruikers afmelden
« Gepost op: 9 november 2009, 20:34:08 »
Bericht 1 van 3

NL Computer Forum ~ SQL & Programmeren
 Van:PeterDatum:21-04-2008
 Aan:AllenMsgID:3834.1
 Onderwerp:Verbonden gebruikers afmeldenForum:ws-nlcomputer
Hallo,

Met een Visual Basic programma wil ik de pc herstarten. Dat werkt prima, echter als een gebruiker via een netwerk verbonden is, verschijnt een dialoogvenster, zie bijlage.
Als je dan in dat dialoogvenster op JA klikt, herstart de pc netjes.
Is er een manier om dat software-matig te doen zodat het dialoogvenster niet verschijnt?


groeten, Peter

Bijlagen :

Delen.jpg
13KB


Bericht 2 van 3

NL Computer Forum ~ SQL & Programmeren
 Van:Michel Uphoff (Sysop)Datum:21-04-2008
 Aan:PeterMsgID:3834.2
 Onderwerp:Verbonden gebruikers afmeldenForum:ws-nlcomputer
Hoi Peter,
>> Is er een manier om dat software-matig te doen zodat het dialoogvenster niet verschijnt? <<
Je zou het bijbehorende proces kunnen termineren, maar dat is natuurlijk een uitermate onbetrouwbare oplossing. Allereerst moet je weten om welk proces het gaat, en ten tweede hoeft het niet altijd om hetzelfde proces te gaan, en dan werkt het niet.
Het beste is het een manier vinden om de pc af te sluiten zoals Windows dat zelf graag ziet. Dat zal in de regel het best gaan met de ExitWindowsEx api, met de WX_FORCE vlag. Zelf nooit gebruikt, maar iets als

Dim retval As Long
retval = ExitWindowsEx(EWX_SHUTDOWN Or EWX_FORCE, 0)
If retval = 0 Then Debug.Print "Afsluiten niet gelukt."
[/center]Zou moeten werken.  HIER is e.e.a. uitgebreider beschreven. Een veel uitgebreider voorbeeld vind je HIER Of je moet 'shellen' naar shutdown.exe (met de commandline parameters -f en -s):
x=shell("shutdown.exe -f -v",vbMinimizedNoFocus)
Nadeel is dat dit niet in alle Windows versies zal werken omdat ze niet allemaal voorzien zijn van shutdown.exe
Of je zou een iets andere shutdown kunnen gebruiken, zoals onder w98 (die dacht ik ook onder XP nog goed werkt) met rundll32.exe shell32.dll,SHExitWindowsEx x
X=
0 - LOGOFF
1 - SHUTDOWN
2 - REBOOT
4 - FORCE
8 - POWEROFF
Of je kan met een timertje en een sendkeys opdracht gewoon die knop in laten drukken. Ook dit is nogal tricky, want dat venstertje moet dan wél de focus hebben en houden.

[/size][/font]Michel Uphoff (NLcomputer)
Homepage



Bericht 3 van 3

NL Computer Forum ~ SQL & Programmeren
 Van:PeterDatum:23-04-2008
 Aan:Michel Uphoff (Sysop)MsgID:3834.3
 Onderwerp:Verbonden gebruikers afmeldenForum:ws-nlcomputer
Hoi Michel,

>>retval = ExitWindowsEx(EWX_SHUTDOWN Or EWX_FORCE, 0)<<
Ik had ook liever een andere mogelijkheid gebruikt dan de vlag EWX_FORCE.
Het werkt in ieder geval wel.
Testen met Windows XP en Vista  geven de melding mbt "...verbonden gebruikers..." niet.

Het is uiteindelijk dit geworden:

If WinVersion < 5 Then
   'Win98/ME
   'Zet Force vlag zodat eventuele netwerkgebruikers automatisch afgemeldt worden.
   Call ExitWindowsEx(EWX_REBOOT + EWX_FORCE, 0)
Else
   'WinXP/Vista/...
   'Zet Force vlag is niet nodig tov Win98
   Call ShellExecute(0, "open", "shutdown", " -r -t 5", "", SW_SHOWDEFAULT)
End If


Peter