Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/54: Рейтинг темы: голосов - 54, средняя оценка - 4.93
146 / 118 / 8
Регистрация: 09.03.2010
Сообщений: 150

Отключение процессов (пишу диспетчер )

20.03.2010, 21:48. Показов 10786. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пытаюсь создать свой диспетчер задач - и на первых попытках столкнулся с постоянно возникающим исключением "нет доступа". Причем через виндовосовсий диспетчер все процы нормально вырубаются - (те что нельзя плюс те что нужны мне я внес в список исключений.) Причем исключение это вчера например особо не вылазило - и процессы у меня нормально отрубались, а сегодня опять двадцать пять.
Наверняка кто то пытался делать что то подобное - поэтом жду любых советов.
Подвопрос: как удалить из комбо бокса элемент после того как процесс был выбран и отключен (в ручном режиме и когда все разом)
Можно конечно делать полную очистку коллекции элементов и заново загружать список имеющихся процессов - но ведь можно и по нормальному сделать?


C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
namespace Process
{
   
    public partial class Window1 : Window
    {
 
        Hashtable h = new Hashtable();
 
        public Window1()
        {
            InitializeComponent();
       }
 
       private void Window_Loaded(object sender, RoutedEventArgs e)
        {
 
            System.Diagnostics.Process[] AllPROCESSES = System.Diagnostics.Process.GetProcesses();
            
          foreach (System.Diagnostics.Process x in AllPROCESSES)
            {
              // x.MainWindowTitle -показывается только для активных приложений
              string s = x.ProcessName + x.WorkingSet64 / 1024;
//неудачная попытка отформатировать вывод  инфы в бокс - не знаю как правильно сделать
              string s2 = String.Format("{0}            {1}" , x.ProcessName, x.WorkingSet64 / 1024);
              //combo.SelectionBoxItemStringFormat = "{0}  {1}    {2}";
              h[x.ProcessName] = s2;
              //combo.ItemStringFormat = "{0} :{1} :{2}";
                combo.Items.Add(s2);
               
                combo.ToolTip = "Список процессов";
            }
            
           
        }
 
        private void Button_Kill_All(object sender, RoutedEventArgs e)
        {
 
 
//список процессов которые отрубать не надо
           ArrayList name = new ArrayList();
            name.Add("taskmgr");
            name.Add("explorer");
            name.Add("svchost");
            name.Add("lsass");
            name.Add("csrss");
            name.Add("smss");
            name.Add("nvsvc32");
            name.Add("firefox");
            name.Add("rundll32");
            name.Add("sqlservr");
            name.Add("avguard");
            name.Add("winlogon");
            name.Add("avgnt");
            name.Add("services");
            name.Add("sched");
            name.Add("System");
            name.Add("MyTestFunc");
            name.Add("VCSExpress");
            name.Add("Process.vshost");
            name.Add("ida");
            name.Add("PresentationFontCache");
            //name.Add("ctfmon.exe");
            //name.Add("wdfmgr.exe");
            name.Add("pptd40nt");
 
 
            //получаем массив всех процессов
            System.Diagnostics.Process[] AllPROCESSES = System.Diagnostics.Process.GetProcesses();
            //объявляем массив для компонентов конкретного процесса
            System.Diagnostics.Process[] process;
 
            for (int j = 0; j < AllPROCESSES.Length; j++)
            {
                process = System.Diagnostics.Process.GetProcessesByName(AllPROCESSES[j].ProcessName);
                
                if (!name.Contains(AllPROCESSES[j].ProcessName))
                {
                    foreach (System.Diagnostics.Process p in process)
                    {
                        p.Kill();
                    }
 
                }
            }
 
        }
 
 
        private void Button_Click_1(object sender, RoutedEventArgs e)
        {
 
        }
 
