PureConsole

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Heis Spiter
Messages : 1092
Inscription : mer. 28/janv./2004 16:22
Localisation : 76
Contact :

PureConsole

Message par Heis Spiter »

Voici le code source d'un projet de cosole d'interface windows de type de celle de Linux, je venais de commencer l'arborescense.

Code : Tout sélectionner

; fermer la session : ExitWindows_(0, 0)
; ExitWindowsEx_(
; UINT uFlags,
; DWORD dwReason
; );
; uFlags
; #EWX_LOGOFF : fermeture de session
; #EWX_POWEROFF : éteind le PC
; #EWX_REBOOT : Redémarre
; dwReason
; #SHTDN_REASON_MAJOR_APPLICATION
;
;hda = DD physique
;hdb = DD logique
;mnt = lecteurs
;***************************************************************************
;***************************************************************************
;- Variables
;***************************************************************************
;***************************************************************************
eaigu$ = Chr(130)
agrav$ = Chr(133)
ecirc$ = Chr(136)
egrav$ = Chr(138)
madep$ = Chr(169)
;***************************************************************************
;***************************************************************************
;- Procedures
;***************************************************************************
;***************************************************************************
Procedure.s ExePath()
 
  ExePath$ = Space(1000) 
  GetModuleFileName_(0,@ExePath$,1000) 
  ProcedureReturn GetPathPart(ExePath$)
   
EndProcedure
;Procedure ccalculuser()
;
;  PrintN("")
;  PrintN("Veuillez entrer un calcul")
;  Calcul$ = Input()
;  Signe = FindString(Calcul$, "+", 1)
;    If Signe > 0
;      Nombre1$ = Left(Calcul$, Signe)
;      Nombre2$ = Right(Calcul$, Signe + 1)
;      Nombre1 = Val(Nombre1$)
;      Nombre2 = Val(Nombre2$)
;      Somme = Nombre1 + Nombre2
;      Somme$ = Str(Somme)
;      Print("Le résultat est : " + Somme$)
;      Goto User
;    EndIf 
;  Signe2 = FindString(Calcul$, "-", 1)
;    If Signe2 > 0
;      Nombre1$ = Left(Calcul$, Signe2)
;      Nombre2$ = Right(Calcul$, Signe2 + 1)
;      Nombre1 = Val(Nombre1$)
;      Nombre2 = Val(Nombre2$)
;      Difference = Nombre1 - Nombre2
;     Difference$ = Str(Difference)
;      Print("Le résultat est : " + Difference$)
;      Goto User
;    EndIf 
;  Signe3 = FindString(Calcul$, "*", 1)
;     If Signe3 > 0
;        Nombre1$ = Left(Calcul$, Signe3)
;        Nombre2$ = Right(Calcul$, Signe3 + 1)
;        Nombre1 = Val(Nombre1$)
;        Nombre2 = Val(Nombre2$)
;        Produit = Nombre1 * Nombre2
;        Produit$ = Str(Produit)
;        Print("Le résultat est : " + Produit$)
;        Goto User
;      EndIf 
;   Signe4 = FindString(Calcul$, "/", 1)
;      If Signe4 > 0
;        Nombre1$ = Left(Calcul$, Signe4)
;        Nombre2$ = Right(Calcul$, Signe4 + 1)
;        Nombre1 = Val(Nombre1$)
;        Nombre2 = Val(Nombre2$)
;        Quotien = Nombre1 / Nombre2
;        Quotien$ = Str(Quotien)
;        Print("Le résultat est : " + Quotien$)
;        Goto User
;      EndIf
;      If Signe = 0 Or Signe2 = 0 Or Signe3 = 0 Or Signe4 = 0
;        Print("Calcul impossible")
;        Goto User
;      EndIf
;      
;EndProcedure
Procedure CommandsUser()

  PrintN("")
  PrintN("about : Affiche les informations sur le logiciel")
  PrintN("cclear : Efface le contenue de la console")
  PrintN("cexit : Quitter la console")
  PrintN("commands : Affiche les commandes disponibles")
  PrintN("copen : Ouvre une nouvelle console en fermant l'ancienne")
  PrintN("date : Affiche la date et l'heure")
  PrintN("fullscreen : Ouvre la console en plein ecran")
  PrintN("ip : Affiche la/les adresse(s) IP")
  PrintN("os : Affiche le nom de l'OS")
  PrintN("sexit : Quitte la session en cours")
  PrintN("su : Se connecter en Super Utilisateur")
  Print("windowed : Ouvre la console en fen" + Chr(136) + "tre")
  Goto User

EndProcedure
Procedure CommandsRoot()

  PrintN("")
  PrintN("-c : Mis a la fin d'une commande, permet d'" + Chr(130) + "viter la fermeture de la console")
  PrintN("about : Affiche les informations sur le logiciel")
  PrintN("cclear : Efface le contenue de la console")
  PrintN("cexit : Quitter la console")
  PrintN("commands : Affiche les commandes disponibles")
  PrintN("copen : Ouvre une nouvelle console en fermant l'ancienne")
  PrintN("cred 'repertoire' : Cr" + Chr(130) + "" + Chr(130) + " ce r" + Chr(130) + "pertoire")
  PrintN("cref 'fichier' : Cr" + Chr(130) + "e ce fichier")
  PrintN("date : Affiche la date et l'heure")
  PrintN("deld 'repertoire' : Supprime ce r" + Chr(130) + "pertoire et ses sous-r" + Chr(130) + "pertoires")
  PrintN("delf 'fichier' : Supprime ce fichier")
  PrintN("fullscreen : Ouvre la console en plein ecran")
  PrintN("ip : Affiche la/les adresse(s) IP")
  PrintN("os : Affiche le nom de l'OS")
  PrintN("sexit : Quitte la session en cours")
  PrintN("user : Quitter le mode Super Utilisateur pour aller en mode Utilisateur")
  Print("windowed : Ouvre la console en fen" + Chr(136) + "tre")
  Goto Root2

