+ /* Process tab. */\r
+ tab.pszText = message_string(NSSM_GUI_TAB_PROCESS);\r
+ tab.cchTextMax = (int) _tcslen(tab.pszText);\r
+ SendMessage(tabs, TCM_INSERTITEM, NSSM_TAB_PROCESS, (LPARAM) &tab);\r
+ tablist[NSSM_TAB_PROCESS] = dialog(MAKEINTRESOURCE(IDD_PROCESS), window, tab_dlg);\r
+ ShowWindow(tablist[NSSM_TAB_PROCESS], SW_HIDE);\r
+\r
+ /* Set defaults. */\r
+ combo = GetDlgItem(tablist[NSSM_TAB_PROCESS], IDC_PRIORITY);\r
+ SendMessage(combo, CB_INSERTSTRING, NSSM_REALTIME_PRIORITY, (LPARAM) message_string(NSSM_GUI_REALTIME_PRIORITY_CLASS));\r
+ SendMessage(combo, CB_INSERTSTRING, NSSM_HIGH_PRIORITY, (LPARAM) message_string(NSSM_GUI_HIGH_PRIORITY_CLASS));\r
+ SendMessage(combo, CB_INSERTSTRING, NSSM_ABOVE_NORMAL_PRIORITY, (LPARAM) message_string(NSSM_GUI_ABOVE_NORMAL_PRIORITY_CLASS));\r
+ SendMessage(combo, CB_INSERTSTRING, NSSM_NORMAL_PRIORITY, (LPARAM) message_string(NSSM_GUI_NORMAL_PRIORITY_CLASS));\r
+ SendMessage(combo, CB_INSERTSTRING, NSSM_BELOW_NORMAL_PRIORITY, (LPARAM) message_string(NSSM_GUI_BELOW_NORMAL_PRIORITY_CLASS));\r
+ SendMessage(combo, CB_INSERTSTRING, NSSM_IDLE_PRIORITY, (LPARAM) message_string(NSSM_GUI_IDLE_PRIORITY_CLASS));\r
+ SendMessage(combo, CB_SETCURSEL, NSSM_NORMAL_PRIORITY, 0);\r
+\r
+ SendDlgItemMessage(tablist[NSSM_TAB_PROCESS], IDC_CONSOLE, BM_SETCHECK, BST_CHECKED, 0);\r
+\r
+ list = GetDlgItem(tablist[NSSM_TAB_PROCESS], IDC_AFFINITY);\r
+ n = num_cpus();\r
+ SendMessage(list, LB_SETCOLUMNWIDTH, 16, 0);\r
+ for (i = 0; i < n; i++) {\r
+ TCHAR buffer[3];\r
+ _sntprintf_s(buffer, _countof(buffer), _TRUNCATE, _T("%d"), i);\r
+ SendMessage(list, LB_ADDSTRING, 0, (LPARAM) buffer);\r
+ }\r
+\r
+ /*\r
+ Size to fit.\r
+ The box is high enough for four rows. It is wide enough for eight\r
+ columns without scrolling. With scrollbars it shrinks to two rows.\r
+ Note that the above only holds if we set the column width BEFORE\r
+ adding the strings.\r
+ */\r
+ if (n < 32) {\r
+ int columns = (n - 1) / 4;\r
+ RECT rect;\r
+ GetWindowRect(list, &rect);\r
+ int width = rect.right - rect.left;\r
+ width -= (7 - columns) * 16;\r
+ int height = rect.bottom - rect.top;\r
+ if (n < 4) height -= (int) SendMessage(list, LB_GETITEMHEIGHT, 0, 0) * (4 - n);\r
+ SetWindowPos(list, 0, 0, 0, width, height, SWP_NOMOVE | SWP_NOOWNERZORDER);\r
+ }\r
+ SendMessage(list, LB_SELITEMRANGE, 1, MAKELPARAM(0, n));\r
+\r
+ SendDlgItemMessage(tablist[NSSM_TAB_PROCESS], IDC_AFFINITY_ALL, BM_SETCHECK, BST_CHECKED, 0);\r
+ set_affinity_enabled(0);\r
+\r