PureBasic - форум

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

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


Вы здесь » PureBasic - форум » Вопросы по PureBasic » Вопросы новичка


Вопросы новичка

Сообщений 151 страница 180 из 1000

151

daiomik написал(а):

Можно ли добавить количество выделенных мегабайт для каждого процесса?

Всмысле, сколько прога памяти занимает?

Код:
Procedure Timer1()
ClearGadgetItems(1)
EnumProcessInit()
Count=0
Repeat
   Temp.s=EnumProcess()
   If Temp=""
     Break
   EndIf
   AddGadgetItem(1,-1,Temp)
   CountMem=GetProcessMem(GetPidProcess(Temp))
   SetGadgetItemText(1, Count, Str(CountMem/1024)+" КБ",1)
   Count+1
ForEver
EndProcedure



OpenWindow(1,300,200,310,350,"Диспетчер задач",#PB_Window_MinimizeGadget|#PB_Window_ScreenCentered)

If CreateMenu(1,WindowID(1))
 MenuTitle("Файл")
  MenuItem(1,"Добавить процесс")
  MenuBar()
  MenuItem(2,"Выход")
 MenuTitle("Управление")
  MenuItem(3,"Обновить")
  MenuBar()
  MenuItem(4,"Убить процесс")
  MenuItem(5,"Убить окно")
  MenuItem(0,"Окно в фокусе")
  MenuTitle("Помощь")
  MenuItem(8,"О программе")  
EndIf

If CreatePopupMenu(2)
 MenuItem(3, "Обновить")
 MenuBar()
 MenuItem(4,"Убить процесс")
 MenuItem(2,"Выход")
EndIf 

ListIconGadget(1,0,0,310,330,"Имя процесса",200,#PB_ListIcon_GridLines|#PB_ListIcon_FullRowSelect|#PB_ListIcon_AlwaysShowSelection)
AddGadgetColumn(1, 2, "Память", 80)
Timer1()
Repeat

event=WaitWindowEvent()
Menu=EventMenu()


If Event=#PB_Event_Gadget
  Select EventGadget()
     Case 1
       If EventType()=#PB_EventType_RightClick
         DisplayPopupMenu(2, WindowID(1)) ; Отображаем контекстное меню
       EndIf
  EndSelect
EndIf

If Event=#PB_Event_Menu
 Select Menu
  Case 2
   event=#PB_Event_CloseWindow
  Case 3
   Timer1()
  Case 4
    ProcessName.s=GetGadgetText(1)
    If ProcessName<>""
      PID=GetPidProcess(ProcessName) 
      If PID
        KillProcess(PID)
      EndIf
    EndIf
    Timer1()
  Case 8
   MessageRequester("О программе","Диспетчер задач. Сделано в PureBasic") 
 EndSelect
EndIf   


Until event=#PB_Event_CloseWindow

0

152

Пётр написал(а):

Всмысле, сколько прога памяти занимает?

Да, именно это.
Ошибка, подчеркивает:    CountMem=GetProcessMem(GetPidProcess(Temp))

0

153

Устанавливай библиотеку PBOSL http://pure-basic.narod.ru/libs.html

0

154

Хех, интересно вышло. А если я, например, хочу при нажатии на заглавие (названия) колонок списка их отсортировать, то что мне нужно применить?

0

155

daiomik написал(а):

А если я, например, хочу при нажатии на заглавие (названия) колонок списка их отсортировать, то что мне нужно применить?

Совсем недавно обсуждалось http://purebasic.info/phpBB2/viewtopic. … start=2265

0

156

Добрый день.
Как вызвать раскрытие выпадающего списка ComboBoxGadget по кнопке ?
Я хочу закрыть системную рамку ContainerGadget()-ом и применить фон по фону окна.
Или может есть другой способ...

Код:
If OpenWindow (#Window_0,  0,  0,  450,  201,  "Окно", #PB_Window_MinimizeGadget|#PB_Window_ScreenCentered ) 
     SetWindowColor(#Window_0,RGB(24, 24, 24))
    
   ButtonGadget(77,20,115,35,20,"")
    
    ContainerGadget(0,100,118,85,15)
    
    ComboBoxGadget(#ComboBox_0, -2, -2,89,20)
    
    PureCOLOR_SetGadgetColor(#ComboBox_0, RGB(114, 114, 114), RGB(24, 24, 24))
    AddGadgetItem(#ComboBox_0, -1, "Стр. 11")
    AddGadgetItem(#ComboBox_0, -1, "Стр. 22")
    AddGadgetItem(#ComboBox_0, -1, "Стр. 33")
    AddGadgetItem(#ComboBox_0, -1, "Стр. 44")
    AddGadgetItem(#ComboBox_0, -1, "Стр. 55")
    AddGadgetItem(#ComboBox_0, -1, "Стр. 66")
    AddGadgetItem(#ComboBox_0, -1, "Стр. 77")
    AddGadgetItem(#ComboBox_0, -1, "Стр. 88")
    AddGadgetItem(#ComboBox_0, -1, "Стр. 99")                  

    SetGadgetState(#ComboBox_0,3)


  EndIf



Repeat
Event =  WaitWindowEvent() 
Window = EventWindow() 
Gadget = EventGadget()
   Select Event
        Case #PB_Event_Gadget
          Select EventGadget()
             Case 77


          EndSelect
   EndSelect
If Event = #PB_Event_CloseWindow
Break    
EndIf
ForEver

0

157

Вот пример, открытия и закрытия списка

Код:
If OpenWindow(0,20,150,270,140,"Liste von ComboBox anzeigen",#PB_Window_SystemMenu) And CreateGadgetList(WindowID(0))
  ComboBoxGadget(0,10,10,250,20)
  AddGadgetItem(0,-1,"ComboBox")
  ButtonGadget(2, 10, 70, 200, 20, "Liste von ComboBox anzeigen")
  
  Repeat
    EventID = WaitWindowEvent()
    Select EventID
      
    Case #PB_Event_Gadget
      If EventGadget()=2
        SendMessage_(GadgetID(0),#CB_SHOWDROPDOWN,1,1)
      EndIf
    EndSelect
  Until EventID=#PB_Event_CloseWindow
EndIf

0

158

Спасибо !!!

0

159

Решил не заморачиваться с первой "нормальной" программой а сделать наиболее просто, осталось добавить последнюю функцию, о которой выше шла речь. Как именно (лучше) создать секундомер обновления списка, чтобы при "Тике" таймера список обновлял только значения строк, и при этом не происходило сбивание выделенной записи, а также прокрутка списка на начало. Плюс к этому так же Важно, что бы при обновление списка отсутствовало мерцание, особенно когда интервал меньше секунды. Окончательный проект:

Код:
Procedure Timer1()
ClearGadgetItems(1)
EnumProcessInit()
Count=0
Repeat
   Temp.s=EnumProcess()
   If Temp=""
     Break
   EndIf
   AddGadgetItem(1,-1,Temp)
   CountMem=GetProcessMem(GetPidProcess(Temp))
   SetGadgetItemText(1, Count, Str(CountMem/1024)+" КБ",1)
   Count+1
ForEver
EndProcedure



OpenWindow(1,300,200,310,350,"Диспетчер задач",#PB_Window_MinimizeGadget|#PB_Window_ScreenCentered)

If CreateMenu(1,WindowID(1))
 MenuTitle("Файл")
  MenuItem(3,"Обновить")
  MenuItem(4,"Убить процесс")
  MenuBar()
  MenuItem(2,"Выход")
  MenuTitle("Помощь")
  MenuItem(8,"О программе")  
EndIf

If CreatePopupMenu(2)
 MenuItem(3, "Обновить")
 MenuBar()
 MenuItem(4,"Убить процесс")
 MenuItem(2,"Выход")
EndIf 

ListIconGadget(1,0,0,310,330,"Имя процесса",200,#PB_ListIcon_GridLines|#PB_ListIcon_FullRowSelect|#PB_ListIcon_AlwaysShowSelection)
AddGadgetColumn(1, 2, "Память", 80)
Timer1()
Repeat

event=WaitWindowEvent()
Menu=EventMenu()


If Event=#PB_Event_Gadget
  Select EventGadget()
     Case 1
       If EventType()=#PB_EventType_RightClick
         DisplayPopupMenu(2, WindowID(1)) ; Отображаем контекстное меню
       EndIf
  EndSelect
EndIf

If Event=#PB_Event_Menu
 Select Menu
  Case 2
   event=#PB_Event_CloseWindow
  Case 3
   Timer1()
  Case 4
    ProcessName.s=GetGadgetText(1)
    If ProcessName<>""
      PID=GetPidProcess(ProcessName) 
      If PID
        KillProcess(PID)
      EndIf
    EndIf
    Timer1()
  Case 8
   MessageRequester("О программе","Диспетчер задач. Сделано в PureBasic") 
 EndSelect
EndIf   


Until event=#PB_Event_CloseWindow

0

160

Как вариант, можно не очищать таблицу каждый раз, а сравнивать текущий список процессов с таблицей и добавлять/удалять строки.

0

161

Хм, интересно, но как реализовать все это практически знаний у меня не хватает  :dontknow:  Видимо необходимо как - то условием проверять

0

162

Нужно перебирать все строки таблицы и стравнивать имеющиеся там имена процессов с текущим списком процессов.

0

163

Как показать/скрыть гаджет ?
Использую ResizeGadget() изменяя местоположение вне окна и обратно.
Может есть другой правильный способ ?

0

164

Наверно есть свойство видимость каждого гаджета, но как именно оно выглядит не знаю.

0

165

Скажите пожалуйста, какое действие нужно написать, что бы изменить координаты кнопки или окна при клике. Наверно что то связанное с SetGadgetAttribute??

Отредактировано daiomik (03.04.2010 23:55:16)

0

166

daiomik написал(а):

Скажите пожалуйста, какое действие нужно написать, что бы изменить координаты кнопки или окна при клике

Используй функцию ResizeGadget
А для окна, ResizeWindow

0

167

А как можно вызвать раннее созданное событие и действие. Что бы по сто раз одно и тоже не писать. Вот у меня есть это действие:

Код:
If event=#PB_Event_Menu
 Select menu
  Case #MENU_10
    chislo.s=Str(Random(2))
    SetGadgetText(#Text_Result,chislo)
 EndSelect   
EndIf

0

168

Код:
procedure qq()
    chislo.s=Str(Random(2))
    SetGadgetText(#Text_Result,chislo)
endprocedure

If event=#PB_Event_Menu
 Select menu
  Case #MENU_10
     qq()
 EndSelect   
EndIf

qq()  ;еще раз вызвали
qq()  ;еще раз вызвали
qq()   ;еще раз вызвали

Отредактировано haav (04.04.2010 18:21:03)

0

169

Спасибо, совсем забыл про процедуры :)

0

170

Не подскажете как избежать изменение размеров гаджета при использование сплиттера? Я добавляю 2 гаджета и между ними сплиттер, в итоге он изменяет их размеры и отдельно ширину гаджетов изменить уже нельзя((

Код:
SplitterGadget(#Splitter, 5, 5, 200, 275,  #Listview_0, #Editor_0,#PB_Splitter_Vertical)

0

171

daiomik написал(а):

Не подскажете как избежать изменение размеров гаджета при использование сплиттера? Я добавляю 2 гаджета и между ними сплиттер, в итоге он изменяет их размеры и отдельно ширину гаджетов изменить уже нельзя((

Насколько я понимаю он как раз и используется для автоматического регулирования размеров гаджетов. Если тебе нужен разграничитель можешь попробовать на это место кнопку с размерами малой ширины(если конечно по ширине разграничиваешь.

0

172

Почему у меня не соблюдается следующее условие:

Код:
text.s=GetGadgetText(#String_0)
    If text=""
     AddGadgetItem(#ListIcon_1,1,GetGadgetText(#String_0))
    Else
     MessageRequester("Ошибка","Введите название записи")
    EndIf

А именно If text=""

0

173

Сам додумался. Оказывается ошибся действием. Надо было так:

Код:
text.s=GetGadgetText(#String_0)
    If text=""
     MessageRequester("Ошибка","Введите название записи")
    Else
     AddGadgetItem(#ListIcon_1,1,GetGadgetText(#String_0))
     
    EndIf

0

174

Еще один вопрос: Мне нужно удалить выделенную запись в ListIconGadget. Как узнать Position это выделенной строчки?
PS. Снова разобрался. Применил GetGadgetState

Отредактировано daiomik (08.04.2010 15:49:57)

0

175

В таблице можно выделить несколько строк.
Для того, чтобы узнать выделена строка или нет, нужно в цикле "пройтись" по всем строкам, с помощью GetGadgetItemState

0

176

У меня есть связанный список и в некоторой процедуре происходит считывание этого списка с помощью цикла:

Код:
While NextElement(zapisi())     
    AddGadgetItem(#ListIcon_1,1,zapisi())                        
Wend

Вопрос: что именно надо дописать в условии цикла, что бы происходило считывание информации построчно пока не встретим запись  """  ???

0

177

Посмотри справку по командам FindString  и  Mid

0

178

Как создать событие двойного клика по записи списка?
PS. Разобрался

Отредактировано daiomik (09.04.2010 19:02:18)

0

179

Как можно получить номер выделенной строчки в ListIconGadget??

0

180

номерСтр =GetGadgetState(#имя)

Отредактировано mirashic (09.04.2010 23:17:59)

0


Вы здесь » PureBasic - форум » Вопросы по PureBasic » Вопросы новичка