EndProcedure
Procedure Demarrage()
  
  OpenConsole()
  RepExe$ = ExePath()
  If ReadFile(0, RepExe$ + "config\PC.ini") = 0
    ConsoleColor(12, 0)
    Beep_(100,100)
    Print("Impossible de charger la configuration")
    ConsoleColor(7, 0)
    Input()
    End
  Else
    ReadFile(2, RepExe$ + "config\PC.ini")
    RealPassword$ = ReadString()
    InstallPath$ = ReadString()
    UserName$ = ReadString()
    CloseFile(2)
    If RealPassword$ = ""
      ConsoleColor(12, 0)
      Beep_(100,100)
      Print("Impossible de charger la configuration")
      ConsoleColor(7, 0)
      Input()    
      End
    ElseIf UserName$ = ""
      ConsoleColor(12, 0)
      Beep_(100,100)
      Print("Impossible de charger la configuration")
      ConsoleColor(7, 0)
      Input()
      End
    EndIf
    CloseFile(2)
    ReadFile(2, RepExe$ + "config\PC.ini")
    RealPassword$ = ReadString()
    InstallPath$ = ReadString()
    UserName$ = ReadString()
    CloseFile(2)
    ConsoleColor(7, 0)
    ClearConsole()
    ConsoleTitle("[" + UserName$ + "@localhost]")
    Astuce = Random(5)
    If Astuce = 0
      Message$ = "Tapez 'commands' pour voir toutes les commandes disponibles."
    ElseIf Astuce = 1
      Message$ = "N'utilisez 'sexit' qu'en cas de grandes necssit" + Chr(130) + "es."
    ElseIf Astuce = 2
      Message$ = "La commande 'ip' affiche aussi le nom de l'ordinateur local"
    ElseIf Astuce = 3
      Message$ = "Le mode Super Utilisateur vous permet de configurer Windows" + madep$
    ElseIf Astuce = 4
      Message$ = "*-/."
    ElseIf Astuce = 5
      Message$ = "*-/.)"
    EndIf
    MessageRequester("Astuce", Message$)
  EndIf
  
EndProcedure
Procedure IPuser()

  Connection = InitNetwork()
  If Connection = 0
    ConsoleColor(12, 0)
    Beep_(100,100)
    Print("Erreur " + Chr(133) + " la connection")
    ConsoleColor(7, 0)
    Goto User
  EndIf
  OrdinateurLocal$ = Hostname()
  PrintN("")
  Print("Nom de l'ordinateur local : " + OrdinateurLocal$)
  ExamineIPAddresses()
  IP1 = NextIPAddress()
  If IP1 > 0
    IP1$ = IPString(IP1)
  Else
    IP1$ = ""
  EndIf
  IP2 = NextIPAddress()
  If IP2 > 0
    IP2$ = IPString(IP2)
  Else
    IP2$ = ""
  EndIf
  If IP1$ = ""
    Goto User
  Else
    PrintN("")
    Print("Premi" + Chr(138) + "re adresse IP : " + IP1$)
    If IP2$ = ""
      Goto User
    Else
      PrintN("")
      Print("Seconde adresse IP : " + IP2$)
      Goto User
    EndIf
  EndIf

EndProcedure
Procedure IProot()

  Connection = InitNetwork()
  If Connection = 0
    ConsoleColor(12, 0)
    Beep_(100,100)
    Print("Erreur " + Chr(133) + " la connection")
    ConsoleColor(7, 0)
    Goto Root2
  EndIf
  OrdinateurLocal$ = Hostname()
  PrintN("")
  Print("Nom de l'ordinateur local : " + OrdinateurLocal$)
  ExamineIPAddresses()
  IP1 = NextIPAddress()
  If IP1 > 0
    IP1$ = IPString(IP1)
  Else
    IP1$ = ""
  EndIf
  IP2 = NextIPAddress()
  If IP2 > 0
    IP2$ = IPString(IP2)
  Else
    IP2$ = ""
  EndIf
  If IP1$ = ""
    Goto Root2
  Else
    PrintN("")
    Print("Premi" + Chr(138) + "re adresse IP : " + IP1$)
    If IP2$ = ""
      Goto Root2
    Else
      PrintN("")
      Print("Seconde adresse IP : " + IP2$)
      Goto Root2
    EndIf
  EndIf

