mirror of
https://github.com/Open-Shell/Open-Shell-Menu.git
synced 2026-06-14 03:16:38 +10:00
Initial commit
This commit is contained in:
@@ -0,0 +1,567 @@
|
||||
// Classic Shell (c) 2009-2016, Ivo Beltchev
|
||||
// Confidential information of Ivo Beltchev. Not for disclosure or distribution without prior written consent from the author
|
||||
|
||||
#define STRICT_TYPED_ITEMIDS
|
||||
#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS // some CString constructors will be explicit
|
||||
#include <windows.h>
|
||||
#include <atlbase.h>
|
||||
#include <atlwin.h>
|
||||
#include <atlstr.h>
|
||||
#include "resource.h"
|
||||
#include "StringUtils.h"
|
||||
#include "Settings.h"
|
||||
#include "SettingsUIHelper.h"
|
||||
#include "DownloadHelper.h"
|
||||
#include "ResourceHelper.h"
|
||||
#include "Translations.h"
|
||||
#include <shlobj.h>
|
||||
|
||||
|
||||
void ClosingSettings( HWND hWnd, int flags, int command )
|
||||
{
|
||||
}
|
||||
|
||||
void SettingChangedCallback( const CSetting *pSetting )
|
||||
{
|
||||
}
|
||||
|
||||
void UpgradeSettings( bool bShared )
|
||||
{
|
||||
}
|
||||
|
||||
void UpdateSettings( void )
|
||||
{
|
||||
CRegKey regKey;
|
||||
wchar_t language[100]=L"";
|
||||
if (regKey.Open(HKEY_LOCAL_MACHINE,L"Software\\IvoSoft\\ClassicShell",KEY_READ|KEY_WOW64_64KEY)==ERROR_SUCCESS)
|
||||
{
|
||||
ULONG size=_countof(language);
|
||||
if (regKey.QueryStringValue(L"DefaultLanguage",language,&size)!=ERROR_SUCCESS)
|
||||
language[0]=0;
|
||||
}
|
||||
UpdateSetting(L"Language",language,false);
|
||||
}
|
||||
|
||||
const wchar_t *GetDocRelativePath( void )
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static int g_LoadDialogs[]=
|
||||
{
|
||||
IDD_UPDATE,0x04000000,
|
||||
IDD_PROGRESS,0x04000004,
|
||||
0
|
||||
};
|
||||
|
||||
static CSetting g_Settings[]={
|
||||
{L"Update",CSetting::TYPE_GROUP},
|
||||
{L"Language",CSetting::TYPE_STRING,0,0,L"",CSetting::FLAG_SHARED},
|
||||
{L"Update",CSetting::TYPE_BOOL,0,0,1,CSetting::FLAG_SHARED},
|
||||
|
||||
{NULL}
|
||||
};
|
||||
|
||||
const int SETTING_UPDATE=2;
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
class CUpdateDlg: public CResizeableDlg<CUpdateDlg>
|
||||
{
|
||||
public:
|
||||
CUpdateDlg( void ) { m_Version=GetVersionEx(g_Instance); m_Data.Clear(); m_Data.newVersion=0xFFFFFFFF; m_Font=NULL; }
|
||||
BEGIN_MSG_MAP( CUpdateDlg )
|
||||
MESSAGE_HANDLER( WM_INITDIALOG, OnInitDialog )
|
||||
MESSAGE_HANDLER( WM_DESTROY, OnDestroy )
|
||||
MESSAGE_HANDLER( WM_SIZE, OnSize )
|
||||
MESSAGE_HANDLER( WM_GETMINMAXINFO, OnGetMinMaxInfo )
|
||||
MESSAGE_HANDLER( WM_CTLCOLORSTATIC, OnColorStatic )
|
||||
COMMAND_HANDLER( IDC_CHECKAUTOCHECK, BN_CLICKED, OnCheckAuto )
|
||||
COMMAND_HANDLER( IDC_BUTTONCHECKNOW, BN_CLICKED, OnCheckNow )
|
||||
COMMAND_HANDLER( IDC_BUTTONDOWNLOAD, BN_CLICKED, OnDownload )
|
||||
COMMAND_HANDLER( IDC_CHECKDONT, BN_CLICKED, OnDontRemind )
|
||||
COMMAND_HANDLER( IDOK, BN_CLICKED, OnOK )
|
||||
COMMAND_HANDLER( IDCANCEL, BN_CLICKED, OnCancel )
|
||||
NOTIFY_HANDLER( IDC_LINKWEB, NM_CLICK, OnWeb )
|
||||
NOTIFY_HANDLER( IDC_LINKWEB, NM_RETURN, OnWeb )
|
||||
END_MSG_MAP()
|
||||
|
||||
BEGIN_RESIZE_MAP
|
||||
RESIZE_CONTROL(IDC_STATICLATEST,MOVE_SIZE_X)
|
||||
RESIZE_CONTROL(IDC_EDITTEXT,MOVE_SIZE_X|MOVE_SIZE_Y)
|
||||
RESIZE_CONTROL(IDC_BUTTONDOWNLOAD,MOVE_MOVE_Y)
|
||||
RESIZE_CONTROL(IDC_CHECKDONT,MOVE_MOVE_Y)
|
||||
RESIZE_CONTROL(IDC_LINKWEB,MOVE_MOVE_Y)
|
||||
RESIZE_CONTROL(IDOK,MOVE_MOVE_X|MOVE_MOVE_Y)
|
||||
RESIZE_CONTROL(IDCANCEL,MOVE_MOVE_X|MOVE_MOVE_Y)
|
||||
END_RESIZE_MAP
|
||||
|
||||
void Run( void );
|
||||
void UpdateData( void );
|
||||
bool HasNewLanguage( void ) { return (m_Data.bNewLanguage && !m_Data.bIgnoreLanguage) && !(m_Data.bNewVersion && !m_Data.bIgnoreVersion); }
|
||||
|
||||
protected:
|
||||
// Handler prototypes:
|
||||
// LRESULT MessageHandler(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
|
||||
// LRESULT CommandHandler(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
|
||||
// LRESULT NotifyHandler(int idCtrl, LPNMHDR pnmh, BOOL& bHandled);
|
||||
LRESULT OnInitDialog( UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled );
|
||||
LRESULT OnDestroy( UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled );
|
||||
LRESULT OnSize( UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled );
|
||||
LRESULT OnOK( WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled );
|
||||
LRESULT OnCancel( WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled );
|
||||
LRESULT OnColorStatic( UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled );
|
||||
LRESULT OnCheckAuto( WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled );
|
||||
LRESULT OnCheckNow( WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled );
|
||||
LRESULT OnDownload( WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled );
|
||||
LRESULT OnDontRemind( WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled );
|
||||
LRESULT OnWeb( int idCtrl, LPNMHDR pnmh, BOOL& bHandled );
|
||||
|
||||
private:
|
||||
CWindow m_Tooltip;
|
||||
VersionData m_Data;
|
||||
DWORD m_Version;
|
||||
HFONT m_Font;
|
||||
|
||||
void UpdateUI( void );
|
||||
|
||||
static void NewVersionCallback( VersionData &data );
|
||||
};
|
||||
|
||||
static CUpdateDlg g_UpdateDlg;
|
||||
|
||||
LRESULT CUpdateDlg::OnInitDialog( UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled )
|
||||
{
|
||||
InitResize(MOVE_MODAL);
|
||||
|
||||
HICON icon=(HICON)LoadImage(g_Instance,MAKEINTRESOURCE(IDI_APPICON),IMAGE_ICON,GetSystemMetrics(SM_CXICON),GetSystemMetrics(SM_CYICON),LR_DEFAULTCOLOR);
|
||||
SendMessage(WM_SETICON,ICON_BIG,(LPARAM)icon);
|
||||
icon=(HICON)LoadImage(g_Instance,MAKEINTRESOURCE(IDI_APPICON),IMAGE_ICON,GetSystemMetrics(SM_CXSMICON),GetSystemMetrics(SM_CYSMICON),LR_DEFAULTCOLOR);
|
||||
SendMessage(WM_SETICON,ICON_SMALL,(LPARAM)icon);
|
||||
SetDlgItemText(IDC_STATICLATEST,L"");
|
||||
|
||||
HDC hdc=::GetDC(NULL);
|
||||
int dpi=GetDeviceCaps(hdc,LOGPIXELSY);
|
||||
::ReleaseDC(NULL,hdc);
|
||||
m_Font=CreateFont(-9*dpi/72,0,0,0,FW_NORMAL,0,0,0,DEFAULT_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,FIXED_PITCH,L"Consolas");
|
||||
if (m_Font)
|
||||
GetDlgItem(IDC_EDITTEXT).SetFont(m_Font);
|
||||
m_Tooltip.Create(TOOLTIPS_CLASS,m_hWnd,NULL,NULL,WS_POPUP|TTS_NOPREFIX);
|
||||
|
||||
TOOLINFO tool={sizeof(tool),TTF_SUBCLASS|TTF_IDISHWND,m_hWnd,(UINT_PTR)GetDlgItem(IDC_LINKWEB).m_hWnd};
|
||||
CString str=LoadStringEx(IDS_WEBSITE_TIP);
|
||||
tool.lpszText=(LPWSTR)(LPCWSTR)str;
|
||||
m_Tooltip.SendMessage(TTM_ADDTOOL,0,(LPARAM)&tool);
|
||||
|
||||
bool check=true;
|
||||
if (g_Settings[SETTING_UPDATE].value.vt==VT_I4)
|
||||
check=g_Settings[SETTING_UPDATE].value.intVal!=0;
|
||||
CheckDlgButton(IDC_CHECKAUTOCHECK,check?BST_CHECKED:BST_UNCHECKED);
|
||||
GetDlgItem(IDC_CHECKAUTOCHECK).EnableWindow(!(g_Settings[SETTING_UPDATE].flags&CSetting::FLAG_LOCKED_MASK));
|
||||
GetDlgItem(IDC_BUTTONCHECKNOW).EnableWindow(!(g_Settings[SETTING_UPDATE].flags&CSetting::FLAG_LOCKED_MASK) || check);
|
||||
UpdateUI();
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
LRESULT CUpdateDlg::OnDestroy( UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled )
|
||||
{
|
||||
if (m_Font) DeleteObject(m_Font);
|
||||
return 0;
|
||||
}
|
||||
|
||||
LRESULT CUpdateDlg::OnSize( UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled )
|
||||
{
|
||||
CResizeableDlg<CUpdateDlg>::OnSize();
|
||||
return 0;
|
||||
}
|
||||
|
||||
LRESULT CUpdateDlg::OnOK( WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled )
|
||||
{
|
||||
SaveSettings();
|
||||
DestroyWindow();
|
||||
return 0;
|
||||
}
|
||||
|
||||
LRESULT CUpdateDlg::OnCancel( WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled )
|
||||
{
|
||||
DestroyWindow();
|
||||
return 0;
|
||||
}
|
||||
|
||||
LRESULT CUpdateDlg::OnColorStatic( UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled )
|
||||
{
|
||||
if ((m_Data.bNewVersion || m_Data.bNewLanguage) && lParam==(LPARAM)GetDlgItem(IDC_STATICLATEST).m_hWnd)
|
||||
{
|
||||
HDC hdc=(HDC)wParam;
|
||||
SetTextColor(hdc,0xFF);
|
||||
SetBkMode(hdc,TRANSPARENT);
|
||||
return (LRESULT)GetSysColorBrush(COLOR_3DFACE);
|
||||
}
|
||||
bHandled=FALSE;
|
||||
return 0;
|
||||
}
|
||||
|
||||
LRESULT CUpdateDlg::OnCheckAuto( WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled )
|
||||
{
|
||||
CSettingsLockWrite lock;
|
||||
bool check=IsDlgButtonChecked(IDC_CHECKAUTOCHECK)==BST_CHECKED;
|
||||
g_Settings[SETTING_UPDATE].value=CComVariant(check?1:0);
|
||||
g_Settings[SETTING_UPDATE].flags&=~CSetting::FLAG_DEFAULT;
|
||||
UpdateUI();
|
||||
return 0;
|
||||
}
|
||||
|
||||
LRESULT CUpdateDlg::OnCheckNow( WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled )
|
||||
{
|
||||
UpdateData();
|
||||
UpdateUI();
|
||||
return 0;
|
||||
}
|
||||
|
||||
static HRESULT CALLBACK TaskDialogCallbackProc( HWND hwnd, UINT uNotification, WPARAM wParam, LPARAM lParam, LONG_PTR dwRefData )
|
||||
{
|
||||
if (uNotification==TDN_HYPERLINK_CLICKED)
|
||||
{
|
||||
ShellExecute(hwnd,L"open",(const wchar_t*)lParam,NULL,NULL,SW_SHOWNORMAL);
|
||||
}
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
LRESULT CUpdateDlg::OnDownload( WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled )
|
||||
{
|
||||
if (m_Data.bNewVersion)
|
||||
{
|
||||
if (!m_Data.downloadUrl.IsEmpty())
|
||||
{
|
||||
CString fname, error;
|
||||
DWORD res=DownloadNewVersion(m_hWnd,COMPONENT_UPDATE,m_Data.downloadUrl,m_Data.downloadSigner,fname,error);
|
||||
if (res==2)
|
||||
return 0;
|
||||
if (res)
|
||||
{
|
||||
SetDlgItemText(IDC_STATICLATEST,L"");
|
||||
PIDLIST_ABSOLUTE pidl;
|
||||
if (SUCCEEDED(SHParseDisplayName(fname,NULL,&pidl,0,NULL)))
|
||||
{
|
||||
HRESULT hr=SHOpenFolderAndSelectItems(pidl,0,NULL,0);
|
||||
ILFree(pidl);
|
||||
if (SUCCEEDED(hr))
|
||||
return 0;
|
||||
}
|
||||
ShellExecute(NULL,NULL,fname,NULL,NULL,SW_SHOWNORMAL);
|
||||
}
|
||||
else
|
||||
{
|
||||
error+=LoadStringEx(IDS_DOWNLOAD_TIP)+L"\r\n\r\n"+m_Data.updateLink;
|
||||
TASKDIALOGCONFIG task={sizeof(task),m_hWnd,NULL,TDF_ENABLE_HYPERLINKS|TDF_ALLOW_DIALOG_CANCELLATION|TDF_USE_HICON_MAIN,TDCBF_OK_BUTTON};
|
||||
CString title=LoadStringEx(IDS_UPDATE_TITLE);
|
||||
task.pszWindowTitle=title;
|
||||
task.pszContent=error;
|
||||
task.hMainIcon=LoadIcon(NULL,IDI_ERROR);
|
||||
task.pfCallback=TaskDialogCallbackProc;
|
||||
TaskDialogIndirect(&task,NULL,NULL,NULL);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (m_Data.bNewLanguage)
|
||||
{
|
||||
for (std::vector<LanguageVersionData>::const_iterator it=m_Data.languages.begin();it!=m_Data.languages.end();++it)
|
||||
{
|
||||
if (_wcsicmp(m_Data.newLanguage,it->language)==0)
|
||||
{
|
||||
CString error;
|
||||
DWORD res=DownloadLanguageDll(m_hWnd,COMPONENT_UPDATE,*it,error);
|
||||
if (res==2)
|
||||
return 0;
|
||||
if (res)
|
||||
{
|
||||
MessageBox(LoadStringEx(it->bBasic?IDS_LANGUAGE_SUCCESS2:IDS_LANGUAGE_SUCCESS),LoadStringEx(IDS_UPDATE_TITLE),MB_OK|(it->bBasic?MB_ICONWARNING:MB_ICONINFORMATION));
|
||||
SetDlgItemText(IDC_STATICLATEST,L"");
|
||||
}
|
||||
else
|
||||
{
|
||||
error+=LoadStringEx(IDS_DOWNLOAD_TIP)+L"\r\n\r\n"+m_Data.languageLink;
|
||||
TASKDIALOGCONFIG task={sizeof(task),m_hWnd,NULL,TDF_ENABLE_HYPERLINKS|TDF_ALLOW_DIALOG_CANCELLATION|TDF_USE_HICON_MAIN,TDCBF_OK_BUTTON};
|
||||
CString title=LoadStringEx(IDS_UPDATE_TITLE);
|
||||
task.pszWindowTitle=title;
|
||||
task.pszContent=error;
|
||||
task.hMainIcon=LoadIcon(NULL,IDI_ERROR);
|
||||
task.pfCallback=TaskDialogCallbackProc;
|
||||
TaskDialogIndirect(&task,NULL,NULL,NULL);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
Assert(0); // NEWLanguage is not in the list
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
LRESULT CUpdateDlg::OnDontRemind( WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled )
|
||||
{
|
||||
CRegKey regKey;
|
||||
if (regKey.Open(HKEY_CURRENT_USER,L"Software\\IvoSoft\\ClassicShell",KEY_READ|KEY_WRITE)!=ERROR_SUCCESS)
|
||||
regKey.Create(HKEY_CURRENT_USER,L"Software\\IvoSoft\\ClassicShell");
|
||||
if (m_Data.bNewVersion)
|
||||
{
|
||||
m_Data.bIgnoreVersion=(IsDlgButtonChecked(IDC_CHECKDONT)==BST_CHECKED);
|
||||
regKey.SetDWORDValue(L"RemindedVersion",m_Data.bIgnoreVersion?m_Data.newVersion:0);
|
||||
}
|
||||
else if (m_Data.bNewLanguage)
|
||||
{
|
||||
m_Data.bIgnoreLanguage=(IsDlgButtonChecked(IDC_CHECKDONT)==BST_CHECKED);
|
||||
regKey.SetDWORDValue(L"RemindedLangVersion",m_Data.bIgnoreLanguage?m_Data.encodedLangVersion:0);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
LRESULT CUpdateDlg::OnWeb( int idCtrl, LPNMHDR pnmh, BOOL& bHandled )
|
||||
{
|
||||
ShellExecute(m_hWnd,NULL,L"http://www.classicshell.net",NULL,NULL,SW_SHOWNORMAL);
|
||||
return 0;
|
||||
}
|
||||
|
||||
void CUpdateDlg::NewVersionCallback( VersionData &data )
|
||||
{
|
||||
g_UpdateDlg.m_Data.Swap(data);
|
||||
}
|
||||
|
||||
void CUpdateDlg::UpdateData( void )
|
||||
{
|
||||
if (!CheckForNewVersion(m_hWnd,COMPONENT_UPDATE,CHECK_UPDATE,NewVersionCallback))
|
||||
{
|
||||
m_Data.Clear();
|
||||
}
|
||||
}
|
||||
|
||||
void CUpdateDlg::UpdateUI( void )
|
||||
{
|
||||
if (m_Data.bValid)
|
||||
{
|
||||
if (m_Data.bNewVersion)
|
||||
{
|
||||
SetDlgItemText(IDC_STATICLATEST,LoadStringEx(IDS_OUTOFDATE));
|
||||
SetDlgItemText(IDC_EDITTEXT,m_Data.news);
|
||||
GetDlgItem(IDC_EDITTEXT).ShowWindow(SW_SHOW);
|
||||
GetDlgItem(IDC_BUTTONDOWNLOAD).ShowWindow(SW_SHOW);
|
||||
bool check=true;
|
||||
if (g_Settings[SETTING_UPDATE].value.vt==VT_I4)
|
||||
check=g_Settings[SETTING_UPDATE].value.intVal!=0;
|
||||
GetDlgItem(IDC_CHECKDONT).ShowWindow(check?SW_SHOW:SW_HIDE);
|
||||
CheckDlgButton(IDC_CHECKDONT,m_Data.bIgnoreVersion?BST_CHECKED:BST_UNCHECKED);
|
||||
TOOLINFO tool={sizeof(tool),TTF_SUBCLASS|TTF_IDISHWND,m_hWnd,(UINT_PTR)GetDlgItem(IDC_BUTTONDOWNLOAD).m_hWnd};
|
||||
tool.lpszText=(LPWSTR)(LPCWSTR)m_Data.downloadUrl;
|
||||
m_Tooltip.SendMessage(TTM_ADDTOOL,0,(LPARAM)&tool);
|
||||
}
|
||||
else if (m_Data.bNewLanguage)
|
||||
{
|
||||
SetDlgItemText(IDC_STATICLATEST,LoadStringEx(IDS_LANG_OUTOFDATE));
|
||||
SetDlgItemText(IDC_EDITTEXT,L"");
|
||||
GetDlgItem(IDC_EDITTEXT).ShowWindow(SW_HIDE);
|
||||
GetDlgItem(IDC_BUTTONDOWNLOAD).ShowWindow(SW_SHOW);
|
||||
bool check=true;
|
||||
if (g_Settings[SETTING_UPDATE].value.vt==VT_I4)
|
||||
check=g_Settings[SETTING_UPDATE].value.intVal!=0;
|
||||
GetDlgItem(IDC_CHECKDONT).ShowWindow(check?SW_SHOW:SW_HIDE);
|
||||
CheckDlgButton(IDC_CHECKDONT,m_Data.bIgnoreLanguage?BST_CHECKED:BST_UNCHECKED);
|
||||
TOOLINFO tool={sizeof(tool),TTF_SUBCLASS|TTF_IDISHWND,m_hWnd,(UINT_PTR)GetDlgItem(IDC_BUTTONDOWNLOAD).m_hWnd};
|
||||
for (std::vector<LanguageVersionData>::const_iterator it=m_Data.languages.begin();it!=m_Data.languages.end();++it)
|
||||
{
|
||||
if (_wcsicmp(m_Data.newLanguage,it->language)==0)
|
||||
{
|
||||
tool.lpszText=(LPWSTR)(LPCWSTR)it->url;
|
||||
break;
|
||||
}
|
||||
}
|
||||
m_Tooltip.SendMessage(TTM_ADDTOOL,0,(LPARAM)&tool);
|
||||
}
|
||||
else
|
||||
{
|
||||
SetDlgItemText(IDC_STATICLATEST,LoadStringEx(IDS_UPDATED));
|
||||
SetDlgItemText(IDC_EDITTEXT,L"");
|
||||
GetDlgItem(IDC_EDITTEXT).ShowWindow(SW_HIDE);
|
||||
GetDlgItem(IDC_BUTTONDOWNLOAD).ShowWindow(SW_HIDE);
|
||||
GetDlgItem(IDC_CHECKDONT).ShowWindow(SW_HIDE);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
SetDlgItemText(IDC_STATICLATEST,(m_Data.newVersion==0)?LoadStringEx(IDS_UPDATE_FAIL):L"");
|
||||
SetDlgItemText(IDC_EDITTEXT,L"");
|
||||
GetDlgItem(IDC_EDITTEXT).ShowWindow(SW_HIDE);
|
||||
GetDlgItem(IDC_BUTTONDOWNLOAD).ShowWindow(SW_HIDE);
|
||||
GetDlgItem(IDC_CHECKDONT).ShowWindow(SW_HIDE);
|
||||
}
|
||||
Invalidate();
|
||||
}
|
||||
|
||||
void CUpdateDlg::Run( void )
|
||||
{
|
||||
DLGTEMPLATE *pTemplate=LoadDialogEx(IDD_UPDATE);
|
||||
Create(NULL,pTemplate);
|
||||
MSG msg;
|
||||
while (m_hWnd && GetMessage(&msg,0,0,0))
|
||||
{
|
||||
if ((msg.hwnd==m_hWnd || IsChild(msg.hwnd)) && IsDialogMessage(&msg))
|
||||
continue;
|
||||
TranslateMessage(&msg);
|
||||
DispatchMessage(&msg);
|
||||
}
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
LRESULT CALLBACK SubclassBalloonProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, UINT_PTR uIdSubclass, DWORD_PTR dwRefData )
|
||||
{
|
||||
if (uMsg==WM_LBUTTONUP)
|
||||
{
|
||||
LRESULT res=DefSubclassProc(hWnd,uMsg,wParam,lParam);
|
||||
if (SendMessage(hWnd,TTM_GETCURRENTTOOL,0,0))
|
||||
{
|
||||
TOOLINFO tool={sizeof(tool)};
|
||||
tool.uId=1;
|
||||
SendMessage(hWnd,TTM_TRACKACTIVATE,FALSE,(LPARAM)&tool);
|
||||
g_UpdateDlg.Run();
|
||||
}
|
||||
return res;
|
||||
}
|
||||
if (uMsg==WM_MOUSEACTIVATE)
|
||||
return MA_NOACTIVATE;
|
||||
return DefSubclassProc(hWnd,uMsg,wParam,lParam);
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
class COwnerWindow: public CWindowImpl<COwnerWindow>
|
||||
{
|
||||
public:
|
||||
DECLARE_WND_CLASS_EX(L"ClassicShellUpdate.COwnerWindow",0,COLOR_MENU)
|
||||
|
||||
// message handlers
|
||||
BEGIN_MSG_MAP( COwnerWindow )
|
||||
MESSAGE_HANDLER( WM_CLEAR, OnClear )
|
||||
END_MSG_MAP()
|
||||
|
||||
protected:
|
||||
LRESULT OnClear( UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled )
|
||||
{
|
||||
if (g_UpdateDlg)
|
||||
{
|
||||
g_UpdateDlg.PostMessage(WM_CLOSE);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
};
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
int WINAPI wWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpstrCmdLine, int nCmdShow )
|
||||
{
|
||||
INITCOMMONCONTROLSEX init={sizeof(init),ICC_STANDARD_CLASSES};
|
||||
InitCommonControlsEx(&init);
|
||||
/*
|
||||
VersionData data;
|
||||
data.Load(L"D:\\Work\\ClassicShell\\ClassicShellSetup\\Final\\update_4.0.4.ver",false);
|
||||
return 0;
|
||||
*/
|
||||
// prevent multiple instances from running on the same desktop
|
||||
// the assumption is that multiple desktops for the same user will have different name (but may repeat across users)
|
||||
wchar_t userName[256];
|
||||
DWORD len=_countof(userName);
|
||||
GetUserName(userName,&len);
|
||||
len=0;
|
||||
HANDLE desktop=GetThreadDesktop(GetCurrentThreadId());
|
||||
GetUserObjectInformation(desktop,UOI_NAME,NULL,0,&len);
|
||||
wchar_t *deskName=(wchar_t*)malloc(len);
|
||||
GetUserObjectInformation(desktop,UOI_NAME,deskName,len,&len);
|
||||
|
||||
wchar_t mutexName[1024];
|
||||
Sprintf(mutexName,_countof(mutexName),L"ClassicShellUpdate.Mutex.%s.%s",userName,deskName);
|
||||
free(deskName);
|
||||
|
||||
HANDLE hMutex=CreateMutex(NULL,TRUE,mutexName);
|
||||
if (GetLastError()==ERROR_ALREADY_EXISTS || GetLastError()==ERROR_ACCESS_DENIED)
|
||||
return 0;
|
||||
|
||||
CoInitialize(NULL);
|
||||
g_Instance=hInstance;
|
||||
InitSettings(g_Settings,COMPONENT_UPDATE,NULL);
|
||||
CString language=GetSettingString(L"Language");
|
||||
ParseTranslations(NULL,language);
|
||||
|
||||
g_Instance=hInstance;
|
||||
|
||||
HINSTANCE resInstance=LoadTranslationDll(language);
|
||||
|
||||
LoadTranslationResources(resInstance,g_LoadDialogs);
|
||||
|
||||
if (resInstance)
|
||||
FreeLibrary(resInstance);
|
||||
|
||||
int time0=timeGetTime();
|
||||
|
||||
COwnerWindow ownerWindow;
|
||||
ownerWindow.Create(NULL,0,0,WS_POPUP);
|
||||
if (wcsstr(lpstrCmdLine,L"-popup")!=NULL)
|
||||
{
|
||||
g_UpdateDlg.UpdateData();
|
||||
// wait at least 5 seconds before showing the balloon
|
||||
int sleep=5000-(timeGetTime()-time0);
|
||||
if (sleep>0)
|
||||
Sleep(sleep);
|
||||
HWND balloon=CreateWindowEx(WS_EX_TOPMOST|WS_EX_TOOLWINDOW|(IsLanguageRTL()?WS_EX_LAYOUTRTL:0),TOOLTIPS_CLASS,NULL,WS_POPUP|TTS_CLOSE|TTS_NOPREFIX,0,0,0,0,NULL,NULL,g_Instance,NULL);
|
||||
SendMessage(balloon,TTM_SETMAXTIPWIDTH,0,500);
|
||||
TOOLINFO tool={sizeof(tool),TTF_ABSOLUTE|TTF_TRANSPARENT|TTF_TRACK|(IsLanguageRTL()?TTF_RTLREADING:0)};
|
||||
tool.uId=1;
|
||||
CString message=LoadStringEx(g_UpdateDlg.HasNewLanguage()?IDS_LANG_NEWVERSION:IDS_NEWVERSION);
|
||||
tool.lpszText=(wchar_t*)(const wchar_t*)message;
|
||||
SendMessage(balloon,TTM_ADDTOOL,0,(LPARAM)&tool);
|
||||
SendMessage(balloon,TTM_SETTITLE,(WPARAM)LoadIcon(g_Instance,MAKEINTRESOURCE(IDI_APPICON)),(LPARAM)(const wchar_t*)LoadStringEx(IDS_UPDATE_TITLE));
|
||||
APPBARDATA appbar={sizeof(appbar)};
|
||||
SHAppBarMessage(ABM_GETTASKBARPOS,&appbar);
|
||||
MONITORINFO info={sizeof(info)};
|
||||
GetMonitorInfo(MonitorFromWindow(appbar.hWnd,MONITOR_DEFAULTTOPRIMARY),&info);
|
||||
SendMessage(balloon,TTM_TRACKPOSITION,0,0);
|
||||
SendMessage(balloon,TTM_TRACKACTIVATE,TRUE,(LPARAM)&tool);
|
||||
RECT rc;
|
||||
GetWindowRect(balloon,&rc);
|
||||
LONG pos;
|
||||
if (appbar.uEdge==ABE_LEFT)
|
||||
pos=MAKELONG(info.rcWork.left,info.rcWork.bottom-rc.bottom+rc.top);
|
||||
else if (appbar.uEdge==ABE_RIGHT)
|
||||
pos=MAKELONG(info.rcWork.right-rc.right+rc.left,info.rcWork.bottom-rc.bottom+rc.top);
|
||||
else if (appbar.uEdge==ABE_TOP)
|
||||
pos=MAKELONG(IsLanguageRTL()?info.rcWork.left:info.rcWork.right-rc.right+rc.left,info.rcWork.top);
|
||||
else
|
||||
pos=MAKELONG(IsLanguageRTL()?info.rcWork.left:info.rcWork.right-rc.right+rc.left,info.rcWork.bottom-rc.bottom+rc.top);
|
||||
SendMessage(balloon,TTM_TRACKPOSITION,0,pos);
|
||||
SetWindowSubclass(balloon,SubclassBalloonProc,0,'CLSH');
|
||||
PlaySound(L"SystemNotification",NULL,SND_APPLICATION|SND_ALIAS|SND_ASYNC|SND_NODEFAULT|SND_SYSTEM);
|
||||
int time0=timeGetTime();
|
||||
while (IsWindowVisible(balloon))
|
||||
{
|
||||
if (time0 && (timeGetTime()-time0)>=15000)
|
||||
{
|
||||
time0=0;
|
||||
TOOLINFO tool={sizeof(tool)};
|
||||
tool.uId=1;
|
||||
SendMessage(balloon,TTM_TRACKACTIVATE,FALSE,(LPARAM)&tool);
|
||||
}
|
||||
MSG msg;
|
||||
while (PeekMessage(&msg,0,0,0,PM_REMOVE))
|
||||
{
|
||||
TranslateMessage(&msg);
|
||||
DispatchMessage(&msg);
|
||||
}
|
||||
Sleep(10);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
g_UpdateDlg.Run();
|
||||
}
|
||||
ownerWindow.DestroyWindow();
|
||||
CoUninitialize();
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3" >
|
||||
<assemblyIdentity
|
||||
version="1.0.0.0"
|
||||
processorArchitecture="X86"
|
||||
name="IvoSoft.ClassicStartMenu"
|
||||
type="win32"
|
||||
/>
|
||||
<description>Classic Shell Update</description>
|
||||
<dependency>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity
|
||||
type="win32"
|
||||
name="Microsoft.Windows.Common-Controls"
|
||||
version="6.0.0.0"
|
||||
processorArchitecture="*"
|
||||
publicKeyToken="6595b64144ccf1df"
|
||||
language="*"
|
||||
/>
|
||||
</dependentAssembly>
|
||||
</dependency>
|
||||
<asmv3:application>
|
||||
<asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
|
||||
<dpiAware>true</dpiAware>
|
||||
</asmv3:windowsSettings>
|
||||
</asmv3:application>
|
||||
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
|
||||
<application>
|
||||
<!-- Windows Vista -->
|
||||
<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
|
||||
<!-- Windows 7 -->
|
||||
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
|
||||
<!-- Windows 8 -->
|
||||
<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
|
||||
<!-- Windows 8.1 -->
|
||||
<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
|
||||
<!-- Windows 10 -->
|
||||
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>
|
||||
</application>
|
||||
</compatibility>
|
||||
</assembly>
|
||||
@@ -0,0 +1,202 @@
|
||||
// Microsoft Visual C++ generated resource script.
|
||||
//
|
||||
#include "resource.h"
|
||||
|
||||
#define APSTUDIO_READONLY_SYMBOLS
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Generated from the TEXTINCLUDE 2 resource.
|
||||
//
|
||||
#include "afxres.h"
|
||||
#include "..\ClassicShellLib\resource.h"
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
#undef APSTUDIO_READONLY_SYMBOLS
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// English (U.S.) resources
|
||||
|
||||
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
|
||||
#ifdef _WIN32
|
||||
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
|
||||
#pragma code_page(1252)
|
||||
#endif //_WIN32
|
||||
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// TEXTINCLUDE
|
||||
//
|
||||
|
||||
1 TEXTINCLUDE
|
||||
BEGIN
|
||||
"resource.h\0"
|
||||
END
|
||||
|
||||
2 TEXTINCLUDE
|
||||
BEGIN
|
||||
"#include ""afxres.h""\r\n"
|
||||
"#include ""..\\ClassicShellLib\\resource.h""\0"
|
||||
END
|
||||
|
||||
3 TEXTINCLUDE
|
||||
BEGIN
|
||||
"#include ""..\\ClassicShellLib\\resource.h""\r\n"
|
||||
"#include ""..\\ClassicShellLib\\ClassicShellLib.rc""\r\0"
|
||||
END
|
||||
|
||||
1 TEXTINCLUDE
|
||||
BEGIN
|
||||
"resource.h\0"
|
||||
END
|
||||
|
||||
2 TEXTINCLUDE
|
||||
BEGIN
|
||||
"#include ""afxres.h""\r\n"
|
||||
"#include ""..\\ClassicShellLib\\resource.h""\r\n"
|
||||
"#include ""..\\ClassicShellLib\\ClassicShellLib.rc""\r\0"
|
||||
END
|
||||
|
||||
3 TEXTINCLUDE
|
||||
BEGIN
|
||||
"\r\0"
|
||||
END
|
||||
|
||||
1 TEXTINCLUDE
|
||||
BEGIN
|
||||
"resource.h\0"
|
||||
END
|
||||
|
||||
2 TEXTINCLUDE
|
||||
BEGIN
|
||||
"#ifndef APSTUDIO_INVOKED\r\n"
|
||||
"#include ""targetver.h""\r\n"
|
||||
"#endif\r\n"
|
||||
"#include ""winres.h""\r\n"
|
||||
"#include ""..\\ClassicShellLib\\resource.h""\r\n"
|
||||
"#include ""..\\ClassicShellLib\\ClassicShellLib.rc""\r\0"
|
||||
END
|
||||
|
||||
#endif // APSTUDIO_INVOKED
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Version
|
||||
//
|
||||
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
FILEVERSION 4,3,1,0
|
||||
PRODUCTVERSION 4,3,1,0
|
||||
FILEFLAGSMASK 0x3fL
|
||||
#ifdef _DEBUG
|
||||
FILEFLAGS 0x1L
|
||||
#else
|
||||
FILEFLAGS 0x0L
|
||||
#endif
|
||||
FILEOS 0x4L
|
||||
FILETYPE 0x2L
|
||||
FILESUBTYPE 0x0L
|
||||
BEGIN
|
||||
BLOCK "StringFileInfo"
|
||||
BEGIN
|
||||
BLOCK "040904e4"
|
||||
BEGIN
|
||||
VALUE "CompanyName", "IvoSoft"
|
||||
VALUE "FileDescription", "Checks for a new version of Classic Shell"
|
||||
VALUE "FileVersion", "4, 3, 1, 0"
|
||||
VALUE "InternalName", "ClassicShellUpdate.exe"
|
||||
VALUE "LegalCopyright", "Copyright (C) 2009-2016, Ivo Beltchev"
|
||||
VALUE "OriginalFilename", "ClassicShellUpdate.exe"
|
||||
VALUE "ProductName", "Classic Shell"
|
||||
VALUE "ProductVersion", "4, 3, 1, 0"
|
||||
END
|
||||
END
|
||||
BLOCK "VarFileInfo"
|
||||
BEGIN
|
||||
VALUE "Translation", 0x409, 1252
|
||||
END
|
||||
END
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Dialog
|
||||
//
|
||||
|
||||
IDD_UPDATE DIALOGEX 0, 0, 316, 181
|
||||
STYLE DS_SETFONT | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
|
||||
CAPTION "Classic Shell Update"
|
||||
FONT 9, "Segoe UI", 400, 0, 0x0
|
||||
BEGIN
|
||||
CONTROL "Automatically check for new versions",IDC_CHECKAUTOCHECK,
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,7,129,10
|
||||
PUSHBUTTON "Check now",IDC_BUTTONCHECKNOW,7,17,50,14
|
||||
LTEXT "message",IDC_STATICLATEST,7,33,302,10,SS_CENTERIMAGE
|
||||
EDITTEXT IDC_EDITTEXT,7,45,302,97,ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_READONLY | NOT WS_VISIBLE | WS_VSCROLL
|
||||
PUSHBUTTON "Download",IDC_BUTTONDOWNLOAD,7,144,50,14,NOT WS_VISIBLE
|
||||
CONTROL "Don't remind me again about this version",IDC_CHECKDONT,
|
||||
"Button",BS_AUTOCHECKBOX | NOT WS_VISIBLE | WS_TABSTOP,61,144,141,14
|
||||
CONTROL "<a>www.classicshell.net</a>",IDC_LINKWEB,"SysLink",WS_TABSTOP,7,164,66,10,WS_EX_TRANSPARENT
|
||||
DEFPUSHBUTTON "OK",IDOK,202,160,50,14
|
||||
PUSHBUTTON "Cancel",IDCANCEL,259,160,50,14
|
||||
END
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// DESIGNINFO
|
||||
//
|
||||
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
GUIDELINES DESIGNINFO
|
||||
BEGIN
|
||||
IDD_UPDATE, DIALOG
|
||||
BEGIN
|
||||
LEFTMARGIN, 7
|
||||
RIGHTMARGIN, 309
|
||||
TOPMARGIN, 7
|
||||
BOTTOMMARGIN, 174
|
||||
END
|
||||
END
|
||||
#endif // APSTUDIO_INVOKED
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Icon
|
||||
//
|
||||
|
||||
// Icon with lowest ID value placed first to ensure application icon
|
||||
// remains consistent on all systems.
|
||||
IDI_APPICON ICON "..\\ClassicShellSetup\\ClassicShell.ico"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// String Table
|
||||
//
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_UPDATED "Your version of Classic Shell is up to date"
|
||||
IDS_OUTOFDATE "There is a new version of Classic Shell"
|
||||
IDS_NEWVERSION "There is a new version of Classic Shell.\nClick here to see what's new or to change the reminder settings."
|
||||
IDS_UPDATE_FAIL "Failed to check for new version"
|
||||
IDS_LANG_OUTOFDATE "There is a new language file for this version of Classic Shell"
|
||||
IDS_LANG_NEWVERSION "There is a new language file for this version of Classic Shell.\nClick here to install it or to change the reminder settings."
|
||||
END
|
||||
|
||||
#endif // English (U.S.) resources
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
|
||||
#ifndef APSTUDIO_INVOKED
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Generated from the TEXTINCLUDE 3 resource.
|
||||
//
|
||||
#include "..\ClassicShellLib\resource.h"
|
||||
#include "..\ClassicShellLib\ClassicShellLib.rc"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
#endif // not APSTUDIO_INVOKED
|
||||
@@ -0,0 +1,206 @@
|
||||
<?xml version="1.0" encoding="Windows-1252"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="9.00"
|
||||
Name="ClassicShellUpdate"
|
||||
ProjectGUID="{171B46B0-6083-4D9E-BD33-946EA3BD76FA}"
|
||||
RootNamespace="ClassicShellUpdate"
|
||||
SccProjectName="Perforce Project"
|
||||
SccLocalPath=".."
|
||||
SccProvider="MSSCCI:Perforce SCM"
|
||||
Keyword="Win32Proj"
|
||||
TargetFrameworkVersion="196613"
|
||||
>
|
||||
<Platforms>
|
||||
<Platform
|
||||
Name="Win32"
|
||||
/>
|
||||
</Platforms>
|
||||
<ToolFiles>
|
||||
</ToolFiles>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory="$(ConfigurationName)"
|
||||
IntermediateDirectory="$(ConfigurationName)"
|
||||
ConfigurationType="1"
|
||||
UseOfATL="1"
|
||||
CharacterSet="1"
|
||||
WholeProgramOptimization="0"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\ClassicShellLib"
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS"
|
||||
MinimalRebuild="true"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="4"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
AdditionalIncludeDirectories=""$(IntDir)";..\ClassicShellLib"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="shlwapi.lib comctl32.lib uxtheme.lib winmm.lib wininet.lib htmlhelp.lib wintrust.lib crypt32.lib"
|
||||
LinkIncremental="2"
|
||||
GenerateDebugInformation="true"
|
||||
SubSystem="2"
|
||||
TargetMachine="1"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManifestTool"
|
||||
AdditionalManifestFiles="ClassicShellUpdate.manifest"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCAppVerifierTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
OutputDirectory="$(ConfigurationName)"
|
||||
IntermediateDirectory="$(ConfigurationName)"
|
||||
ConfigurationType="1"
|
||||
UseOfATL="1"
|
||||
CharacterSet="1"
|
||||
WholeProgramOptimization="0"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="2"
|
||||
EnableIntrinsicFunctions="false"
|
||||
AdditionalIncludeDirectories="..\ClassicShellLib"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS"
|
||||
RuntimeLibrary="0"
|
||||
EnableFunctionLevelLinking="true"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
WarnAsError="true"
|
||||
DebugInformationFormat="3"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
AdditionalIncludeDirectories=""$(IntDir)";..\ClassicShellLib"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="shlwapi.lib comctl32.lib uxtheme.lib winmm.lib wininet.lib htmlhelp.lib wintrust.lib crypt32.lib"
|
||||
LinkIncremental="1"
|
||||
GenerateDebugInformation="true"
|
||||
SubSystem="2"
|
||||
OptimizeReferences="2"
|
||||
EnableCOMDATFolding="2"
|
||||
TargetMachine="1"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManifestTool"
|
||||
AdditionalManifestFiles="ClassicShellUpdate.manifest"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCAppVerifierTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
<References>
|
||||
</References>
|
||||
<Files>
|
||||
<File
|
||||
RelativePath="..\ClassicShellSetup\ClassicShell.ico"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\ClassicShellUpdate.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\ClassicShellUpdate.manifest"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\ClassicShellUpdate.rc"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\resource.h"
|
||||
>
|
||||
</File>
|
||||
</Files>
|
||||
<Globals>
|
||||
</Globals>
|
||||
</VisualStudioProject>
|
||||
@@ -0,0 +1,29 @@
|
||||
//{{NO_DEPENDENCIES}}
|
||||
// Microsoft Visual C++ generated include file.
|
||||
// Used by ClassicShellUpdate.rc
|
||||
//
|
||||
#define IDI_APPICON 101
|
||||
#define IDC_STATICLATEST 1001
|
||||
#define IDC_EDITTEXT 1002
|
||||
#define IDC_BUTTONDOWNLOAD 1003
|
||||
#define IDC_CHECKDONT 1004
|
||||
#define IDC_BUTTONCHECKNOW 1005
|
||||
#define IDC_CHECKAUTOCHECK 1006
|
||||
#define IDD_UPDATE 6001
|
||||
#define IDS_UPDATED 6001
|
||||
#define IDS_OUTOFDATE 6002
|
||||
#define IDS_NEWVERSION 6003
|
||||
#define IDS_UPDATE_FAIL 6005
|
||||
#define IDS_LANG_OUTOFDATE 6006
|
||||
#define IDS_LANG_NEWVERSION 6007
|
||||
|
||||
// Next default values for new objects
|
||||
//
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||
#define _APS_NEXT_RESOURCE_VALUE 227
|
||||
#define _APS_NEXT_COMMAND_VALUE 32769
|
||||
#define _APS_NEXT_CONTROL_VALUE 262
|
||||
#define _APS_NEXT_SYMED_VALUE 106
|
||||
#endif
|
||||
#endif
|
||||
Reference in New Issue
Block a user