PureBasic - форум

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.



Таймер

Сообщений 1 страница 6 из 6

1

Помогите написать программу таймер выключение пк.
         Выглядит должно примерно так.
при нажатии CTRL-F12 Выключение через 10 мин
при повторном нажатии прибавлялось ешё 10 мин
при CTRL-F11 время аннулировалось
CTRL -F10 выдавила информацию о оставшимся времени
Если кто может это реализовать помогите

0

2

Выключение компьютера:

Код:
;{ Отключение компьютера 
 Structure MyLUID 
    LowPart.l 
    HighPart.l 
    Attributes.l 
  EndStructure 
     
  Structure MyTOKEN 
    PrivilegeCount.l 
    LowPart.l 
    HighPart.l 
    Attributes.l 
  EndStructure 
 Procedure PowerOff() 
    hdlProcessHandle.l 
    hdlTokenHandle.l 
    tmpLuid.MyLUID 
    tkp.MyTOKEN 
    tkpNewButIgnored.MyTOKEN 
    lBufferNeeded.l 
    hdlProcessHandle = GetCurrentProcess_() 
    OpenProcessToken_(hdlProcessHandle, #TOKEN_ADJUST_PRIVILEGES | #TOKEN_QUERY, @hdlTokenHandle) 
    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 
    Erg.l = AdjustTokenPrivileges_(hdlTokenHandle,0,@tkp,SizeOf(MyTOKEN),@tkpNewButIgnored,@lBufferNeeded) 
    Erg.l = ExitWindowsEx_((#EWX_SHUTDOWN |#EWX_POWEROFF | #EWX_FORCE), 0) 
  EndProcedure 
   ;}

Кнопки клавиатуры Перехват нажатий кнопок и снятие скриншотов

Работа с таймером Все о Timer

0

3

спасибо! Но от программирование  я далёк. Пробовал изучить, но для этого времени надо много... Пока его нет.
        Может кто сможет мне помочь ?

Global time=-1,second=0,visible=0,thread,FontID1
Enumeration
  #Window
  #Text
  #Button
EndEnumeration
FontID1 = LoadFont(2, "Arial", 12)
Structure MyLUID
  LowPart.l
  HighPart.l
  Attributes.l
EndStructure

Structure MyTOKEN
  PrivilegeCount.l
  LowPart.l
  HighPart.l
  Attributes.l
EndStructure
Procedure PowerOff()
  hdlProcessHandle.l
  hdlTokenHandle.l
  tmpLuid.MyLUID
  tkp.MyTOKEN
  tkpNewButIgnored.MyTOKEN
  lBufferNeeded.l
  hdlProcessHandle = GetCurrentProcess_()
  OpenProcessToken_(hdlProcessHandle, #TOKEN_ADJUST_PRIVILEGES | #TOKEN_QUERY, @hdlTokenHandle)
  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
  Erg.l = AdjustTokenPrivileges_(hdlTokenHandle,0,@tkp,SizeOf(MyTOKEN),@tkpNewButIgnored,@lBufferNeeded)
  Erg.l = ExitWindowsEx_((#EWX_SHUTDOWN |#EWX_POWEROFF | #EWX_FORCE), 0)
EndProcedure

Procedure TimeDown(value)
  Repeat
  Delay(1000)
  If second=0:time=time-1:second=60:EndIf
  second=second-1
  ForEver
EndProcedure

Procedure VerifyKey()
If GetAsyncKeyState_(#VK_CONTROL) And GetAsyncKeyState_(#VK_F10)
visible=1
EndIf
If GetAsyncKeyState_(#VK_CONTROL) And GetAsyncKeyState_(#VK_F11)
  KillThread(thread)
  time=-1
  visible=1
EndIf
If GetAsyncKeyState_(#VK_CONTROL) And GetAsyncKeyState_(#VK_F12)
  If time=-1
    time=9:second=59
    thread = CreateThread(@TimeDown() ,0)
  Else
   time=time+10
  EndIf
  visible=1
EndIf

If time=-1
SetGadgetText(#Text,"Таймер выключен")
  Else
SetGadgetText(#Text,"Таймер "+Str(time)+" минут "+Str(second)+" секунд")
EndIf

If time=0:KillThread(thread):PowerOff():End:EndIf
If visible=1:HideWindow(#Window,0):EndIf
EndProcedure

StartTimer(1, 100, @VerifyKey())

  OpenWindow(#Window, 216, 0, 257, 79, "Таймер",  #PB_Window_SystemMenu | #PB_Window_TitleBar | #PB_Window_ScreenCentered )
    If CreateGadgetList(WindowID(#Window))
      TextGadget(#Text, 10, 10, 240, 30, "Таймер выключен", #PB_Text_Center)
      SetGadgetFont(#Text, FontID1)
      ButtonGadget(#Button, 80, 50, 100, 20, "Выйти")
    EndIf
   
   Repeat
     Event = WaitWindowEvent()
     If Event = #PB_Event_CloseWindow:HideWindow(#Window,1):visible=0:EndIf
     Select Event
       Case #PB_Event_Gadget
         Select EventGadget()
           Case #Button
           End
         EndSelect
     EndSelect
   ForEver

Надо загнать в трэй .
Окошко таймера сделать больше и чтоб окно само сворачивалось в трей через 10 секунд а не с помощью кнопки закрыть

0

4

Gudzik11
Доделали тебе программу, пользуйся!
прога выключения компа

0

5

спасибо за помощь !

0

6

всё плохо не хрена не работает когда включаю ГОМ ПЛЕЕР перестают работать кнопки
CTRL-F10
CTRL-F11
CTRL-F12
это можно исправить?

0