Bei empfangenem String Computer Herunterfahren
- Tafkadasom2k5
- Beiträge: 1578
- Registriert: 13.08.2005 14:31
- Kontaktdaten:
...nicht nur Copy-Paste, sondern verstehen:Joel hat geschrieben:Ah ok es klappt schonmal. Aber wo geb ich denn ein ob ich zb. Neustarten will oder Herunterfahren will?
Win 98:
Code: Alles auswählen
#EWX_FORCE=4
#EWX_LOGOFF=0
#EWX_REBOOT=2
#EWX_SHUTDOWN=1
Code: Alles auswählen
#EWX_LOGOFF = 0
#EWX_SHUTDOWN = 1
#EWX_REBOOT = 2
#EWX_FORCE = 4
#EWX_POWEROFF = 8

Gr33tz
Tafkadasom2k5
Edit:
Habe gerade gesehen, dass Falo nen eigenen "Endmode" in seinem Code benutzt, also musst du (zumindest wies vom Übefliegen her aussieht) eine "3" eingeben

Oder du nimmst einfach seine Funktionen und Strukturen, und setzt an den entsprechenden Stellen diese Konstanten ein...
Das nächste Mal werde ich erst genauer lesen, und dann 'meckern'

OpenNetworkConnection() hat geschrieben:Versucht eine Verbindung mit dem angegebenen Server aufzubauen. 'ServerName$' kann eine IP-Adresse oder ein voller Name sein (z.B.: "127.0.0.1" oder "ftp.home.net").
php-freak hat geschrieben:Ich hab die IP von google auch ned rausgefunden!
- Tafkadasom2k5
- Beiträge: 1578
- Registriert: 13.08.2005 14:31
- Kontaktdaten:
Du kopierst seinen Cource und gibst in die Funktion
ShutdownWIN()
einmal "0", einmal "1" und "2" ein.
Seine QuelltextKommentare sind doch eigentlich recht aussagekräftig.
Gr33tz
Tafkadasom2k5
ShutdownWIN()
einmal "0", einmal "1" und "2" ein.
Seine QuelltextKommentare sind doch eigentlich recht aussagekräftig.
Gr33tz
Tafkadasom2k5
OpenNetworkConnection() hat geschrieben:Versucht eine Verbindung mit dem angegebenen Server aufzubauen. 'ServerName$' kann eine IP-Adresse oder ein voller Name sein (z.B.: "127.0.0.1" oder "ftp.home.net").
php-freak hat geschrieben:Ich hab die IP von google auch ned rausgefunden!
Ich hab was im Archiv gefunden dass klappt (mit Privilegen
)

