Initial community commit
This commit is contained in:
parent
537bcbc862
commit
fc06254474
16440 changed files with 4239995 additions and 2 deletions
101
Src/Plugins/General/gen_crasher/crashDlg.cpp
Normal file
101
Src/Plugins/General/gen_crasher/crashDlg.cpp
Normal file
|
@ -0,0 +1,101 @@
|
|||
#include ".\crashdlg.h"
|
||||
#include ".\configdlg.h"
|
||||
#include ".\resource.h"
|
||||
#include ".\settings.h"
|
||||
#include "exceptionhandler.h"
|
||||
#include <strsafe.h>
|
||||
|
||||
extern Settings settings;
|
||||
extern PEXCEPTION_POINTERS gExceptionInfo;
|
||||
|
||||
BOOL CALLBACK CrashDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
UNREFERENCED_PARAMETER(lParam);
|
||||
switch (uMsg)
|
||||
{
|
||||
case WM_INITDIALOG:
|
||||
{
|
||||
// as we're loading things, make sure we've got a decent icon size to use in the second usage
|
||||
HICON hIcon = (HICON)LoadImage(GetModuleHandle(NULL),MAKEINTRESOURCE(102),IMAGE_ICON,48,48,LR_SHARED);
|
||||
SetClassLongPtr(hwndDlg, GCLP_HICON, (LONG_PTR)hIcon);
|
||||
|
||||
HWND hwndPrg = GetDlgItem(hwndDlg, IDC_PRG_COLLECT);
|
||||
SendMessage(hwndPrg, PBM_SETRANGE, 0, MAKELPARAM(0,100));
|
||||
SendMessage(hwndPrg, PBM_SETPOS, 0, 0);
|
||||
|
||||
// this will make sure that we've got the logo shown even when using a localised version
|
||||
SendDlgItemMessage(hwndDlg,IDC_BMP_LOGO,STM_SETIMAGE,IMAGE_ICON,(LPARAM)hIcon);
|
||||
|
||||
SetDlgItemText(hwndDlg, IDC_LBL_STEP, L"Analyzing settings...");
|
||||
settings.ClearTempData();
|
||||
|
||||
wchar_t waPath[2*_MAX_PATH] = {0};
|
||||
if (GetModuleFileName( NULL, waPath, 2*_MAX_PATH ))
|
||||
{
|
||||
settings.WriteWinamp(waPath);
|
||||
}
|
||||
|
||||
SetTimer(hwndDlg, 123, 1000, NULL);
|
||||
break;
|
||||
}
|
||||
case WM_TIMER:
|
||||
if (wParam == 123)
|
||||
{
|
||||
KillTimer(hwndDlg,wParam);
|
||||
HWND hwndPrg = GetDlgItem(hwndDlg, IDC_PRG_COLLECT);
|
||||
SetDlgItemText(hwndDlg, IDC_LBL_STEP, L"Generating log file...");
|
||||
SendMessage(hwndPrg, PBM_SETPOS, 30, 0);
|
||||
UpdateWindow(hwndDlg);
|
||||
if (settings.createLOG) settings.WriteLogCollectResult(CreateLog(gExceptionInfo, L"Winamp"));
|
||||
SetDlgItemText(hwndDlg, IDC_LBL_STEP, L"Generating dump file...");
|
||||
SendMessage(hwndPrg, PBM_SETPOS, 50, 0);
|
||||
UpdateWindow(hwndDlg);
|
||||
if (settings.createDMP) settings.WriteDmpCollectResult(CreateDump(gExceptionInfo));
|
||||
SetDlgItemText(hwndDlg, IDC_LBL_STEP, L"Starting error reporter...");
|
||||
SendMessage(hwndPrg, PBM_SETPOS, 90, 0);
|
||||
UpdateWindow(hwndDlg);
|
||||
STARTUPINFO si = {0};
|
||||
si.cb = sizeof(si);
|
||||
si.dwFlags = STARTF_USESHOWWINDOW;
|
||||
si.wShowWindow = SW_SHOW;
|
||||
|
||||
PROCESS_INFORMATION pi = {0};
|
||||
wchar_t reporter[512] = {0}, waPlugPath[MAX_PATH] = {0}, cmd[512] = {0}, *waPath = 0;
|
||||
GetModuleFileName( NULL, waPlugPath, MAX_PATH);
|
||||
CreatePathFromFullName(&waPath, waPlugPath);
|
||||
StringCchPrintf(reporter, 512, L"%s\\reporter.exe", waPath);
|
||||
StringCchPrintf(cmd, 512, L" \"%s\"", settings.GetPath());
|
||||
|
||||
if (CreateProcess(
|
||||
reporter, // name of executable module
|
||||
cmd, // command line string
|
||||
NULL, // process attributes
|
||||
NULL, // thread attributes
|
||||
FALSE, // handle inheritance option
|
||||
0, // creation flags
|
||||
NULL, // new environment block
|
||||
NULL, // current directory name
|
||||
&si, // startup information
|
||||
&pi)) // process information
|
||||
{
|
||||
SetDlgItemText(hwndDlg, IDC_LBL_STEP, L"Done.");
|
||||
SetTimer(hwndDlg, 126, 200, NULL);
|
||||
}
|
||||
else
|
||||
{
|
||||
SetDlgItemText(hwndDlg, IDC_LBL_STEP, L"Error. Unable to run reporter.");
|
||||
SetTimer(hwndDlg, 126, 3000, NULL);
|
||||
}
|
||||
|
||||
SendMessage(hwndPrg, PBM_SETPOS, 100, 0);
|
||||
UpdateWindow(hwndDlg);
|
||||
}
|
||||
else if (wParam == 126)
|
||||
{
|
||||
KillTimer(hwndDlg,wParam);
|
||||
DestroyWindow(hwndDlg);
|
||||
}
|
||||
break;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue