Seite 10 von 12

Verfasst: 28.07.2006 09:52
von Joel
Ah ok es klappt schonmal. Aber wo geb ich denn ein ob ich zb. Neustarten will oder Herunterfahren will?

Verfasst: 28.07.2006 10:37
von Tafkadasom2k5
Joel hat geschrieben:Ah ok es klappt schonmal. Aber wo geb ich denn ein ob ich zb. Neustarten will oder Herunterfahren will?
...nicht nur Copy-Paste, sondern verstehen:

Win 98:

Code: Alles auswählen

    #EWX_FORCE=4
    #EWX_LOGOFF=0
    #EWX_REBOOT=2
    #EWX_SHUTDOWN=1
WinXP:

Code: Alles auswählen

    #EWX_LOGOFF = 0
    #EWX_SHUTDOWN = 1
    #EWX_REBOOT = 2
    #EWX_FORCE = 4
    #EWX_POWEROFF = 8 
Versuch dir den Code doch mal zu Gemüte zu führen :allright:

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' :wink:

Verfasst: 16.08.2006 10:35
von Joel
Ich versteh nicht was du meinst, wo soll ich das eigenben?

Da gibt es so viele stellen wo man das eisetzen kann.

Verfasst: 16.08.2006 11:02
von Tafkadasom2k5
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

Verfasst: 16.08.2006 11:56
von Joel
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) 

Verfasst: 16.08.2006 19:27
von Joel
Edit: Ich möchte dass der Server einen Code nur dann ausführt wenn er den String: "test" gesendet bekommt. Wie finde ich heraus ob der "test" heißt?

Verfasst: 16.08.2006 20:23
von kiki
Ich hab nach den ersten Versuchen auch nichts hinbekommen /:-> aber vielleicht finden andere eine lösung, wie man das rausfindet.

Verfasst: 17.08.2006 00:58
von 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

Verfasst: 17.08.2006 15:38
von Joel
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:

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   

Verfasst: 17.08.2006 15:40
von Kiffi

ohje, der Bot schickt wieder Code...