Code: Alles auswählen
#EWX_LOGOFF = 0
#EWX_SHUTDOWN = 1
#EWX_REBOOT = 2
#EWX_FORCE = 4
#EWX_POWEROFF = 8
#TOKEN_ADJUST_PRIVILEGES = 32
#TOKEN_QUERY = 8
#SE_PRIVILEGE_ENABLED = 2
#ANYSIZE_ARRAY = 1
#VER_PLATFORM_WIN32_NT = 2
#SE_SHUTDOWN_NAME = "SeShutdownPrivilege"
Structure MyLUID
LowPart.l
HighPart.l
Attributes.l
EndStructure
Structure MyTOKEN
PrivilegeCount.l
LowPart.l
HighPart.l
Attributes.l
EndStructure
Global hdlProcessHandle.l
Global hdlTokenHandle.l
Global tmpLuid.MyLUID
Global tkp.MyToken
Global tkpNewButIgnored.MyToken
Global lBufferNeeded.l
hdlProcessHandle = GetCurrentProcess_()
OpenProcessToken_(hdlProcessHandle, #TOKEN_ADJUST_PRIVILEGES | #TOKEN_QUERY, @hdlTokenHandle)
; Get the LUID for shutdown privilege
SysName.s = "" + Chr(0)
Name.s = "SeShutdownPrivilege" + Chr(0)
Erg.l = LookupPrivilegeValue_(SysName, Name, @tmpLuid)
tmpLuid\Attributes = #SE_PRIVILEGE_ENABLED
tkp\PrivilegeCount = 1
tkp\LowPart = tmpLuid\LowPart
tkp\HighPart = tmpLuid\HighPart
tkp\Attributes = tmpLuid\Attributes
; Enable the shutdown privilege in the access token of this process
Erg.l = AdjustTokenPrivileges_(hdlTokenHandle, 0, @tkp, SizeOf(MyTOKEN), @tkpNewButIgnored, @lblBufferNeeded)
Erg.l = ExitWindowsEx_((#EWX_LOGOFF), 0)
Zuletzt geändert von Joel am 16.08.2006 19:22, insgesamt 1-mal geändert.
----------------------------------------------------------
PB 5.20 Beta 10 | Windows 7
PB 5.20 Beta 10 | Windows 7
- Blackskyliner
- Beiträge: 532
- Registriert: 28.07.2005 00:54
- Wohnort: /home/Blackskyliner/
Gib doch mal deinen letzten Source vom Server, damit man auch mit aktuellen Sachen arbeiten kann und nicht suchen muss...
Achja und ein paar Stichworte: ReceiveNetworkData, PeekS
Achja und ein paar Stichworte: ReceiveNetworkData, PeekS
Keine meiner Antworten ist endgültig, es kann passieren, dass ich den so eben geposteten Beitrag noch mehrmals ändere, um Doppelposts zu umgehen.
_________________
Purebasic Windows 7 x64 & Linux (Ubuntu 10.04LTS) 4.50[x64|x86] Nutzer
_________________
Projekte: YAED - Yet another Event Dispatcher
_________________
Purebasic Windows 7 x64 & Linux (Ubuntu 10.04LTS) 4.50[x64|x86] Nutzer
_________________
Projekte: YAED - Yet another Event Dispatcher
Du brauchst glaube ich eher den Client, der soll ja die Daten empfangen und etwas bestimmtes ausführen und der Server schickt sie einfach nur.
Client:
Client:
Code: Alles auswählen
;
; ------------------------------------------------------------
;
; Mein kleiner Client
;
;
;
; ------------------------------------------------------------
;
Procedure Privilegien()
#EWX_LOGOFF = 0
#EWX_SHUTDOWN = 1
#EWX_REBOOT = 2
#EWX_FORCE = 4
#EWX_POWEROFF = 8
#TOKEN_ADJUST_PRIVILEGES = 32
#TOKEN_QUERY = 8
#SE_PRIVILEGE_ENABLED = 2
#ANYSIZE_ARRAY = 1
#VER_PLATFORM_WIN32_NT = 2
#SE_SHUTDOWN_NAME = "SeShutdownPrivilege"
Structure MyLUID
LowPart.l
HighPart.l
Attributes.l
EndStructure
Structure MyTOKEN
PrivilegeCount.l
LowPart.l
HighPart.l
Attributes.l
EndStructure
Global hdlProcessHandle.l
Global hdlTokenHandle.l
Global tmpLuid.MyLUID
Global tkp.MyToken
Global tkpNewButIgnored.MyToken
Global lBufferNeeded.l
hdlProcessHandle = GetCurrentProcess_()
OpenProcessToken_(hdlProcessHandle, #TOKEN_ADJUST_PRIVILEGES | #TOKEN_QUERY, @hdlTokenHandle)
; Get the LUID for shutdown privilege
SysName.s = "" + Chr(0)
Name.s = "SeShutdownPrivilege" + Chr(0)
Erg.l = LookupPrivilegeValue_(SysName, Name, @tmpLuid)
tmpLuid\Attributes = #SE_PRIVILEGE_ENABLED
tkp\PrivilegeCount = 1
tkp\LowPart = tmpLuid\LowPart
tkp\HighPart = tmpLuid\HighPart
tkp\Attributes = tmpLuid\Attributes
; Enable the shutdown privilege in the access token of this process
Erg.l = AdjustTokenPrivileges_(hdlTokenHandle, 0, @tkp, SizeOf(MyTOKEN), @tkpNewButIgnored, @lblBufferNeeded)
EndProcedure
Procedure Herunterfahren()
If ExitWindowsEx_((#EWX_POWEROFF), 8)
EndIf
EndProcedure
Procedure Neustart()
If ExitWindowsEx_((#EWX_REBOOT), 2)
EndIf
EndProcedure
Procedure Abmelden()
If ExitWindowsEx_((#EWX_LOGOFF), 0)
EndIf
EndProcedure
Procedure Force()
If ExitWindowsEx_((#EWX_FORCE), 4)
EndIf
EndProcedure
;-Vorbereiten der Netzwerk-Einstellungen
If InitNetwork() = 0
MessageRequester("Error", "Can't initialize the network !", 0)
End
EndIf
Port = 7000
;-Schleife zur Verbindungs-Herstellung
Repeat
ConnectionID = OpenNetworkConnection("joel2.dyndns.org", Port)
If ConnectionID
EndIf
Delay(10)
Until ConnectionID <> 0
;-Daten-empfang-Schleife
Repeat
ServerID = NetworkClientEvent(ConnectionID)
Select ServerID
Case 3
Privilegien()
Herunterfahren()
Case 4
End
EndSelect
Until Quit = 1
CloseNetworkConnection(ConnectionID)
End
Zuletzt geändert von Joel am 17.08.2006 15:42, insgesamt 1-mal geändert.
----------------------------------------------------------
PB 5.20 Beta 10 | Windows 7
PB 5.20 Beta 10 | Windows 7