        private void combo_Selected(object sender, RoutedEventArgs e)
        {
          
  
foreach (DictionaryEntry de in h)
          
           
    if (combo.SelectedValue.ToString() == de.Value.ToString())
             {
           System.Diagnostics.Process[] process = System.Diagnostics.Process.GetProcessesByName(de.Key.ToString());
 
           try
           {
               foreach (System.Diagnostics.Process x in process)
               {
                   x.Kill();
               }
               if (h.ContainsValue(de.Value))
               {
//типа попытки удалить элемент - из таблицы то вроде удаляется а вот из бокса нехочет.
                   //h.Remove(de.Value);
                   //combo.SelectedItem = "";
                   //combo.SelectedValue = "";
                   //combo.Text = "";
               }
           }
 
        catch (System.ComponentModel.Win32Exception)
            {
                MessageBox.Show("Отказано в доступе");
            }
 
           } 
 
         
        }
    }
}
Добавлено через 6 часов 18 минут
Неужели никто не в курсе?
я тут же понял как удалять элементы из ComboBox - combo.Items.Remove(combo.SelectedItem) - так удаляется выделенный элемент - что мне и надо.
Однако хотя само по себе это работает - вставка этого кода в функцию private void combo_Selected после цикла - функция отключает процесс при выборе элемента в диспетчере - приводит к исключению что в экземпляре не задана ссылка на объект
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
try
            {
                foreach (DictionaryEntry de in h)
                   
                    if (combo.SelectedItem.ToString() == de.Value.ToString())
                    {
//удаляем из хеш таблицы неужный элемент
                        h.Remove(de.Value);
                        //MessageBox.Show("значение удалено");
//удаляем выделенную строчку в комбобоксе
                        combo.Items.Remove(combo.SelectedItem);  вот на эту строчку и ругается
                        break;
                    }
            }
            catch (System.NullReferenceException t)
            {
                MessageBox.Show(t.GetBaseException() + "\n" + t.Source);
            }
и как это обойти?

Добавлено через 1 час 48 минут
Ладно. И с этим разобрался. Нельзя ставить вызов функции на событие изменения в селекторе - так как лишний вызов получаем при удалении элемента. Отсюда и исключение.

НО все таки что делать с исключением Отказано в доступе?
Почему некоторые процессы нормально отключаются, а некоторые категорически не хотят - хотя при этом тут же нормально отключаются через диспетчер задач?
Люди - ну хоть кто-нибудь знает в чем тут дело?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.03.2010, 21:48
Ответы с готовыми решениями:

Диспетчер процессов
Доброго времени суток всем кто читает данный пост. Пишу диспетчер приложений и столкнулся с проблемой: Решил что убивание процесса...

Диспетчер процессов(удаление процесса)
Доброго времени суток всем кто читает данный пост. Продолжаю писать свой диспетчер процессов и появился новый вопрос: Когда пытаюсь...

Диспетчер процессов не выводит информацию в DataGridView
Добрый вечер! Возникла проблема с реализацией данных в dataGridView , не могу понять, почему программа не выводит процессы туда. Вроде...

12
10 / 12 / 2
Регистрация: 13.01.2010
Сообщений: 363
21.03.2010, 14:52
хм, я не знаю как это может тебе помочь, но вот тебе пример:
У меня на ноуте стоит виста, и она блокировала скайпу доступ к микрофону. Я просто открыл свойства екзешника и поставил права скайпу на "разрешить все".
Может у тебя также получится сделать?)))
0
26 / 25 / 2
Регистрация: 26.02.2010
Сообщений: 96
21.03.2010, 17:02
может попробовать запустить вашу программу от имени администратора?
0
146 / 118 / 8
Регистрация: 09.03.2010
Сообщений: 150
21.03.2010, 18:05  [ТС]
R@Z()r,
в том и дело для того чтобы в экзешнике была такая настройка нужно как я понимаю изначально ее в коде прописать - то есть опять приходим к проблеме разрешения доступа к системным процессам программно.

Frozzeg,
как запустить дебаговую версию (отладка идет в Visual Studio Express) от имени администратора?
не понимаю...

