webForumDet fria alternativet

Stänga av datorn

.NET

13 svar · 408 visningar · startad av Php

Medlem sedan sep. 2001224 inlägg
Frågan#1

Hej, jag undrar om man kan göra ett program i visual basic som stänger av datorn när man öppnar den. I windows 98 kunde jag använda mig av exitwin, men det fungerar inte i xp.

Medlem sedan juni 20022 599 inlägg
#2

Krånglig API-mässig variant:
http://www.experts-exchange.com/Programming/Programming_Languages/Visual_Basic/Q_10603261.html

Smidig Script-mässig:

dim OpSysSet as Object
Set OpSysSet = GetObject("winmgmts:{(Shutdown)}//./root/cimv2").ExecQuery _
("select * from Win32_OperatingSystem where Primary=true") 
for each OpSys in OpSysSet 
     OpSys.ShutDown
next
Medlem sedan sep. 2001224 inlägg
#3

Tack!

Medlem sedan sep. 2001224 inlägg
#4

Hej, jag har en fråga till. Jag håller på med ett program och undrar nu om man kan ha en knapp i programet som man kan trycka på för att programet ska lägga sig i datorns autostart? Gärna en knapp som tar bort den från autostarten också.

Medlem sedan juni 20022 599 inlägg
#5

Nu hamnar den inte i "autostartmappen" utan i registrets autostart, men det funkar lika bra:

Lägg till i autostart:

savestring HKEY_CURRENT_USER, "SOFTWARE\Microsoft\Windows\CurrentVersion\Run", _
"Whatever", Chr(34) & App.Path & "\" & App.EXEName & ".exe" & Chr(34)

Ta bort från autostart:

DeleteValue HKEY_CURRENT_USER, "SOFTWARE\Microsoft\Windows\CurrentVersion\Run", _
"Whatever"

Lägg sen denna kod i en bas-fil:

Public Const HKEY_CURRENT_USER = &H80000001

Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" _
(ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" _
(ByVal hKey As Long, ByVal lpValueName As String) As Long
Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" _
(ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" _
(ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, _
ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long

Public Sub savestring(hKey As Long, strPath As String, strValue As String, _
strdata As String)
    Dim keyhand As Long
    Dim r As Long
    r = RegCreateKey(hKey, strPath, keyhand)
    r = RegSetValueEx(keyhand, strValue, 0, REG_SZ, ByVal strdata, Len(strdata))
    r = RegCloseKey(keyhand)
End Sub

Public Function DeleteValue(ByVal hKey As Long, ByVal strPath As String, _
ByVal strValue As String)
    Dim keyhand As Long
    r = RegOpenKey(hKey, strPath, keyhand)
    r = RegDeleteValue(keyhand, strValue)
    r = RegCloseKey(keyhand)
End Function
Medlem sedan sep. 2001224 inlägg
#6

Hej, jag får inte det att fungera precis. Jag får felmedelande på:
Public Const HKEY_CURRENT_USER = &H80000001
Jag tror att jag lagt koden på fel ställe. Vilken bas fil menar du att jag ska lägga in den i?

Medlem sedan juni 20022 599 inlägg
#7

Vilken bas fil menar du att jag ska lägga in den i?

I vilken som helst. Enklast är väl att skapa en ny (Project->Add module) och klistra in koden i den.

Medlem sedan sep. 2001224 inlägg
#8

Förlåt, det var jag som hade gjort fel. Tack ännu en gång.

Medlem sedan sep. 2001224 inlägg
#9

Hej, nu har jag upptäckt ett annat fel. Det är så att den lägger sig i autostarten men programet startar inte.

Medlem sedan juni 20022 599 inlägg
#10

Om den ligger i rätt registernyckel så ska den starta (vid omboot). Det är Windows uppgift och har inget med VB att göra. Vad står det exakt i nyckeln?

Medlem sedan sep. 2001224 inlägg
#11

Hej!
Allt verkar stämma men den startar ändå inte.
Kan man inte göra så att programet kopierar sig själv till autostart mappen istället?

Medlem sedan juni 20022 599 inlägg
#12

Allt verkar stämma men den startar ändå inte.

Som sagt vad står det i nyckeln?

Kan man inte göra så att programet kopierar sig själv till autostart mappen istället?

Jo, det kan man säkert. Vet inte hur bara, på rak arm. Men om den inte startar via registernyckeln så förstår jag inte varför den skulle starta i "autostart". Det är nåt som är skumt ..

Medlem sedan sep. 2001224 inlägg
#13

Jag testade lägga den manuelt i autostart mappen och det fungera.
Jag får väl annars testa på en annan dator.

Medlem sedan okt. 20023 030 inlägg
#14

Kompillerade du koden innan du la till det i registret? :q

309 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
169 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
167 ms — ändringar (db)