+ service = (nssm_service_t *) l;\r
+\r
+ SetFocus(GetDlgItem(window, IDC_NAME));\r
+\r
+ HWND tabs;\r
+ HWND combo;\r
+ tabs = GetDlgItem(window, IDC_TAB1);\r
+ if (! tabs) return 0;\r
+\r
+ /* Set up tabs. */\r
+ TCITEM tab;\r
+ ZeroMemory(&tab, sizeof(tab));\r
+ tab.mask = TCIF_TEXT;\r
+\r
+ selected_tab = 0;\r
+\r
+ /* Application tab. */\r
+ if (service->native) tab.pszText = message_string(NSSM_GUI_TAB_NATIVE);\r
+ else tab.pszText = message_string(NSSM_GUI_TAB_APPLICATION);\r
+ tab.cchTextMax = (int) _tcslen(tab.pszText);\r
+ SendMessage(tabs, TCM_INSERTITEM, NSSM_TAB_APPLICATION, (LPARAM) &tab);\r
+ if (service->native) {\r
+ tablist[NSSM_TAB_APPLICATION] = dialog(MAKEINTRESOURCE(IDD_NATIVE), window, tab_dlg);\r
+ EnableWindow(tablist[NSSM_TAB_APPLICATION], 0);\r
+ EnableWindow(GetDlgItem(tablist[NSSM_TAB_APPLICATION], IDC_PATH), 0);\r
+ }\r
+ else tablist[NSSM_TAB_APPLICATION] = dialog(MAKEINTRESOURCE(IDD_APPLICATION), window, tab_dlg);\r
+ ShowWindow(tablist[NSSM_TAB_APPLICATION], SW_SHOW);\r
+\r
+ /* Details tab. */\r
+ tab.pszText = message_string(NSSM_GUI_TAB_DETAILS);\r
+ tab.cchTextMax = (int) _tcslen(tab.pszText);\r
+ SendMessage(tabs, TCM_INSERTITEM, NSSM_TAB_DETAILS, (LPARAM) &tab);\r
+ tablist[NSSM_TAB_DETAILS] = dialog(MAKEINTRESOURCE(IDD_DETAILS), window, tab_dlg);\r
+ ShowWindow(tablist[NSSM_TAB_DETAILS], SW_HIDE);\r
+\r
+ /* Set defaults. */\r
+ combo = GetDlgItem(tablist[NSSM_TAB_DETAILS], IDC_STARTUP);\r
+ SendMessage(combo, CB_INSERTSTRING, NSSM_STARTUP_AUTOMATIC, (LPARAM) message_string(NSSM_GUI_STARTUP_AUTOMATIC));\r
+ SendMessage(combo, CB_INSERTSTRING, NSSM_STARTUP_DELAYED, (LPARAM) message_string(NSSM_GUI_STARTUP_DELAYED));\r
+ SendMessage(combo, CB_INSERTSTRING, NSSM_STARTUP_MANUAL, (LPARAM) message_string(NSSM_GUI_STARTUP_MANUAL));\r
+ SendMessage(combo, CB_INSERTSTRING, NSSM_STARTUP_DISABLED, (LPARAM) message_string(NSSM_GUI_STARTUP_DISABLED));\r
+ SendMessage(combo, CB_SETCURSEL, NSSM_STARTUP_AUTOMATIC, 0);\r
+\r
+ /* Logon tab. */\r
+ tab.pszText = message_string(NSSM_GUI_TAB_LOGON);\r
+ tab.cchTextMax = (int) _tcslen(tab.pszText);\r
+ SendMessage(tabs, TCM_INSERTITEM, NSSM_TAB_LOGON, (LPARAM) &tab);\r
+ tablist[NSSM_TAB_LOGON] = dialog(MAKEINTRESOURCE(IDD_LOGON), window, tab_dlg);\r
+ ShowWindow(tablist[NSSM_TAB_LOGON], SW_HIDE);\r
+\r
+ /* Set defaults. */\r
+ CheckRadioButton(tablist[NSSM_TAB_LOGON], IDC_LOCALSYSTEM, IDC_ACCOUNT, IDC_LOCALSYSTEM);\r
+ set_logon_enabled(0);\r
+\r
+ /* Remaining tabs are only for services we manage. */\r
+ if (service->native) return 1;\r
+\r
+ /* Shutdown tab. */\r
+ tab.pszText = message_string(NSSM_GUI_TAB_SHUTDOWN);\r
+ tab.cchTextMax = (int) _tcslen(tab.pszText);\r
+ SendMessage(tabs, TCM_INSERTITEM, NSSM_TAB_SHUTDOWN, (LPARAM) &tab);\r
+ tablist[NSSM_TAB_SHUTDOWN] = dialog(MAKEINTRESOURCE(IDD_SHUTDOWN), window, tab_dlg);\r
+ ShowWindow(tablist[NSSM_TAB_SHUTDOWN], SW_HIDE);\r
+\r
+ /* Set defaults. */\r
+ SendDlgItemMessage(tablist[NSSM_TAB_SHUTDOWN], IDC_METHOD_CONSOLE, BM_SETCHECK, BST_CHECKED, 0);\r
+ SetDlgItemInt(tablist[NSSM_TAB_SHUTDOWN], IDC_KILL_CONSOLE, NSSM_KILL_CONSOLE_GRACE_PERIOD, 0);\r
+ SendDlgItemMessage(tablist[NSSM_TAB_SHUTDOWN], IDC_METHOD_WINDOW, BM_SETCHECK, BST_CHECKED, 0);\r
+ SetDlgItemInt(tablist[NSSM_TAB_SHUTDOWN], IDC_KILL_WINDOW, NSSM_KILL_WINDOW_GRACE_PERIOD, 0);\r
+ SendDlgItemMessage(tablist[NSSM_TAB_SHUTDOWN], IDC_METHOD_THREADS, BM_SETCHECK, BST_CHECKED, 0);\r
+ SetDlgItemInt(tablist[NSSM_TAB_SHUTDOWN], IDC_KILL_THREADS, NSSM_KILL_THREADS_GRACE_PERIOD, 0);\r
+ SendDlgItemMessage(tablist[NSSM_TAB_SHUTDOWN], IDC_METHOD_TERMINATE, BM_SETCHECK, BST_CHECKED, 0);\r
+\r
+ /* Restart tab. */\r
+ tab.pszText = message_string(NSSM_GUI_TAB_EXIT);\r
+ tab.cchTextMax = (int) _tcslen(tab.pszText);\r
+ SendMessage(tabs, TCM_INSERTITEM, NSSM_TAB_EXIT, (LPARAM) &tab);\r
+ tablist[NSSM_TAB_EXIT] = dialog(MAKEINTRESOURCE(IDD_APPEXIT), window, tab_dlg);\r
+ ShowWindow(tablist[NSSM_TAB_EXIT], SW_HIDE);\r
+\r
+ /* Set defaults. */\r
+ SetDlgItemInt(tablist[NSSM_TAB_EXIT], IDC_THROTTLE, NSSM_RESET_THROTTLE_RESTART, 0);\r
+ combo = GetDlgItem(tablist[NSSM_TAB_EXIT], IDC_APPEXIT);\r
+ SendMessage(combo, CB_INSERTSTRING, NSSM_EXIT_RESTART, (LPARAM) message_string(NSSM_GUI_EXIT_RESTART));\r
+ SendMessage(combo, CB_INSERTSTRING, NSSM_EXIT_IGNORE, (LPARAM) message_string(NSSM_GUI_EXIT_IGNORE));\r
+ SendMessage(combo, CB_INSERTSTRING, NSSM_EXIT_REALLY, (LPARAM) message_string(NSSM_GUI_EXIT_REALLY));\r
+ SendMessage(combo, CB_INSERTSTRING, NSSM_EXIT_UNCLEAN, (LPARAM) message_string(NSSM_GUI_EXIT_UNCLEAN));\r
+ SendMessage(combo, CB_SETCURSEL, NSSM_EXIT_RESTART, 0);\r
+\r
+ /* I/O tab. */\r
+ tab.pszText = message_string(NSSM_GUI_TAB_IO);\r
+ tab.cchTextMax = (int) _tcslen(tab.pszText) + 1;\r
+ SendMessage(tabs, TCM_INSERTITEM, NSSM_TAB_IO, (LPARAM) &tab);\r
+ tablist[NSSM_TAB_IO] = dialog(MAKEINTRESOURCE(IDD_IO), window, tab_dlg);\r
+ ShowWindow(tablist[NSSM_TAB_IO], SW_HIDE);\r
+\r
+ /* Rotation tab. */\r
+ tab.pszText = message_string(NSSM_GUI_TAB_ROTATION);\r
+ tab.cchTextMax = (int) _tcslen(tab.pszText) + 1;\r
+ SendMessage(tabs, TCM_INSERTITEM, NSSM_TAB_ROTATION, (LPARAM) &tab);\r
+ tablist[NSSM_TAB_ROTATION] = dialog(MAKEINTRESOURCE(IDD_ROTATION), window, tab_dlg);\r
+ ShowWindow(tablist[NSSM_TAB_ROTATION], SW_HIDE);\r
+\r
+ /* Set defaults. */\r
+ SetDlgItemInt(tablist[NSSM_TAB_ROTATION], IDC_ROTATE_SECONDS, 0, 0);\r
+ SetDlgItemInt(tablist[NSSM_TAB_ROTATION], IDC_ROTATE_BYTES_LOW, 0, 0);\r
+ set_rotation_enabled(0);\r
+\r
+ /* Environment tab. */\r
+ tab.pszText = message_string(NSSM_GUI_TAB_ENVIRONMENT);\r
+ tab.cchTextMax = (int) _tcslen(tab.pszText) + 1;\r
+ SendMessage(tabs, TCM_INSERTITEM, NSSM_TAB_ENVIRONMENT, (LPARAM) &tab);\r
+ tablist[NSSM_TAB_ENVIRONMENT] = dialog(MAKEINTRESOURCE(IDD_ENVIRONMENT), window, tab_dlg);\r
+ ShowWindow(tablist[NSSM_TAB_ENVIRONMENT], SW_HIDE);\r
+\r