Исключение вылазит при вызове метода Kill() к процессу или группе процессов.
В MSDN написано что такая ошибка Win32Exception может быть следствием следующих моментов:
Связанный процесс не мог быть завершен.
или Этот процесс закрывается.
или Связанный процесс является исполняемым файлом Win16.

Кто бы все это расшифровал?
И еще цитата:
"После вызова метода Kill следует вызвать метод WaitForExit для ожидания завершения процесса"
Как это метод применить к группе процессов не понял...
0
 Аватар для ReliableS
10 / 10 / 4
Регистрация: 07.12.2009
Сообщений: 31
21.03.2010, 21:50
Цитата Сообщение от erlik Посмотреть сообщение
Как это метод применить к группе процессов не понял...
Зачем к группе? Идите линейно - по очереди.
0
146 / 118 / 8
Регистрация: 09.03.2010
Сообщений: 150
22.03.2010, 00:41  [ТС]
ReliableS,
"Теория мой друг суха но зеленеет жизни древо..."
Примерчик бы кто дал.

Вот код - слегка измененный - который у меня отключает все процессы
C#
1
2
3
4
5
6
7
8
9
10
11
System.Diagnostics.Process[] AllPROCESSES = System.Diagnostics.Process.GetProcesses();
System.Diagnostics.Process current = System.Diagnostics.Process.GetCurrentProcess();
 
 for (int j = 0; j < AllPROCESSES.Length; j++)
            {
              if (!name.Contains(AllPROCESSES[j].ProcessName) && AllPROCESSES[j] != current)
                {
                  AllPROCESSES[j].Kill();
                  AllPROCESSES[j].WaitForExit();
                 }
            }
толку от WaitForExit() никакого...
0
 Аватар для ReliableS
10 / 10 / 4
Регистрация: 07.12.2009
Сообщений: 31
22.03.2010, 13:14
Цитата Сообщение от erlik Посмотреть сообщение
толку от WaitForExit() никакого...
Метод WaitForExit заставляем твою программу ожидать завершения процесса.

Цитата Сообщение от erlik Посмотреть сообщение
Примерчик бы кто дал.
В чем у тебя трудность я так и не понял.
Без студии набросал для тебя примерчик. Допустим у тебя есть checkedListBox.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
        /// <summary>
        /// Обновляет список запущенных процессов
        /// </summary>
        public void refresh_list_process()
        {
            Process[] proc = Process.GetProcesses();
            checkedListBox1.Items.Clear();
            for (int i = 0; i < proc.Length; i++)
                checkedListBox1.Items.Add(proc[i].ProcessName);
        }
 
        /// <summary>
        /// Завершает выбранные процессы
        /// </summary>
        public void kill_list_process()
        {
            string[] list = new string[checkedListBox1.CheckedItems.Count];
            checkedListBox1.CheckedItems.CopyTo(list, 0);
            
            Process[] proc = Process.GetProcesses();
            for (int i = 0; i < list.Length; i++)
            {
                try
                {
                    for (int j = 0; j < proc.Length; j++)
                        if (proc[j].ProcessName == list[i])
                        {
                            proc[j].Kill();
                            proc[j].WaitForExit();
                        }
                }
                catch { }
            }
        }
Должен отлично работать - снимать все выделенные процессы.

P.S. Массив proc можно объявить, но не инициализировать, вне процедур - public. И инициализировать только при обновлении списка. Так наверно будет лучше.
0
146 / 118 / 8
Регистрация: 09.03.2010
Сообщений: 150
22.03.2010, 13:50  [ТС]
ReliableS,
Попробуйте это проверить. И все поймете.
Во первых нельзя вот так как вы все процессы отрубать (попробуйте вручную проводник отрубить - он еще как отрубится однако комп тут же пойдет на перезагрузку) - нужно сделать список процессов которые отключать нельзя. Я сделал.
Во вторых система все равно откажет вам в доступе для отключения некоторых процессов.
В этом и проблема.
В остальном наши кода идентичны.