EndProcedure
Procedure OSuser()

  OS = OSVersion()
  If OS = #PB_OS_Windows_NT3_51
    PrintN("")
    Print("Votre OS est : Windows" + Chr(169) + " NT 3.51")
  ElseIf OS = #PB_OS_Windows_95
    PrintN("")
    Print("Votre OS est : Windows" + Chr(169) + " 95")
  ElseIf OS = #PB_OS_Windows_NT_4
    PrintN("")
    Print("Votre OS est : Windows" + Chr(169) + " NT 4")
  ElseIf OS = #PB_OS_Windows_98
    PrintN("")
    Print("Votre OS est : Windows" + Chr(169) + " 98")
  ElseIf OS = #PB_OS_Windows_ME
    PrintN("")
    Print("Votre OS est : Windows" + Chr(169) + " ME")
  ElseIf OS = #PB_OS_Windows_2000
    PrintN("")
    Print("Votre OS est : Windows" + Chr(169) + " 2000")
  ElseIf OS = #PB_OS_Windows_XP
    PrintN("")
    Print("Votre OS est : Windows" + Chr(169) + " XP")
  Else
    PrintN("")
    ConsoleColor(12, 0)
    Beep_(100,100)
    Print("Erreur dans la detection de votre OS")
    ConsoleColor(7, 0)
  EndIf
  Goto User

