1 /*
2  *  ReactOS Task Manager
3  *
4  *  priority.c
5  *
6  *  Copyright (C) 1999 - 2001  Brian Palmer  <brianp@reactos.org>
7  *                2005         Klemens Friedl <frik85@reactos.at>
8  *
9  * This library is free software; you can redistribute it and/or
10  * modify it under the terms of the GNU Lesser General Public
11  * License as published by the Free Software Foundation; either
12  * version 2.1 of the License, or (at your option) any later version.
13  *
14  * This library is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
17  * Lesser General Public License for more details.
18  *
19  * You should have received a copy of the GNU Lesser General Public
20  * License along with this library; if not, write to the Free Software
21  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
22  */
23 
24 #include "precomp.h"
25 
26 void DoSetPriority(DWORD priority)
27 {
28     DWORD   dwProcessId;
29     HANDLE  hProcess;
30     WCHAR   szText[260];
31     WCHAR   szTitle[256];
32 
33     dwProcessId = GetSelectedProcessId();
34 
35     if (dwProcessId == 0)
36         return;
37 
38     LoadStringW(hInst, IDS_MSG_TASKMGRWARNING, szTitle, 256);
39     LoadStringW(hInst, IDS_MSG_WARNINGCHANGEPRIORITY, szText, 260);
40     if (MessageBoxW(hMainWnd, szText, szTitle, MB_YESNO|MB_ICONWARNING) != IDYES)
41         return;
42 
43     hProcess = OpenProcess(PROCESS_SET_INFORMATION, FALSE, dwProcessId);
44 
45     if (!hProcess)
46     {
47         GetLastErrorText(szText, 260);
48         LoadStringW(hInst, IDS_MSG_UNABLECHANGEPRIORITY, szTitle, 256);
49         MessageBoxW(hMainWnd, szText, szTitle, MB_OK|MB_ICONSTOP);
50         return;
51     }
52 
53     if (!SetPriorityClass(hProcess, priority))
54     {
55         GetLastErrorText(szText, 260);
56         LoadStringW(hInst, IDS_MSG_UNABLECHANGEPRIORITY, szTitle, 256);
57         MessageBoxW(hMainWnd, szText, szTitle, MB_OK|MB_ICONSTOP);
58     }
59 
60     CloseHandle(hProcess);
61 }
62