Добавлено через 30 минут
вот мой код (плюс некоторые варианты)

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
using System;
using System.IO;
using System.Collections.Generic;
using System.Collections;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Diagnostics;
using System.Security;
using System.Security.Permissions;
using Microsoft.Win32;
using System.Windows.Forms;
 
 
namespace Process
{
    //[HostProtectionAttribute(SecurityAction.Assert, SharedState = true, Synchronization = true,
     //ExternalProcessMgmt = true, SelfAffectingProcessMgmt = true)]
    //[PermissionSetAttribute(SecurityAction.Assert, Name = "FullTrust")]
    //[PermissionSetAttribute(SecurityAction.InheritanceDemand, Name = "FullTrust")]
 
    public partial class Window1 : Window
    {
 
        Hashtable h = new Hashtable();
        System.Diagnostics.Process[] AllPROCESSES = System.Diagnostics.Process.GetProcesses();
        System.Diagnostics.Process current = System.Diagnostics.Process.GetCurrentProcess();
       
        public Window1()
        {
            InitializeComponent();
        }
 
        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
 
            //System.Diagnostics.Process[] AllPROCESSES = System.Diagnostics.Process.GetProcesses();
 
            foreach (System.Diagnostics.Process x in AllPROCESSES)
            {
                //получаем колекцию потоков процесса
                //System.Diagnostics.ProcessThreadCollection threads = x.Threads;
                
                // x.MainWindowTitle -показывается только для активных приложений
                string s = x.ProcessName + x.WorkingSet64 / 1024;
                string s2 = String.Format("{0}            {1}", x.ProcessName, x.WorkingSet64 / 1024);
                //combo.SelectionBoxItemStringFormat = "{0}  {1}    {2}";
                h[x.ProcessName] = s2;
                //combo.ItemStringFormat = "{0} :{1} :{2}";
                combo.Items.Add(s2);
 
                combo.ToolTip = "Список процессов";
            }
 
 
        }
 
        private void Button_Kill_All(object sender, RoutedEventArgs e)
        {
 
 
 
            ArrayList name = new ArrayList();
            name.Add("taskmgr");
            name.Add("explorer");
            name.Add("svchost");
            name.Add("lsass");
            name.Add("csrss");
            name.Add("smss");
            name.Add("nvsvc32");
            name.Add("firefox");
            name.Add("rundll32");
            name.Add("sqlservr");
            name.Add("avguard");
            name.Add("winlogon");
            name.Add("avgnt");
            name.Add("services");
            name.Add("pptd40nt");
            name.Add("sched");
            name.Add("System");
            name.Add("MyTestFunc");
            name.Add("VCSExpress");
            name.Add("Process.vshost");
            name.Add("ida");
            name.Add("PresentationFontCache");
            name.Add("ctfmon");
            name.Add("spoolsv");
            name.Add("wAdskScSrv");
            name.Add("sqlwriter.exe");
            name.Add("raysat_3dsmax8s");
           
            
 
 
            //получаем массив всех процессов
            //System.Diagnostics.Process[] AllPROCESSES = System.Diagnostics.Process.GetProcesses();
           
            for (int j = 0; j < AllPROCESSES.Length; j++)
            {
                //объявляем массив для компонентов конкретного процесса
                //System.Diagnostics.Process[] process = System.Diagnostics.Process.GetProcessesByName(AllPROCESSES[j].ProcessName);
                if (!name.Contains(AllPROCESSES[j].ProcessName) && AllPROCESSES[j] != current)
                {
                    //foreach (System.Diagnostics.Process p in process)
                    //{
                        AllPROCESSES[j].Kill();
                        AllPROCESSES[j].WaitForExit();
                    //}
                }
                
            }
        }
 
      
 
//будет активирована когда процессы все таки начнут нормально отключаться
        void Run_List_Processes()
        {
            h = null;
            combo.Items.Clear();
            foreach (System.Diagnostics.Process x in AllPROCESSES)
            {
 
                string s2 = String.Format("{0}            {1}", x.ProcessName, x.WorkingSet64 / 1024);
                h[x.ProcessName] = s2;
                combo.Items.Add(s2);
 
            }
        }
 
 
       
 
 
