25 typedef struct _PROCESS_RECORD_CONTEXT
39 _In_ HWND ParentWindowHandle,
45 context.Record = Record;
57 _In_ PLARGE_INTEGER Time
61 LARGE_INTEGER currentTime;
62 SYSTEMTIME timeFields;
81 return String->Buffer;
95 if (uMsg == WM_INITDIALOG)
104 if (uMsg == WM_DESTROY)
118 BOOLEAN versionInfoInitialized;
125 context->Record->ProcessName->Buffer, (ULONG)context->Record->ProcessId);
129 processNameString = context->Record->ProcessName;
133 SendMessage(hwndDlg, WM_NEXTDLGCTL, (WPARAM)GetDlgItem(hwndDlg, IDOK),
TRUE);
134 SetWindowText(hwndDlg, processNameString->
Buffer);
161 (ULONG)context->Record->ParentProcessId)->
Buffer);
169 (ULONG)context->Record->ParentProcessId)->
Buffer);
175 versionInfoInitialized =
FALSE;
177 if (context->Record->FileName)
180 versionInfoInitialized =
TRUE;
185 SendMessage(GetDlgItem(hwndDlg,
IDC_OPENFILENAME), BM_SETIMAGE, IMAGE_BITMAP,
187 SendMessage(GetDlgItem(hwndDlg,
IDC_FILEICON), STM_SETICON,
188 (WPARAM)context->FileIcon, 0);
195 if (versionInfoInitialized)
198 if (!context->Record->FileName)
203 if (context->Record->CreateTime.QuadPart != 0)
208 if (context->Record->ExitTime.QuadPart != 0)
218 if (context->FileIcon)
219 DestroyIcon(context->FileIcon);
224 switch (LOWORD(wParam))
229 EndDialog(hwndDlg, IDOK);
234 if (context->Record->FileName)
249 PhShowError(hwndDlg, L
"The process has already terminated; only the process record is available.");