Bericht 1 van 3NL Computer Forum ~ SQL & Programmeren Van | : | Peter | Datum | : | 21-04-2008 |
Aan | : | Allen | MsgID | : | 3834.1 |
Onderwerp | : | Verbonden gebruikers afmelden | Forum | : | 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 3NL Computer Forum ~ SQL & Programmeren Van | : | Michel Uphoff (Sysop) | Datum | : | 21-04-2008 | Aan | : | Peter | MsgID | : | 3834.2 | Onderwerp | : | Verbonden gebruikers afmelden | Forum | : | 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 3NL Computer Forum ~ SQL & Programmeren Van | : | Peter | Datum | : | 23-04-2008 |
Aan | : | Michel Uphoff (Sysop) | MsgID | : | 3834.3 |
Onderwerp | : | Verbonden gebruikers afmelden | Forum | : | 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