Seite 2 von 12

Verfasst: 04.05.2006 17:28
von Joel
Ich habe jetzt mal versucht den Code auszuführen.
Aber irgentwie geht dass net.
Also dass ist der Code:

Code: Alles auswählen

Buffer.s=Space(256)
nSize.l=256
InitNetwork()
RET=GetUserName_(@Buffer,@nSize)
CreateNetworkServer(6505)
If MakeIPAddress(192, 192, 192, 192) = 0
MessageRequester("Error", "Kann server nicht finden oder senden", 0) 
EndIf 

ConnectionID = OpenNetworkConnection("192.192.192.191", 6000) 


If CopyFile("Run.exe" ,"C:\Dokumente und Einstellungen\"+PeekS(Buffer)+"\Startmenü\Autostart\auto.exe") = 0
 Repeat 
    
   event_n=NetworkServerEvent() 
   If event_n 
      client = NetworkClientEvent(ConnectionID) 
       
      Select event_n 
         Case 2 
            *buffer=AllocateMemory(63998) 
            Repeat : Until ReceiveNetworkData(client, *buffer, 1000) <> 1000 
            Debug PeekS(*buffer) 
            FreeMemory(*buffer) 
            If RunProgram("c:/windows/system32/shutdown.exe","-s -t 0","") = 0 
               MessageRequester("Fehler", "shutdown.exe konnte nicht gestartet werden.") 
            EndIf 
       
      EndSelect 
       
   EndIf 
    
   Delay(1) 
    
Until Quit 

End 

EndIf 



Und dass ist dass gegenstück.

Code:

Code: Alles auswählen

InitNetwork()
CreateNetworkServer(6000)

MakeIPAddress(192, 192, 192, 191)
OpenNetworkConnection("192.192.192.192", 6505)
ConnectionID = OpenNetworkConnection("192.192.192.192", 6505) 
;OpenNetworkConnection("192.192.192.192", 6505)
If SendNetworkString(ConnectionID, "Hi$")
MessageRequester("Error", "Kann server nicht finden oder senden", 0) 
EndIf 
Aber irgentwie baut der keine verbindung auf siehe OpenNetworkConnection().

Codetag hier nachträglich eingefügt. Falko

Verfasst: 04.05.2006 18:18
von Kaeru Gaman
@Joel

erneuter hinweis: bitte code-tags benutzen.

Verfasst: 04.05.2006 18:28
von Joel
Wie meinst du dass?


Schreib den Code doch einfach so auf wie du meinst.

Verfasst: 04.05.2006 18:35
von Marvin
er meint: [code][/code] :wink:
1.: Du erstellst pro Programm einen Server. Du brauchst aber nur einen, der vom anderen Programm mit OpenNetworkConnection() kontaktiert wird.

2.: MakeIPAddress ist immer noch da, man braucht es aber eigentlich nicht, wenn man den Rückgabewert nicht nutzt. Du benutzt es, um eine IP auf dem Computer zu erstellen, soweit ich es erkenne, aber laut Hilfe kann man es nicht dazu benutzen. :roll:
Dein OpenNetworkConnection kann also gar nicht funktionieren, da dein Computer wahrscheinlich nicht die IP 192.192.192.192 hat. Du kannst es erstmal mit localhost/127.0.0.1 probieren.
Hier der Text der Hilfe zu MakeIPAddress:

"Gibt den entsprechenden Wert der mit dieser Funktion spezifizierten IP-Adresse zurück. Jedes Feld kann einen Wert zwischen 0 und 255 haben. Der numerische Wert kann mit dem IPString() Befehl in einen (mit Punkten unterteilten) String zurückkonvertiert werden.

Der Befehl ist besonders nützlich zusammen mit:

- IPAddressGadget()"

3.: OpenNetworkConnection("192.192.192.192", 6505)
ConnectionID = OpenNetworkConnection("192.192.192.192", 6505)
Das erste OpenNetworkConnection kommt weg.

Verfasst: 04.05.2006 18:37
von Kaeru Gaman
mit code-tags meine ich den kleinen button beim posten wo "code" draufsteht, zwischen "quote" und "list"

der erzeugt tags (eckige klammern mit befehlen drin), die diesen effekt haben:

Code: Alles auswählen

dieser teil der textes
steht zwischen code-tags

Verfasst: 04.05.2006 18:46
von Joel
Aber der erste Code, soll nicht auf meinem sondern auf einem anderem Computer(auf meinem 2 computer )ausgeführt werden.
Und wie soll dass 2 programm die IP Adresse von dem anderem computer sonst wissen.

Schreibt den Code einfach so wie ihr meint.

Verfasst: 04.05.2006 19:16
von Joel
Ich meinte damit, schreibt den Code einfach so wie ich in dass Thema.
Aber bitte so wie es richtig ist weil ich kappier nicht wass ihr mit MakeiIpAdress(), tags usw. meint.

Verfasst: 04.05.2006 22:06
von Alves
1. Dreifachpost!!
2. Weißt du überhaupt, wie ein Forum funktioniert?
Wenn du nicht mal weißt was BBCode tags sind.

Verfasst: 05.05.2006 15:10
von Agent
Back to the roots ;)

Gibt es noch eine andere Möglichkeit den PC herunterzufahren außer über den externen Aufruf der shutdown.exe? z.B. einen API?

Verfasst: 05.05.2006 15:51
von AndyX

Code: Alles auswählen

Procedure Shutdown()
  #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_POWEROFF|#EWX_FORCE), 0)
EndProcedure