EndProcedure
Procedure OSroot()

  sysdir$=Space(255) : GetSystemDirectory_(@sysdir$,255) : If Right(sysdir$,1)<>"\" : sysdir$+"\" : EndIf
  windir$=Space(255) : GetWindowsDirectory_(@windir$,255) : If Right(windir$,1)<>"\" : windir$+"\" : EndIf
  ScreenX = GetSystemMetrics_(#SM_CXSCREEN)
  ScreenY = GetSystemMetrics_(#SM_CYSCREEN)
  ScreenX$ = Str(ScreenX)
  ScreenY$ = Str(ScreenY)
  OS = OSVersion()
  If OS = #PB_OS_Windows_NT3_51
    PrintN("")
    PrintN("Votre OS est : Windows" + Chr(169) + " NT 3.51")
  ElseIf OS = #PB_OS_Windows_95
    PrintN("")
    PrintN("Votre OS est : Windows" + Chr(169) + " 95")
  ElseIf OS = #PB_OS_Windows_NT_4
    PrintN("")
    PrintN("Votre OS est : Windows" + Chr(169) + " NT 4")
  ElseIf OS = #PB_OS_Windows_98
    PrintN("")
    PrintN("Votre OS est : Windows" + Chr(169) + " 98")
  ElseIf OS = #PB_OS_Windows_ME
    PrintN("")
    PrintN("Votre OS est : Windows" + Chr(169) + " ME")
  ElseIf OS = #PB_OS_Windows_2000
    PrintN("")
    PrintN("Votre OS est : Windows" + Chr(169) + " 2000")
  ElseIf OS = #PB_OS_Windows_XP
    PrintN("")
    PrintN("Votre OS est : Windows" + Chr(169) + " XP")
  Else
    PrintN("")
    ConsoleColor(12, 0)
    Beep_(100,100)
    Print("Erreur dans la detection de votre OS")
    ConsoleColor(7, 0)
    Goto Root2
  EndIf
  PrintN("R" + Chr(130) + "pertoire Windows : " + windir$)
  PrintN("R" + Chr(130) + "pertoire System : " + sysdir$)
  Print("Resolution : "+ScreenX$+"x"+ScreenY$)
  Goto Root2

EndProcedure
Procedure SU()

  PrintN("")
  ReadFile(2, RepExe$ + "config\PC.ini")
  RealPassword$ = ReadString()
  InstallPath$ = ReadString()
  UserName$ = ReadString()
  CloseFile(2)
  Print("Password : ")
  ConsoleColor(0, 0)
  Password$ = Input()
  ConsoleColor(7, 0)
  If Password$ = RealPassword$
    PrintN("")
    ConsoleTitle("[root@localhost]")
    ConsoleColor(10, 0)
    PrintN("Vous " + Chr(136) + "tes logu" + Chr(130) + " en tant que root")
    ConsoleColor(7, 0)
    Print("[root@localhost] # ")
    Goto Root
  Else
    PrintN("")
    ConsoleColor(12, 0)
    Beep_(100,100)
    Print("Mot de passe faux !")
    ConsoleColor(7, 0)
    Goto User
  EndIf

EndProcedure
Procedure UpdateUser()
EndProcedure
;***************************************************************************
;***************************************************************************
;- Programme
;***************************************************************************
;***************************************************************************
Demarrage()
ReadFile(2, RepExe$ + "config\PC.ini")
RealPassword$ = ReadString()
InstallPath$ = ReadString()
UserName$ = ReadString()
CloseFile(2)
Print("[" + UserName$ + "@localhost] $ ")
Reponse$ = Input()
Reponse :
; CP = FindString(Reponse$, "CP", 1)
; If CP = 1
; Espace = FindString(Reponse$, "/", 4)
; Origine$ = Mid(Reponse$, 3, Espace - 3)
; Print("Origine : " + Origine$)
; Destination$ = Right(Reponse$, Espace - 4)
; Print("Destination : " + Destination$)
; CopieEntier = Len(Reponse$)
; Extension = FindString(Reponse$, ".", CopieEntier - 4)
; If Extension > 1
; CopyFile(Origine$, Destination$)
; PrintN("")
; Print("Copie du fichier effectuée")
; Goto " + UserName$ + "
; ElseIf Extension = 0
; CopyDirectory(Origine$, Destination$, "*.*", #PB_FileSystem_Recursive)
; PrintN("")
; Print("Copie du répértoire effectuée")
; Goto " + UserName$ + "
; Else
; Print("Copie Impossible")
; Goto " + UserName$ + "
; EndIf
; EndIf
bin = FindString(Reponse$, "/bin/", 0)
If bin = 1
  Lenbin = Len(Reponse$)
  sbin$ = Mid(Reponse$, 5, Lenbin-4)
  sysdir$=Space(255) : GetSystemDirectory_(@sysdir$,255) : If Right(sysdir$,1)<>"\" : sysdir$+"\" : EndIf
  sys$ = sysdir$+sbin$
  Lancement = RunProgram(sys$)
  If Lancement = 0
    PrintN("") 
    ConsoleColor(12, 0)
    Beep_(100,100)
    Print("Impossible de lancer le programme ou d'ouvrir le dossier !")
    ConsoleColor(7, 0)
  EndIf
  Goto User
EndIf
sbin = FindString(Reponse$, "/sbin/", 0)
If sbin = 1
  Lensbin = Len(Reponse$)
  sbin$ = Mid(Reponse$, 6, Lensbin-5)
  sysdir$=Space(255) : GetSystemDirectory_(@sysdir$,255) : If Right(sysdir$,1)<>"\" : sysdir$+"\" : EndIf
  sys$ = sysdir$+sbin$
  Lancement = RunProgram(sys$)
  If Lancement = 0
    PrintN("") 
    ConsoleColor(12, 0)
    Beep_(100,100)
    Print("Impossible de lancer le programme ou d'ouvrir le dossier !")
    ConsoleColor(7, 0)
  EndIf
  Goto User
EndIf
home = FindString(Reponse$, "/home/", 0)
If home = 1
  Lenhome = Len(Reponse$)
  shome$ = Mid(Reponse$, 6, Lenhome-5)
  Mesdocuments$ = GetPersonalPath()
  doc$ = Mesdocuments$+shome$
  Lancement = RunProgram(doc$)
  If Lancement = 0
    PrintN("") 
    ConsoleColor(12, 0)
    Beep_(100,100)
    Print("Impossible de lancer le programme ou d'ouvrir le dossier !")
    ConsoleColor(7, 0)
  EndIf
  Goto User
EndIf
If Reponse$ = "su"
  SU()
ElseIf Reponse$ = "cexit"
  End
ElseIf Reponse$ = "user"
  PrintN("")
  ConsoleColor(12, 0)
  Beep_(100,100)
  Print("Vous n'" + ecirc$ + "tes pas logu" + eaigu$ + " en Super Utilisateur !")
  ConsoleColor(7, 0)
  Goto User
ElseIf Reponse$ = "commands"
  CommandsUser()
ElseIf Reponse$ = "about"
  PrintN("")
  PrintN("Console cr" + eaigu$ + "" + eaigu$ + "e par Heis Spiter. http://www.heisspiter.tk. Version 0.1 Alpha. Non publique.")
  PrintN("Remerciments " + agrav$ + " : ")
  PrintN("cnous3 (testeur)")
  PrintN("LLaumgui (testeur, forum de d" + eaigu$ + "vellopement)")
  PrintN("teto (testeur, orthographe)")
  Print("Forums de PureBasic (soutien, d" + eaigu$ + "buggage)")
  Goto User
ElseIf Reponse$ = "ip"
  IPuser()
ElseIf Reponse$ = "sexit"
  PrintN("")
  PrintN("Attention ! Cette session va " + ecirc$ + "tre ferm" + eaigu$ + "e !")
  Beep_(200,100)
  Delay(1000)
  Beep_(200,100)
  ExitWindowsEx_(#EWX_LOGOFF, SHTDN_REASON_MAJOR_APPLICATION)
  Delay(1000)
  Beep_(200,100)
  Print("Veuillez patienter le processus a " + eaigu$ + "t" + eaigu$ + " lancé")
  Delay(200)
  End
ElseIf Reponse$ = "os"
  OSuser()
ElseIf Reponse$ = "cclear"
  ClearConsole()
  Print("[" + UserName$ + "@localhost] $ ")
  Reponse$ = Input()
  Goto Reponse
ElseIf Reponse$ = "date"
  PrintN("")
  Date$ = FormatDate("%dd/%mm/%yyyy", Date())
  Time$ = FormatDate("%hh:%ii:%ss", Date())
  Print(Date$ + " " + Time$)
  Goto User
ElseIf Reponse$ = "copen"
  CloseConsole()
  OpenConsole()
  ConsoleTitle("[" + UserName$ + "@localhost]")
  Print("[" + UserName$ + "@localhost] $ ")
  Reponse$ = Input()
  Goto Reponse
;ElseIf Reponse$ = "ccalcul"
;  ccalculuser()
ElseIf Reponse$ = "fullscreen"
  dwOldMode=0 
  Result=GetConsoleDisplayMode_(@dwOldMode) 
  hOut=GetStdHandle_(#STD_OUTPUT_HANDLE)
  If switch = 1
    PrintN("")
    ConsoleColor(12, 0)
    Beep_(100,100)
    Print("Vous " + ecirc$ + "tes d" + eaigu$ + "j" + agrav$ + " en plein ecran !")
    ConsoleColor(7, 0)
    Goto User
  Else
    switch=1
    SetConsoleDisplayMode_(hOut, switch, @dwOldMode)
    Goto User
  EndIf
ElseIf Reponse$ = "windowed"
  If switch = 0
    PrintN("")
    ConsoleColor(12, 0)
    Beep_(100,100)
    Print("Vous " + ecirc$ + "tes d" + eaigu$ + "j" + agrav$ + " en mode fren" + ecirc$ + "tre !")
    ConsoleColor(7, 0)
    Goto User
  Else
    switch = 0
    SetConsoleDisplayMode_(hOut, switch0, @dwOldMode)
    Goto User
  EndIf
ElseIf Reponse$ = "path"
  PrintN("")
  Print(InstallPath$)
  Goto User
ElseIf Reponse$ = "/home"
  Mesdocuments$ = GetPersonalPath()
  Lancement = RunProgram(Mesdocuments$)
  If Lancement = 0
    PrintN("") 
    ConsoleColor(12, 0)
    Beep_(100,100)
    Print("Impossible d'ouvrir le r" + eaigu$ + "pertoire personnel !")
    ConsoleColor(7, 0)
  EndIf
  Goto User
ElseIf Reponse$ = "/sbin" Or "/bin"
  sysdir$=Space(255) : GetSystemDirectory_(@sysdir$,255) : If Right(sysdir$,1)<>"\" : sysdir$+"\" : EndIf
  Lancement = RunProgram(sysdir$)
  If Lancement = 0
    PrintN("") 
    ConsoleColor(12, 0)
    Beep_(100,100)
    Print("Impossible d'ouvrir le r" + eaigu$ + "pertoire syste"+grav$+"me !")
    ConsoleColor(7, 0)
  EndIf
  Goto User
Else
  Lancement = RunProgram(Reponse$)
  If Lancement = 0
    PrintN("")
    ConsoleColor(12, 0)
    Beep_(100,100)
    Print("Ce programme ou ce r" + eaigu$ + "pertoire n'existe pas !")
    ConsoleColor(7, 0)
    Goto Chute
  EndIf
  Chute : 
  PrintN("")
  Print("[" + UserName$ + "@localhost] $ ")
  Reponse$ = Input()
  Goto Reponse
EndIf
Root :
Reponse$ = Input()
Goto ReponseRoot
User :
PrintN("")
Print("[" + UserName$ + "@localhost] $ ")
Reponse$ = Input()
Goto Reponse
Root2 : 
PrintN("")
Print("[root@localhost] # ")
Reponse$ = Input()
ReponseRoot :
bin = FindString(Reponse$, "/bin/", 0)
If bin = 1
  Lenbin = Len(Reponse$)
  sbin$ = Mid(Reponse$, 5, Lenbin-4)
  sysdir$=Space(255) : GetSystemDirectory_(@sysdir$,255) : If Right(sysdir$,1)<>"\" : sysdir$+"\" : EndIf
  sys$ = sysdir$+sbin$
  Lancement = RunProgram(sys$)
  If Lancement = 0
    PrintN("") 
    ConsoleColor(12, 0)
    Beep_(100,100)
    Print("Impossible de lancer le programme ou d'ouvrir le dossier !")
    ConsoleColor(7, 0)
  EndIf
  PrintN("")
  Print("[root@localhost] # ")
  Reponse$ = Input()
  Goto ReponseRoot
EndIf
sbin = FindString(Reponse$, "/sbin/", 0)
If sbin = 1
  Lensbin = Len(Reponse$)
  sbin$ = Mid(Reponse$, 6, Lensbin-5)
  sysdir$=Space(255) : GetSystemDirectory_(@sysdir$,255) : If Right(sysdir$,1)<>"\" : sysdir$+"\" : EndIf
  sys$ = sysdir$+sbin$
  Lancement = RunProgram(sys$)
  If Lancement = 0
    PrintN("") 
    ConsoleColor(12, 0)
    Beep_(100,100)
    Print("Impossible de lancer le programme ou d'ouvrir le dossier !")
    ConsoleColor(7, 0)
  EndIf
  PrintN("")
  Print("[root@localhost] # ")
  Reponse$ = Input()
  Goto ReponseRoot
EndIf
home = FindString(Reponse$, "/home/", 0)
If home = 1
  Lenhome = Len(Reponse$)
  shome$ = Mid(Reponse$, 6, Lenhome-5)
  Mesdocuments$ = GetPersonalPath()
  doc$ = Mesdocuments$+shome$
  Lancement = RunProgram(doc$)
  If Lancement = 0
    PrintN("") 
    ConsoleColor(12, 0)
    Beep_(100,100)
    Print("Impossible de lancer le programme ou d'ouvrir le dossier !")
    ConsoleColor(7, 0)
  EndIf
  PrintN("")
  Print("[root@localhost] # ")
  Reponse$ = Input()
  Goto ReponseRoot
EndIf
CRED = FindString(Reponse$, "cred", 0)
 If CRED = 1
   LongueurReponse = Len(Reponse$)
   CreRep$ = Mid(Reponse$, 5, LongueurReponse)
   CreRep$ = RTrim(CreRep$)
   CreRep$ = LTrim(CreRep$)
   CreRep = CreateDirectory(CreRep$)
   If CreRep = 0
     PrintN("")
     ConsoleColor(12, 0)
     Beep_(100,100)
     PrintN("Cr" + eaigu$ + "ation " + eaigu$ + "chou" + eaigu$ + "e !")
     ConsoleColor(7, 0)
     Print("[root@localhost] # ")
     Reponse$ = Input()
     Goto ReponseRoot
   Else
     PrintN("")
     PrintN("Cr" + eaigu$ + "ation " + eaigu$ + "ffectu" + eaigu$ + "e !")
     Choixouinon : 
     Print("Voulez-vous l'ouvrir ? oui/non : ")
     Choix$ = Input()
     If Choix$ = "oui"
       RunProgram(CreRep$)
       PrintN("")
       Print("[root@localhost] # ")
       Reponse$ = Input()
       Goto ReponseRoot
     ElseIf Choix$ = "non"
       PrintN("")
       Print("[root@localhost] # ")
       Reponse$ = Input()
       Goto ReponseRoot
     Else
       PrintN("")
       ConsoleColor(12, 0)
       Beep_(100,100)
       PrintN("R" + eaigu$ + "ponse inconnue !")
       ConsoleColor(7, 0)
       Goto Choixouinon
     EndIf
   EndIf
EndIf
  

  CREF = FindString(Reponse$, "cref", 0)
  If CREF = 1
    LongueurReponse = Len(Reponse$)
    CreFic$ = Mid(Reponse$, 5, LongueurReponse)
    CreFic$ = RTrim(CreFic$)
    CreFic$ = LTrim(CreFic$)
    CreFic = CreateFile(1, CreFic$)
    If CreFic = 0
      PrintN("")
      ConsoleColor(12, 0)
      Beep_(100,100)
      PrintN("Cr" + eaigu$ + "ation " + eaigu$ + "chou" + eaigu$ + "e !")
      ConsoleColor(7, 0)
      Print("[root@localhost] # ")
      Reponse$ = Input()
      Goto ReponseRoot
    Else
      PrintN("")
      PrintN("Cr" + eaigu$ + "ation " + eaigu$ + "ffectu" + eaigu$ + "e !")
      CloseFile(1)
      Choixouinonfile : 
      Print("Voulez-vous l'ouvrir ? oui/non : ")
      Choix$ = Input()
      If Choix$ = "oui"
        RunProgram(CreFic$)
        PrintN("")
        Print("[root@localhost] # ")
        Reponse$ = Input()
        Goto ReponseRoot
      ElseIf Choix$ = "non"
        PrintN("")
        Print("[root@localhost] # ")
        Reponse$ = Input()
        Goto ReponseRoot
      Else
        PrintN("")
        ConsoleColor(12, 0)
        Beep_(100,100)
        PrintN("R" + eaigu$ + "ponse inconnue !")
        ConsoleColor(7, 0)
        Goto Choixouinonfile
      EndIf
    EndIf
  EndIf

  DELD = FindString(Reponse$, "deld", 0)
  If DELD = 1
    LongueurReponse = Len(Reponse$)
    Repertoire$ = Mid(Reponse$, 5, LongueurReponse)
    Repertoire$ = RTrim(Repertoire$)
    Repertoire$ = LTrim(Repertoire$)
    SuppRep = DeleteDirectory(Repertoire$, "*.*", #PB_FileSystem_Force | #PB_FileSystem_Recursive)
    If SuppRep = 0
      PrintN("")
      ConsoleColor(12, 0)
      Beep_(100,100)
      PrintN("Suppression " + eaigu$ + "chou" + eaigu$ + "e !")
      ConsoleColor(7, 0)
      Print("[root@localhost] # ")
      Reponse$ = Input()
      Goto ReponseRoot
    Else
      PrintN("")
      PrintN("Suppression " + eaigu$ + "ffectu" + eaigu$ + "e !")
      Print("[root@localhost] # ")
      Reponse$ = Input()
      Goto ReponseRoot
    EndIf
  EndIf


  DELF = FindString(Reponse$, "delf", 0)
  If DELF = 1
    LongueurReponse = Len(Reponse$)
    Fichier$ = Mid(Reponse$, 5, LongueurReponse)
    Fichier$ = RTrim(Fichier$)
    Fichier$ = LTrim(Fichier$)
    SuppFic = DeleteFile(Fichier$)
    If SuppFic = 0
      PrintN("")
      ConsoleColor(12, 0)
      Beep_(100,100)
      PrintN("Suppression " + eaigu$ + "chou" + eaigu$ + "e !")
      ConsoleColor(7, 0)
      Print("[root@localhost] # ")
      Reponse$ = Input()
      Goto ReponseRoot
    Else
      PrintN("")
      PrintN("Suppression " + eaigu$ + "ffectu" + eaigu$ + "e !")
      Print("[root@localhost] # ")
      Reponse$ = Input()
      Goto ReponseRoot
    EndIf
  EndIf   
If Reponse$ = "su"
  PrintN("")
  ConsoleColor(12, 0)
  Beep_(100,100)
  PrintN("Vous " + ecirc$ + "tes d" + eaigu$ + "j" + agrav$ + " logu" + eaigu$ + " !")
  ConsoleColor(7, 0)
  Print("[root@localhost] # ")
  Reponse$ = Input()
  Goto ReponseRoot
ElseIf Reponse$ = "cexit"
  End
ElseIf Reponse$ = "user"
  PrintN("")
  ConsoleTitle("[" + UserName$ + "@localhost]")
  ConsoleColor(14, 0)
  PrintN("Vous n'" + ecirc$ + "tes plus logu" + eaigu$ + " en tant que root")
  ConsoleColor(7, 0)
  Print("[" + UserName$ + "@localhost] $ ")
  Reponse$ = Input()
  Goto Reponse
ElseIf Reponse$ = "commands"
  CommandsRoot()
ElseIf Reponse$ = "about"
  PrintN("")
  PrintN("console cr" + eaigu$ + "" + eaigu$ + "e par Heis Spiter. http://www.heisspiter.tk. Version 0.1 Alpha. Non publique")
  PrintN("Remerciments " + agrav$ + " : ")
  PrintN("cnous3 (testeur)")
  PrintN("LLaumgui (testeur, forum de d" + eaigu$ + "vellopement)")
  PrintN("teto (testeur, orthographe)")
  PrintN("Forums de PureBasic (soutien, d" + eaigu$ + "buggage)")
  Print("[root@localhost] # ")
  Reponse$ = Input()
  Goto ReponseRoot
ElseIf Reponse$ = "ip"
  IProot()
ElseIf Reponse$ = "sexit"
  PrintN("")
  PrintN("Attention ! Cette session va " + ecirc$ + "tre ferm" + eaigu$ + "e !")
  Beep_(200,100)
  Delay(1000)
  Beep_(200,100)
  ExitWindowsEx_(#EWX_LOGOFF, SHTDN_REASON_MAJOR_APPLICATION)
  Delay(1000)
  Beep_(200,100)
  Print("Veuillez patienter le processus a " + eaigu$ + "t" + eaigu$ + " lanc" + eaigu$ + "")
  Delay(5000)
  End
ElseIf Reponse$ = "sexit -c"
  PrintN("")
  PrintN("Attention ! Cette session va " + ecirc$ + "tre ferm" + eaigu$ + "e !")
  Beep_(200,100)
  Delay(1000)
  Beep_(200,100)
  ExitWindowsEx_(#EWX_LOGOFF, SHTDN_REASON_MAJOR_APPLICATION)
  Delay(1000)
  Beep_(200,100)
  Print("Veuillez patienter le processus a " + eaigu$ + "t" + eaigu$ + " lanc" + eaigu$ + "")
  Print("[root@localhost] # ")
  Reponse$ = Input()
  Goto ReponseRoot
ElseIf Reponse$ = "os"
  OSroot()
ElseIf Reponse$ = "cclear"
  ClearConsole()
  Print("[root@localhost] # ")
  Reponse$ = Input()
  Goto ReponseRoot
ElseIf Reponse$ = "date"
  PrintN("")
  Date$ = FormatDate("%dd/%mm/%yyyy", Date())
  Time$ = FormatDate("%hh:%ii:%ss", Date())
  PrintN(Date$ + " " + Time$)
  Print("[root@localhost] # ")
  Reponse$ = Input()
  Goto ReponseRoot
ElseIf Reponse$ = "copen"
  CloseConsole()
  OpenConsole()
  ConsoleTitle("[root@localhost]")
  Print("[root@localhost] # ")
  Reponse$ = Input()
  Goto ReponseRoot
ElseIf Reponse$ = "fullscreen"
  dwOldMode=0 
  Result=GetConsoleDisplayMode_(@dwOldMode) 
  hOut=GetStdHandle_(#STD_OUTPUT_HANDLE)
  If switch = 1
    PrintN("")
    ConsoleColor(12, 0)
    Beep_(100,100)
    Print("Vous " + ecirc$ + "tes d" + eaigu$ + "j" + agrav$ + " en plein ecran !")
    ConsoleColor(7, 0)
    Goto Root2
  Else
    switch=1
    SetConsoleDisplayMode_(hOut, switch, @dwOldMode)
    Goto Root2
  EndIf
ElseIf Reponse$ = "windowed"
  If switch = 0
    PrintN("")
    ConsoleColor(12, 0)
    Beep_(100,100)
    Print("Vous " + ecirc$ + "tes d" + eaigu$ + "j" + agrav$ + " en mode fren" + ecirc$ + "tre !")
    ConsoleColor(7, 0)
    Goto Root2
  Else
    switch = 0
    SetConsoleDisplayMode_(hOut, switch0, @dwOldMode)
    Goto Root2
  EndIf
ElseIf Reponse$ = "alpha"
  PrintN("")
  Print("Password : ")
  ConsoleColor(0, 0)
  AlphaPass$ = Input()
  ConsoleColor(7, 0)
  VMA$ = "testalpha"
  If AlphaPass$ = VMA$
    Goto Alpha
  Else
    PrintN("")
    ConsoleColor(12, 0)
    Beep_(100,100)
    Print("Mot de passe faux !")
    ConsoleColor(7, 0)
    Goto Root2
  EndIf
ElseIf Reponse$ = "path"
  PrintN("")
  Print(InstallPath$)
  Goto Root2
ElseIf Reponse$ = "/home"
  Mesdocuments$ = GetPersonalPath()
  Lancement = RunProgram(Mesdocuments$)
  If Lancement = 0
    PrintN("") 
    ConsoleColor(12, 0)
    Beep_(100,100)
    Print("Impossible d'ouvrir le r" + eaigu$ + "pertoire personnel !")
    ConsoleColor(7, 0)
  EndIf
  Goto Root2
ElseIf Reponse$ = "/sbin" Or "/bin"
  sysdir$=Space(255) : GetSystemDirectory_(@sysdir$,255) : If Right(sysdir$,1)<>"\" : sysdir$+"\" : EndIf
  Lancement = RunProgram(sysdir$)
  If Lancement = 0
    PrintN("") 
    ConsoleColor(12, 0)
    Beep_(100,100)
    Print("Impossible d'ouvrir le r" + eaigu$ + "pertoire syste"+grav$+"me !")
    ConsoleColor(7, 0)
  EndIf
  Goto Root2
Else

  sysdir$=Space(255) : GetSystemDirectory_(@sysdir$,255) : If Right(sysdir$,1)<>"\" : sysdir$+"\" : EndIf
  windir$=Space(255) : GetWindowsDirectory_(@windir$,255) : If Right(windir$,1)<>"\" : windir$+"\" : EndIf
  Lancement = RunProgram(Reponse$)
  If Lancement = 0
    Executable = FindString(Reponse$, ".exe", 1)
    If Executable = 0
      System32 = RunProgram(sysdir$ + Reponse$ + ".exe")
      If System32 = 0
        Windows =  RunProgram(windir$ + Reponse$ + ".exe")
        If Windows = 0
          PrintN("")
          ConsoleColor(12, 0)
          Beep_(100,100)
          Print("Cette commande n'est pas référencée !")
          ConsoleColor(7, 0)
        EndIf
      EndIf
    Else
      System32 = RunProgram(sysdir$ + Reponse$)
      If System32 = 0
        Windows =  RunProgram(windir$ + Reponse$)
        If Windows = 0
          PrintN("")
          ConsoleColor(12, 0)
          Beep_(100,100)
          Print("Cette commande n'est pas référencée !")
          ConsoleColor(7, 0)
        EndIf
      EndIf
    EndIf
  EndIf
  PrintN("")
  Print("[root@localhost] # ")
  Reponse$ = Input()
  Goto ReponseRoot  
EndIf
Alpha : 
ConsoleTitle("[alpha@localhost]")
PrintN("")
ConsoleColor(10, 0)
PrintN("Vous " + ecirc$ + "tes logu" + eaigu$ + " en tant que testeur Alpha")
ConsoleColor(7, 0)
Print("[alpha@localhost] ^ ")
ReponseAlpha$ =Input()
If ReponseAlpha$ = "quit"
  ConsoleTitle("[root@localhost]")
  PrintN("")
  ConsoleColor(14, 0)
  Print("Vous n'" + ecirc$ + "tes plus logu" + eaigu$ + " en tant que testeur Alpha")
  ConsoleColor(7, 0)
  Goto Root2
ElseIf ReponseAlpha$ = "log"
  CreLog = CreateFile(100, "log.txt")
  If CreLog = 0
    PrintN("")
    ConsoleColor(12, 0)
    Beep_(100,100)
    Print("Impossible de cr" + eaigu$ + "er Log.txt")
    ConsoleColor(7, 0)
    Goto Alpha
  EndIf
  CloseFile(100)
  OpeLog = OpenFile(101, "log.txt")
  If OpeLog = 0
    PrintN("")
    ConsoleColor(12, 0)
    Beep_(100,100)
    Print("Impossible d'ouvrir Log.txt")
    ConsoleColor(7, 0)
    Goto Alpha
  EndIf
  WriteStringN("Version 0.1 Alpha (07.12.03)")
  WriteStringN("----------------------------")
  WriteStringN("Bug : Lancement des programmes avec Windows sur autre DD que C (root)")
  WriteStringN("Ajout : Répertoires System et Windows")
  WriteStringN("")
  WriteStringN("Version 0.1 Alpha (06.12.03)")
  WriteStringN("----------------------------")
  WriteStringN("Bug : Caractères accentués supportés")
  WriteStringN("Ajout : Nom d'utilitsateur choisissable")
  WriteStringN("")
  WriteStringN("Version 0.1 Alpha (05.12.03)")
  WriteStringN("----------------------------")
  WriteStringN("Ajout : Mode Alpha")
  WriteStringN("")
  WriteStringN("Version 0.1 Alpha (04.12.03)")
  WriteStringN("----------------------------")
  WriteStringN("Faute : 'Connecter' dans commands (user)")
  WriteStringN("Bug : IP dans root ne se quittait plus")
  WriteString("Bug : OS dans root ne se quittait plus")
  CloseFile(101)
  Goto Alpha
ElseIf ReponseAlpha$ = "commands"
  PrintN("")
  PrintN("quit : retourner en SU")
  Print("log : cr" + eaigu$ + "er un log")
  Goto Alpha
Else
  PrintN("")
  ConsoleColor(12, 0)
  Beep_(100,100)
  Print("Cette commande n'est pas référencée !")
  ConsoleColor(7, 0)
  Goto Alpha
EndIf
Heis Spiter, webmaster du site http://www.heisspiter.net
Développeur principal et administrateur du projet Bird Chat
Parti courir au bonheur du dév. public et GPL :D