diff --git a/2.x/trunk/plugins/Updater/VistaUpdater.c b/2.x/trunk/plugins/Updater/VistaUpdater.c index f6d4561fd..679de7f5f 100644 --- a/2.x/trunk/plugins/Updater/VistaUpdater.c +++ b/2.x/trunk/plugins/Updater/VistaUpdater.c @@ -520,9 +520,7 @@ VOID ShowUpdateTaskDialog(VOID) UpdateAvailablePage.pszMainInstruction = L"Checking for Updates..."; UpdateAvailablePage.pfCallback = TaskDlgWndProc; - hr = TaskDialogIndirect(&UpdateAvailablePage, &nButton, &nRadioButton, &fVerificationFlagChecked); - - if (!SUCCEEDED(hr)) + if (!SUCCEEDED(TaskDialogIndirect_I(&UpdateAvailablePage, &nButton, &nRadioButton, &fVerificationFlagChecked))) { // some error occurred...check hr to see what it is } @@ -532,7 +530,7 @@ VOID ShowUpdateTaskDialog(VOID) DisposeFileHandles(); } -HRESULT CALLBACK TaskDlgWndProc( +HRESULT CALLBACK TaskDlgUpdateAvailableWndProc( __in HWND hwndDlg, __in UINT uMsg, __in WPARAM wParam, @@ -601,6 +599,153 @@ HRESULT CALLBACK TaskDlgWndProc( return S_OK; } +HRESULT CALLBACK TaskDlgWndProc( + __in HWND hwndDlg, + __in UINT uMsg, + __in WPARAM wParam, + __in LPARAM lParam, + __in LONG_PTR lpRefData + ) +{ + switch (uMsg) + { + case TDN_CREATED: + { + SetProgressBarMarquee(hwndDlg, TRUE, 100); + _beginthread(VistaWorkerThreadStart, 0, hwndDlg); + } + break; + case TDN_DESTROYED: + { + DisposeConnection(); + DisposeStrings(); + DisposeFileHandles(); + } + break; + case TDN_BUTTON_CLICKED: + { + switch(wParam) + { + case 1005: + { + TASKDIALOGCONFIG tc = { 0 }; + tc.cbSize = sizeof(tc); + tc.hMainIcon = MAKEINTRESOURCEW(101); + tc.hwndParent = PhMainWndHandle; + tc.hInstance = PhLibImageBase; + tc.dwFlags = TDF_ALLOW_DIALOG_CANCELLATION | TDF_USE_COMMAND_LINKS | TDF_POSITION_RELATIVE_TO_WINDOW | TDF_SHOW_PROGRESS_BAR; + tc.pszWindowTitle = L"Process Hacker Updater"; + tc.pszMainInstruction = L"Downloading Update..."; + tc.pszContent = L"Initializing...\r\n\r\n"; + tc.dwCommonButtons = TDCBF_CLOSE_BUTTON; + tc.pfCallback = TaskDlgWndProc; + + _beginthread(VistaDownloadWorkerThreadStart, 0, hwndDlg); + + // Natigate to new page. + SendMessage(hwndDlg, TDM_NAVIGATE_PAGE, 0, (LPARAM)&tc); + + return S_FALSE; + } + break; + } + } + break; + case TDN_NAVIGATED: + { + //return S_FALSE; + } + break; + case TDN_HYPERLINK_CLICKED: + { + + } + break; + } + + return S_OK; +} + +HRESULT CALLBACK TaskDlgCheckingPageWndProc( + __in HWND hwndDlg, + __in UINT uMsg, + __in WPARAM wParam, + __in LPARAM lParam, + __in LONG_PTR lpRefData + ) +{ + switch (uMsg) + { + case TDN_CREATED: + { + SetProgressBarMarquee(hwndDlg, TRUE, 100); + + _beginthread(VistaWorkerThreadStart, 0, hwndDlg); + } + break; + case TDN_DESTROYED: + { + DisposeConnection(); + DisposeStrings(); + DisposeFileHandles(); + } + break; + case TDN_BUTTON_CLICKED: + { + switch(wParam) + { + case 1005: + { + TASKDIALOGCONFIG tc = { 0 }; + INT nButton; + + tc.cbSize = sizeof(tc); + tc.hwndParent = PhMainWndHandle; + tc.hInstance = PhLibImageBase; + tc.dwFlags = TDF_ALLOW_DIALOG_CANCELLATION | TDF_USE_COMMAND_LINKS | TDF_POSITION_RELATIVE_TO_WINDOW | TDF_SHOW_PROGRESS_BAR; + tc.pszWindowTitle = L"Process Hacker Updater"; + tc.pszMainInstruction = L"Downloading Update..."; + tc.pszContent = L"Initializing...\r\n\r\n"; + tc.dwCommonButtons = TDCBF_CLOSE_BUTTON; + tc.pfCallback = TaskDlgWndProc; + + _beginthread(VistaDownloadWorkerThreadStart, 0, hwndDlg); + + // Natigate to new page. + SendMessage(hwndDlg, TDM_NAVIGATE_PAGE, 0, (LPARAM)&tc); + + return S_FALSE; + } + break; + } + } + break; + case TDN_NAVIGATED: + { + //return S_FALSE; + } + break; + case TDN_HYPERLINK_CLICKED: + { + + } + break; + } + + return S_OK; +} + + + + + + + + + + + + static BOOL InitializeConnection( __in PCWSTR host, __in PCWSTR path diff --git a/2.x/trunk/plugins/Updater/main.c b/2.x/trunk/plugins/Updater/main.c index 56235147a..d72c48895 100644 --- a/2.x/trunk/plugins/Updater/main.c +++ b/2.x/trunk/plugins/Updater/main.c @@ -90,7 +90,7 @@ VOID NTAPI LoadCallback( __in_opt PVOID Context ) { - + TaskDialogIndirect_I = PhGetProcAddress(L"comctl32.dll", "TaskDialogIndirect"); } VOID NTAPI MainWindowShowingCallback( diff --git a/2.x/trunk/plugins/Updater/updater.h b/2.x/trunk/plugins/Updater/updater.h index c0cf54130..55eaf9b80 100644 --- a/2.x/trunk/plugins/Updater/updater.h +++ b/2.x/trunk/plugins/Updater/updater.h @@ -48,8 +48,8 @@ typedef enum _PH_UPDATER_STATE #define UPDATE_URL L"processhacker.sourceforge.net" #define UPDATE_FILE L"/update.php" -#define DOWNLOAD_SERVER L"sourceforge.net" -#define DOWNLOAD_PATH L"/projects/processhacker/files/processhacker2/%s/download" /* ?use_mirror=waix" */ +#define DOWNLOAD_SERVER L"mirror.eftel.com" //"sourceforge.net" +#define DOWNLOAD_PATH L"/ubuntu-dvd/oneiric/beta-1/ubuntu-11.10-beta1-dvd-i386.iso"// L"/projects/processhacker/files/processhacker2/%s/download" /* ?use_mirror=waix" */ #define BUFFER_LEN 512 #define UPDATE_MENUITEM 1 @@ -184,4 +184,14 @@ INT_PTR CALLBACK OptionsDlgProc( __in LPARAM lParam ); + +typedef HRESULT (WINAPI *_TaskDialogIndirect)( + __in const TASKDIALOGCONFIG *pTaskConfig, + __in int *pnButton, + __in int *pnRadioButton, + __in BOOL *pfVerificationFlagChecked + ); + +_TaskDialogIndirect TaskDialogIndirect_I; + #pragma endregion \ No newline at end of file