        private void combo_Selected(object sender, RoutedEventArgs e)
        {
         //Del_Process();
            
            
        }
 
        private void Button_Del_Process2(object sender, RoutedEventArgs e)
        {
            
            if (combo.SelectedValue== null)
            {
                System.Windows.MessageBox.Show("Процесс не выбран");
                return;
            }
            string select = combo.SelectedValue.ToString();
 
            try
            {
 
                foreach (DictionaryEntry de in h)
                {
                    if (select == de.Value.ToString())
                    {
                        System.Diagnostics.Process[] process = System.Diagnostics.Process.GetProcessesByName(de.Key.ToString());
                         
                        foreach (System.Diagnostics.Process x in process)
                        {
                            x.Kill();
                            if (!x.HasExited)
                            {
                                x.WaitForExit();
                            }
                        }
                        
                        break;
                    }
                   
                }
                Del_Element();
            }
            catch (System.ComponentModel.Win32Exception w)
            {
                System.Windows.MessageBox.Show(w.GetBaseException() + "\n" + w.Source);
            }
        }
 
        //другой вариант отключения процессов по одиночке - более читабельный
        private void Button_Del_Process(object sender, RoutedEventArgs e)
        {
            if (combo.SelectedValue == null)
            {
                System.Windows.MessageBox.Show("Процесс не выбран");
                return;
            }
 
            string process_name = null;
            string select = combo.SelectedValue.ToString();
            foreach (DictionaryEntry de in h)
            {
                if (select == de.Value.ToString())
                {
                    process_name = de.Key.ToString();
                    break;
                }
            }
 
            try
            {
                if (process_name == null)
                {
                    return;
                }
 
                for (int j = 0; j < AllPROCESSES.Length; j++)
                {
                    if (AllPROCESSES[j].ProcessName == process_name)
                    {
                        AllPROCESSES[j].Kill();
                        break;
                    }
                }
                Del_Element();
            }
        
        catch (System.ComponentModel.Win32Exception w)
            {
                System.Windows.MessageBox.Show(w.GetBaseException() + "\n" + w.Source);
            }
        }
 
 
        void Del_Element()
        {
            try
            {
                foreach (DictionaryEntry de in h)
                {
                    if (combo.SelectedItem.ToString() == de.Value.ToString())
                    {
                        h.Remove(de.Value);
                        combo.Items.Remove(combo.SelectedItem);
                        break;
                    }
                }
            }
 
            catch (System.NullReferenceException t)
            {
                System.Windows.MessageBox.Show(t.GetBaseException() + "\n" + t.Source);
            }
        }
 
 
        void Key()
        {
 
   RegistryKey myKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run\", true);
   myKey.SetValue("Process", System.Windows.Forms.Application.ExecutablePath);
 
       }
    }
}
0
 Аватар для ReliableS
10 / 10 / 4
Регистрация: 07.12.2009
Сообщений: 31
22.03.2010, 20:21
Цитата Сообщение от erlik Посмотреть сообщение
нужно сделать список процессов которые отключать нельзя
Цитата Сообщение от erlik Посмотреть сообщение
система все равно откажет вам в доступе для отключения некоторых процессов.
Ну а в чем проблема? При ошибке снятия процесса говори об этом пользователю. К примеру так:

