Help

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Matthieu
Messages : 2
Inscription : jeu. 07/févr./2008 11:34

Help

Message par Matthieu »

Bonjour tout le monde.
J'aimerais savoir comment executer un fichier bat à partir d'un bouton en pure basic, car en faite j'aimerais me faire un petit soft qui eteind,redemarre et met en veille le pc rapidement ( Flemmard detécté )

Merci à ceux qui m'apporterons leurs aide.

Cordialement :)
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

1

Message par Kwai chang caine »

Bonjour et content de te parler

Ce n'est pas tout à fait ta demande, mais j'ai quelques codes dans ma besace qui permettent d'eteindre ou redémarrer un PC.

ATTENTION !!!!
Sauvegarde tout, car certains son "EFFICACES" et rien ne se sauvegarde :?

Code : Tout sélectionner

; German forum: http://robsite.de/php/pureboard/viewtopic.php?t=2328&highlight=
; Author: dige
; Date: 18. September 2003

; Erklärung:
; Wenn Windows vom Nutzer heruntergefahren wird oder der Nutzer sich 
; abmeldet und dies nicht mit der Option FORCE geschieht, wird an alle 
; laufenden Prozesse eine #WM_QUERYENDSESSION Message gesendet. 
; 
; Diese ist mit #True oder #False zu beantworten. Wird allerdings ein 
; #False übergeben, wird der Shutdown Prozess komplett abgebrochen! 
; 
; Dies kann man verwenden um ein Programm rechtzeitig sauber zu beenden 
; oder den Shutdown Prozess abzufangen... 

Procedure.b TerminateProgram() 
  Shared Quit.b 
  ; Wird bei Windows-Shutdown aufgerufen 
  If MessageRequester( "Windows Shutdown", "Windows wirklich beenden?", #MB_ICONEXCLAMATION | #MB_YESNO ) = 6 
    Quit.b = 1 
    ProcedureReturn #True 
  Else 
    ProcedureReturn #False 
  EndIf 
EndProcedure 

Procedure WindowsCallback(WindowID, Message, wParam, lParam)  
  If Message = #WM_QUERYENDSESSION 
    ProcedureReturn TerminateProgram() 
  Else 
    ProcedureReturn #PB_ProcessPureBasicEvents 
  EndIf    
EndProcedure 

OpenWindow( 0,90,90,300,100, "Warte auf Windows Shutdown" ,#PB_Window_SystemMenu) 

SetWindowCallback(@WindowsCallback())  

Repeat 
  Event = WindowEvent() 
  Delay ( 100 ) 
Until Quit.b Or Event = #PB_Event_CloseWindow 
Code de Yasoc :

Code : Tout sélectionner

Structure NEW_LUID_AND_ATTRIBUTES 
   pLuid.LUID 
   Attributes.l 
EndStructure 
Structure NEW_TOKEN_PRIVILEGES 
  PrivilegeCount.l 
  Privileges.NEW_LUID_AND_ATTRIBUTES[#ANYSIZE_ARRAY] 
EndStructure 
; ----------------------------------------------------------------------------------------------------- 
; Main shutdown/logoff procedure (you can use it directly with ExitWindowsEx_ () flags if you want)... 
; ----------------------------------------------------------------------------------------------------- 
Procedure.b DitchWindows(flags) 
  Protected os.OSVERSIONINFO:os\dwOSVersionInfoSize=SizeOf(OSVERSIONINFO) 
  GetVersionEx_(os) 
  If os\dwPlatformId=#VER_PLATFORM_WIN32_NT 
    If OpenProcessToken_(GetCurrentProcess_(),#TOKEN_ADJUST_PRIVILEGES|#TOKEN_QUERY,@token) 
      If LookupPrivilegeValue_(#Null,"SeShutdownPrivilege",tkp.NEW_TOKEN_PRIVILEGES\Privileges[0]\pLuid) 
        tkp\PrivilegeCount=1 
        tkp\Privileges[0]\Attributes=#SE_PRIVILEGE_ENABLED 
        If AdjustTokenPrivileges_(token,#False,tkp,#Null,#Null,#Null) 
          If ExitWindowsEx_(flags,0)=0:ProcedureReturn 4:EndIf 
        Else:ProcedureReturn 3 
        EndIf 
      Else:ProcedureReturn 2 
      EndIf 
    Else:ProcedureReturn 1 
    EndIf 
  Else 
    If ExitWindowsEx_(flags,0)=0 
      ProcedureReturn 4 
    EndIf 
  EndIf 
EndProcedure 
; ----------------------------------------------------------------------------------------------------- 
; Convenience functions (force = 1 to ignore applications that don't want to shut down, 0 otherwise) 
; ----------------------------------------------------------------------------------------------------- 

Procedure.b ShutDown(force=1) 
  If force:force=#EWX_FORCE:EndIf 
  DitchWindows(#EWX_LOGOFF|#EWX_SHUTDOWN|force) 
EndProcedure 

  error=ShutDown() 
  Select error 
  Case 1:MessageRequester("Shutdown error","Failed to get access token for current process", #MB_ICONWARNING) 
  Case 2:MessageRequester ("Shutdown error", "Failed to get required security privilege", #MB_ICONWARNING) 
  Case 3:MessageRequester ("Shutdown error", "Failed to adjust required security privilege", #MB_ICONWARNING) 
  Case 4:MessageRequester ("Shutdown error", "ExitWindowsEx call failed", #MB_ICONWARNING) 
  EndSelect 
Code de Ts-Soft:

Code : Tout sélectionner

Procedure EnableShutDown() 
  Privileges.TOKEN_PRIVILEGES 
  OpenProcessToken_(GetCurrentProcess_(), 40, @hToken) 
  Privileges\PrivilegeCount           = 1 
  Privileges\Privileges[0]\Attributes = #SE_PRIVILEGE_ENABLED 
  LookupPrivilegeValue_(0, "SeShutdownPrivilege", @Privileges\Privileges[0]\Luid) 
  AdjustTokenPrivileges_(hToken, 0, @Privileges, 0, 0, 0) 
  CloseHandle_(hToken) 
EndProcedure 

Procedure Shutdown(Flags.l) 
  EnableShutDown() 
  ExitWindowsEx_(Flags, 0) 
EndProcedure 

Code : Tout sélectionner

; Auteur : Julien
; Version de PB : 3.90
; 
; Explication du programme :
; Arrêter, redémarrer ou fermer la session.
; Il n'y a que la procedure car sinon, l'ordinateur s'arrêterai à chaque compilation de ce code ;)

Procedure ComputerShutDown(Param.l)
  ; Param = paramètre d'instinction de l'ordinateur
  ; 1 : quitter session
  ; 2 : arrêter
  ; 3 : redémarrer
 
  #TOKEN_ADJUST_PRIVILEGES = 32
  #TOKEN_QUERY = 8
  #SE_PRIVILEGE_ENABLED = 2
  #EWX_LOGOFF = 0
  #EWX_SHUTDOWN = 1
  #EWX_REBOOT = 2
  #EWX_FORCE = 4
  #EWX_POWEROFF = 8
  
  Structure MyLUID
    LowPart.l
    HighPart.l
    Attributes.l
  EndStructure
  
  Structure MyTOKEN
    PrivilegeCount.l
    LowPart.l
    HighPart.l
    Attributes.l
  EndStructure
  
  Protected hdlTokenHandle.l, tmpLuid.MyLUID, tkp.MyTOKEN, tkpNewButIgnored.MyTOKEN, lBufferNeeded.l

  OpenProcessToken_(GetCurrentProcess_(), #TOKEN_ADJUST_PRIVILEGES | #TOKEN_QUERY, @hdlTokenHandle)
  SysName.s = "" + Chr(0)
  Name.s = "SeShutdownPrivilege" + Chr(0)
  LookupPrivilegeValue_(SysName, Name, @tmpLuid)
  tmpLuid\Attributes = #SE_PRIVILEGE_ENABLED
  tkp\PrivilegeCount = 1
  tkp\LowPart = tmpLuid\LowPart
  tkp\HighPart = tmpLuid\HighPart
  tkp\Attributes = tmpLuid\Attributes
  AdjustTokenPrivileges_(hdlTokenHandle, 0, @tkp, SizeOf(MyTOKEN), @tkpNewButIgnored, @lBufferNeeded)
  
  Select Param
    Case 1 : ExitWindowsEx_(#EWX_LOGOFF | #EWX_FORCE, 0)
    Case 2 : ExitWindowsEx_(#EWX_SHUTDOWN | #EWX_FORCE, 0)
    Case 3 : ExitWindowsEx_(#EWX_REBOOT | #EWX_FORCE, 0)
  EndSelect
  
EndProcedure
Voila pour le reste les copains vont surement passer :wink:
Matthieu
Messages : 2
Inscription : jeu. 07/févr./2008 11:34

Message par Matthieu »

Merci beaucoup :)

EDIT : C'est bon j'ai trouvé comment faire.^^
Répondre