in src/native/windows/apps/prunmgr/prunmgr.c [1420:1579]
INT_PTR CALLBACK __stopProperty(HWND hDlg,
UINT uMessage,
WPARAM wParam,
LPARAM lParam)
{
LPPSHNOTIFY lpShn;
LPWSTR lpBuf, b;
DWORD v;
switch (uMessage) {
case WM_INITDIALOG:
{
startPage = 5;
if (!bpropCentered)
apxCenterWindow(GetParent(hDlg), NULL);
bpropCentered = TRUE;
ComboBox_AddStringW(GetDlgItem(hDlg, IDC_PPSMODE), L"exe");
ComboBox_AddStringW(GetDlgItem(hDlg, IDC_PPSMODE), L"jvm");
ComboBox_AddStringW(GetDlgItem(hDlg, IDC_PPSMODE), _s_java);
if ((lpBuf = apxRegistryGetStringW(hRegserv, APXREG_PARAMSOFTWARE,
_s_stop, L"Class")) != NULL) {
SetDlgItemTextW(hDlg, IDC_PPSCLASS, lpBuf);
apxFree(lpBuf);
}
if ((lpBuf = apxRegistryGetStringW(hRegserv, APXREG_PARAMSOFTWARE,
_s_stop, L"Image")) != NULL) {
SetDlgItemTextW(hDlg, IDC_PPSIMAGE, lpBuf);
apxFree(lpBuf);
}
if ((lpBuf = apxRegistryGetStringW(hRegserv, APXREG_PARAMSOFTWARE,
_s_stop, L"WorkingPath")) != NULL) {
SetDlgItemTextW(hDlg, IDC_PPSWPATH, lpBuf);
apxFree(lpBuf);
}
if ((lpBuf = apxRegistryGetStringW(hRegserv, APXREG_PARAMSOFTWARE,
_s_stop, L"Method")) != NULL) {
SetDlgItemTextW(hDlg, IDC_PPSMETHOD, lpBuf);
apxFree(lpBuf);
}
if ((lpBuf = apxRegistryGetMzStrW(hRegserv, APXREG_PARAMSOFTWARE,
_s_stop, L"Params", NULL, NULL)) != NULL) {
b = apxMszToCRLFW(hPool, lpBuf);
SetDlgItemTextW(hDlg, IDC_PPSARGS, b);
apxFree(lpBuf);
apxFree(b);
}
v = apxRegistryGetNumberW(hRegserv, APXREG_PARAMSOFTWARE,
_s_stop, L"Timeout");
{
CHAR bn[32];
wsprintfA(bn, "%d", v);
SetDlgItemTextA(hDlg, IDC_PPSTIMEOUT, bn);
}
if ((lpBuf = apxRegistryGetStringW(hRegserv, APXREG_PARAMSOFTWARE,
_s_stop, L"Mode")) != NULL) {
if (!lstrcmpiW(lpBuf, L"jvm")) {
ComboBox_SetCurSel(GetDlgItem(hDlg, IDC_PPSMODE), 1);
}
else if (!lstrcmpiW(lpBuf, _s_java)) {
ComboBox_SetCurSel(GetDlgItem(hDlg, IDC_PPSMODE), 2);
EnableWindow(GetDlgItem(hDlg, IDC_PPSMETHOD), FALSE);
}
else {
ComboBox_SetCurSel(GetDlgItem(hDlg, IDC_PPSMODE), 0);
EnableWindow(GetDlgItem(hDlg, IDC_PPSCLASS), FALSE);
EnableWindow(GetDlgItem(hDlg, IDC_PPSIMAGE), TRUE);
EnableWindow(GetDlgItem(hDlg, IDC_PPSBIMAGE), TRUE);
EnableWindow(GetDlgItem(hDlg, IDC_PPSMETHOD), FALSE);
}
apxFree(lpBuf);
}
}
break;
case WM_COMMAND:
switch (LOWORD(wParam)) {
case IDC_PPSBWPATH:
lpBuf = apxBrowseForFolderW(hDlg, apxLoadResourceW(IDS_PPWPATH, 0));
if (lpBuf) {
SetDlgItemTextW(hDlg, IDC_PPSWPATH, lpBuf);
apxFree(lpBuf);
PropSheet_Changed(GetParent(hDlg), hDlg);
SET_BIT_FLAG(_propertyChanged, 6);
}
break;
case IDC_PPSBIMAGE:
lpBuf = apxGetFileNameW(hDlg, apxLoadResourceW(IDS_PPIMAGE, 0),
apxLoadResourceW(IDS_EXEFILES, 1), NULL,
NULL, TRUE, NULL);
if (lpBuf) {
SetDlgItemTextW(hDlg, IDC_PPSIMAGE, lpBuf);
apxFree(lpBuf);
PropSheet_Changed(GetParent(hDlg), hDlg);
SET_BIT_FLAG(_propertyChanged, 6);
}
break;
case IDC_PPSCLASS:
case IDC_PPSMETHOD:
case IDC_PPSTIMEOUT:
case IDC_PPSARGS:
case IDC_PPSIMAGE:
case IDC_PPSWPATH:
if (HIWORD(wParam) == EN_CHANGE) {
PropSheet_Changed(GetParent(hDlg), hDlg);
SET_BIT_FLAG(_propertyChanged, 6);
}
break;
case IDC_PPSMODE:
if (HIWORD(wParam) == CBN_SELCHANGE) {
int i;
PropSheet_Changed(GetParent(hDlg), hDlg);
SET_BIT_FLAG(_propertyChanged, 6);
i = ComboBox_GetCurSel(GetDlgItem(hDlg, IDC_PPSMODE));
if (i == 0) {
EnableWindow(GetDlgItem(hDlg, IDC_PPSCLASS), FALSE);
EnableWindow(GetDlgItem(hDlg, IDC_PPSIMAGE), TRUE);
EnableWindow(GetDlgItem(hDlg, IDC_PPSBIMAGE), TRUE);
EnableWindow(GetDlgItem(hDlg, IDC_PPSMETHOD), FALSE);
}
else if (i == 1) {
EnableWindow(GetDlgItem(hDlg, IDC_PPSCLASS), TRUE);
EnableWindow(GetDlgItem(hDlg, IDC_PPSIMAGE), FALSE);
EnableWindow(GetDlgItem(hDlg, IDC_PPSBIMAGE), FALSE);
EnableWindow(GetDlgItem(hDlg, IDC_PPSMETHOD), TRUE);
} else {
EnableWindow(GetDlgItem(hDlg, IDC_PPSCLASS), TRUE);
EnableWindow(GetDlgItem(hDlg, IDC_PPSIMAGE), FALSE);
EnableWindow(GetDlgItem(hDlg, IDC_PPSBIMAGE), FALSE);
EnableWindow(GetDlgItem(hDlg, IDC_PPSMETHOD), FALSE);
}
}
break;
}
break;
case WM_NOTIFY:
lpShn = (LPPSHNOTIFY )lParam;
switch (lpShn->hdr.code) {
case PSN_APPLY: /* sent when OK or Apply button pressed */
if (__generalStopSave(hDlg))
PropSheet_UnChanged(GetParent(hDlg), hDlg);
else {
SET_BIT_FLAG(_propertyChanged, 6);
SetWindowLong(hDlg, DWLP_MSGRESULT,
PSNRET_INVALID_NOCHANGEPAGE);
return TRUE;
}
break;
}
break;
default:
break;
}
return FALSE;
}