* пусть есть textbox1
Code
1
2
3
textbox1.ReadOnly = true
textbox1.Multiline = true
textbox1.ScrollBars = Vertical
* замени тело моей процедуры kill_list_process на это:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
        {
            string[] list = new string[checkedListBox1.CheckedItems.Count];
            checkedListBox1.CheckedItems.CopyTo(list, 0);
            
            Process[] proc = Process.GetProcesses();
            for (int i = 0; i < list.Length; i++)
            {
                for (int j = 0; j < proc.Length; j++)
                    if (proc[j].ProcessName == list[i])
                    {
                        try
                        {
                            proc[j].Kill();
                            proc[j].WaitForExit();
                        }
                        catch
                        {
                            textBox1.Text += DateTime.Now.ToString() + " : не удалось завершить процесс " + proc[j].ProcessName + " - недостаточно прав\r\n";
                        }
                    }
            }
        }
0
146 / 118 / 8
Регистрация: 09.03.2010
Сообщений: 150
22.03.2010, 21:21  [ТС]
ReliableS,
Ну сделал я ловлю ошибки отключения процесса в коде отключающем группу процессов - но это паллиатив. В итоге получаю уведомления шесть раза подряд - шесть процессов не хотят отключаться -и это никуда не годится. Так как через диспетчер они отключаются махом и без последствий для системы.
Реальное решение - в области получения всех прав на процессы. Неужели никто не в курсе как их получать?
0
CEO
Эксперт С++
 Аватар для Alligieri
2258 / 1248 / 57
Регистрация: 16.03.2009
Сообщений: 3,588
23.03.2010, 00:14
Работа с UAC
0
146 / 118 / 8
Регистрация: 09.03.2010
Сообщений: 150
24.03.2010, 14:37  [ТС]
Alligieri,
Спасибо за совет, но пока так и не смог разобраться как наделить свой код правами админа.

Та же фигня у меня происходит с перезаписью реестра.
создаю свой подраздел, пишу туда значения - все норм. Удаляю созданный подраздел - все норм. Создаю заново - и пытаюсь удалить не сам подраздел, а только значения - возникает исключение UnauthorizedAccessException. При этом у меня вверху кода стоит
[assembly: RegistryPermissionAttribute(SecurityActi on.RequestMinimum, ViewAndModify = "HKEY_CURRENT_USER")]
что по идее дает разрешение на перезапись указанного раздела.

В общем кто знает в чем тут дело - пожалуйста отпишитесь.

И по ходу возник еще одни мелкий вопрос: как получить заголовки все окон процесса?
Поясняю: есть метод MainWindowTitle который возвращает заголовок главного окна процесса.
Но к примеру у меня на компе открыт Notepad++ ,Визуал Студио Эксперсс, моя прога и Мозилла с кучей открытых вебстраниц.
Данный метод возвращает мне заголовки Notepad++ ,Визуал Студио Эксперсс, моя прога +верхнее окно Mozilla Firefox. Лезу в диспетчер задач винды в раздел приложения и вижу там заголовки всех открытых мною окон Mozilla Firefox - 18 штук.
Как это сделать как там? чтобы все окна активных процессов получить?
0
Комбайнёр
 Аватар для MAcK
1606 / 704 / 77
Регистрация: 27.05.2008
Сообщений: 2,535
24.03.2010, 14:50
1 вопрос = 1 тема
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.03.2010, 14:50
Помогаю со студенческими работами здесь

Диспетчер процессов
Доброго времени суток, прошу помощи. Необходимо создать диспетчер устройств, никак не могу починить класс. Выдаёт 9 ошибок в cpp'шнике. ...

Диспетчер процессов
При зажатии волшебной комбинации,выдается весь список,но диспетчер процессов отсутствует.Нашел через поиск его запуск,но почему-то выдает...

Наход процессов в диспетчер задач
Мне нужно - Если запущен определенный процесс в диспетчер задач то выход не предлагать ЭТО var h: HWND; begin h :=...

Диспетчер задач показывает более сотни процессов rundll32.exe
Такая вот штука: чего то компьютер стал плохо работать открываю диспетчер задач а там больше 100 процессов rundll32.exe что это такое?...

Отключение ненужных процессов
Проблема у знакомого. Службы я ему настроил, автозагрузку почистил, но всё равно при запуске системы висит 74 процесса(бук). Как убрать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru