📄 shareaza.cpp
字号:
CTime pNow = CTime::GetCurrentTime();
CString strLine;
strLine.Format( _T("[%.2i:%.2i:%.2i] %s\r\n"),
pNow.GetHour(), pNow.GetMinute(), pNow.GetSecond(), pszLog );
pFile.Write( (LPCTSTR)strLine, sizeof(TCHAR) * strLine.GetLength() );
}
else
{
pFile.Write( pszLog, sizeof(TCHAR) * _tcslen(pszLog) );
pFile.Write( _T("\r\n"), sizeof(TCHAR) * 2 );
}
pFile.Close();
}
/////////////////////////////////////////////////////////////////////////////
// CShareazaApp get error string
CString CShareazaApp::GetErrorString()
{
LPTSTR pszMessage = NULL;
CString strMessage;
FormatMessage( FORMAT_MESSAGE_FROM_SYSTEM|FORMAT_MESSAGE_ALLOCATE_BUFFER,
NULL, GetLastError(), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
(LPTSTR)&pszMessage, 0, NULL );
if ( pszMessage != NULL )
{
strMessage = pszMessage;
LocalFree( pszMessage );
}
return strMessage;
}
/////////////////////////////////////////////////////////////////////////////
// CShareazaApp process an internal URI
BOOL CShareazaApp::InternalURI(LPCTSTR pszURI)
{
if ( m_pSafeWnd == NULL ) return FALSE;
CMainWnd* pMainWnd = (CMainWnd*)m_pSafeWnd;
CString strURI( pszURI );
if ( strURI.Find( _T("raza:command:") ) == 0 )
{
if ( UINT nCmdID = CoolInterface.NameToID( pszURI + 13 ) )
{
pMainWnd->PostMessage( WM_COMMAND, nCmdID );
}
}
else if ( strURI.Find( _T("raza:windowptr:") ) == 0 )
{
CChildWnd* pChild = NULL;
_stscanf( (LPCTSTR)strURI + 15, _T("%lu"), &pChild );
if ( pMainWnd->m_pWindows.Check( pChild ) ) pChild->MDIActivate();
}
else if ( strURI.Find( _T("raza:launch:") ) == 0 )
{
DWORD nIndex = 0;
_stscanf( (LPCTSTR)strURI + 12, _T("%lu"), &nIndex );
if ( CLibraryFile* pFile = Library.LookupFile( nIndex, TRUE ) )
{
pFile->Execute();
Library.Unlock();
}
}
else if ( strURI.Find( _T("http://") ) == 0 ||
strURI.Find( _T("ftp://") ) == 0 ||
strURI.Find( _T("mailto:") ) == 0 ||
strURI.Find( _T("aim:") ) == 0 ||
strURI.Find( _T("magnet:") ) == 0 ||
strURI.Find( _T("gnutella:") ) == 0 ||
strURI.Find( _T("shareaza:") ) == 0 ||
strURI.Find( _T("gnet:") ) == 0 ||
strURI.Find( _T("ed2k:") ) == 0 ||
strURI.Find( _T("sig2dat:") ) == 0 )
{
ShellExecute( pMainWnd->GetSafeHwnd(), _T("open"), strURI,
NULL, NULL, SW_SHOWNORMAL );
}
else if ( strURI == _T("raza:connect") )
{
pMainWnd->PostMessage( WM_COMMAND, ID_NETWORK_CONNECT );
}
else if ( strURI == _T("raza:disconnect") )
{
pMainWnd->PostMessage( WM_COMMAND, ID_NETWORK_DISCONNECT );
}
else if ( strURI == _T("raza:search") )
{
pMainWnd->PostMessage( WM_COMMAND, ID_TAB_SEARCH );
}
else if ( strURI == _T("raza:neighbours") )
{
pMainWnd->PostMessage( WM_COMMAND, ID_VIEW_NEIGHBOURS );
}
else if ( strURI == _T("raza:downloads") )
{
pMainWnd->PostMessage( WM_COMMAND, ID_VIEW_DOWNLOADS );
}
else if ( strURI == _T("raza:uploads") )
{
pMainWnd->PostMessage( WM_COMMAND, ID_VIEW_UPLOADS );
}
else if ( strURI == _T("raza:shell:downloads") )
{
ShellExecute( pMainWnd->GetSafeHwnd(), _T("open"),
Settings.Downloads.CompletePath, NULL, NULL, SW_SHOWNORMAL );
}
else if ( strURI == _T("raza:upgrade") )
{
pMainWnd->PostMessage( WM_VERSIONCHECK, 1 );
}
else if ( strURI == _T("raza:options") )
{
pMainWnd->PostMessage( WM_COMMAND, ID_TOOLS_SETTINGS );
}
else if ( strURI == _T("raza:options:skins") )
{
pMainWnd->PostMessage( WM_COMMAND, ID_TOOLS_SKIN );
}
else if ( strURI == _T("raza:wizard") )
{
pMainWnd->PostMessage( WM_COMMAND, ID_TOOLS_WIZARD );
}
else if ( strURI == _T("raza:library") )
{
pMainWnd->PostMessage( WM_COMMAND, ID_VIEW_LIBRARY );
}
else if ( strURI == _T("raza:library:downloads") )
{
pMainWnd->PostMessage( WM_COMMAND, ID_VIEW_LIBRARY );
}
else if ( strURI == _T("raza:library:history") )
{
pMainWnd->PostMessage( WM_COMMAND, ID_VIEW_LIBRARY );
pMainWnd->PostMessage( WM_COMMAND, ID_LIBRARY_TREE_VIRTUAL );
}
else if ( strURI.Find( _T("raza:library:/") ) == 0 )
{
pMainWnd->PostMessage( WM_COMMAND, ID_VIEW_LIBRARY );
pMainWnd->PostMessage( WM_COMMAND, ID_LIBRARY_TREE_VIRTUAL );
}
else
{
return FALSE;
}
return TRUE;
}
/////////////////////////////////////////////////////////////////////////////
// Runtime class lookup
void AFXAPI AfxLockGlobals(int nLockType);
void AFXAPI AfxUnlockGlobals(int nLockType);
CRuntimeClass* AfxClassForName(LPCTSTR pszClass)
{
AFX_MODULE_STATE* pModuleState = AfxGetModuleState();
AfxLockGlobals( 0 );
for ( CRuntimeClass* pClass = pModuleState->m_classList ; pClass != NULL ; pClass = pClass->m_pNextClass )
{
if ( CString( pClass->m_lpszClassName ).CompareNoCase( pszClass ) == 0 )
{
AfxUnlockGlobals( 0 );
return pClass;
}
}
AfxUnlockGlobals( 0 );
return NULL;
}
/////////////////////////////////////////////////////////////////////////////
// String functions
BOOL LoadString(CString& str, UINT nID)
{
return Skin.LoadString( str, nID );
}
void Replace(CString& strBuffer, LPCTSTR pszFind, LPCTSTR pszReplace)
{
while ( TRUE )
{
int nPos = strBuffer.Find( pszFind );
if ( nPos < 0 ) break;
strBuffer = strBuffer.Left( nPos ) + pszReplace + strBuffer.Mid( nPos + _tcslen( pszFind ) );
}
}
/////////////////////////////////////////////////////////////////////////////
// Case independent string search
LPCTSTR _tcsistr(LPCTSTR pszString, LPCTSTR pszPattern)
{
LPCTSTR pptr, sptr, start;
DWORD slen, plen;
for ( start = pszString,
pptr = pszPattern,
slen = _tcslen( pszString ),
plen = _tcslen( pszPattern ) ;
slen >= plen ; start++, slen-- )
{
while ( toupper( *start ) != toupper( *pszPattern ) )
{
start++;
slen--;
if ( slen < plen ) return NULL;
}
sptr = start;
pptr = pszPattern;
while ( toupper( *sptr ) == toupper( *pptr ) )
{
sptr++;
pptr++;
if ( ! *pptr) return start;
}
}
return NULL;
}
LPCTSTR _tcsnistr(LPCTSTR pszString, LPCTSTR pszPattern, DWORD plen)
{
LPCTSTR pptr, sptr, start;
DWORD slen, plen2;
for ( start = pszString,
pptr = pszPattern,
slen = _tcslen( pszString ) ;
slen >= plen ; start++, slen-- )
{
while ( toupper( *start ) != toupper( *pszPattern ) )
{
start++;
slen--;
if ( slen < plen ) return NULL;
}
sptr = start;
pptr = pszPattern;
plen2 = plen;
while ( toupper( *sptr ) == toupper( *pptr ) )
{
sptr++;
pptr++;
if ( ! --plen2 ) return start;
}
}
return NULL;
}
/////////////////////////////////////////////////////////////////////////////
// Time Management Functions (C-runtime)
DWORD TimeFromString(LPCTSTR pszTime)
{
// 2002-04-30T08:30Z
if ( _tcslen( pszTime ) != 17 ) return 0;
if ( pszTime[4] != '-' || pszTime[7] != '-' ) return 0;
if ( pszTime[10] != 'T' || pszTime[13] != ':' || pszTime[16] != 'Z' ) return 0;
struct tm pTime;
LPCTSTR psz;
int nTemp;
ZeroMemory( &pTime, sizeof(pTime) );
if ( _stscanf( pszTime, _T("%i"), &nTemp ) != 1 ) return 0;
pTime.tm_year = nTemp - 1900;
for ( psz = pszTime + 5 ; *psz == '0' ; psz++ );
if ( _stscanf( psz, _T("%i"), &nTemp ) != 1 ) return 0;
pTime.tm_mon = nTemp - 1;
for ( psz = pszTime + 8 ; *psz == '0' ; psz++ );
if ( _stscanf( psz, _T("%i"), &nTemp ) != 1 ) return 0;
pTime.tm_mday = nTemp;
for ( psz = pszTime + 11 ; *psz == '0' ; psz++ );
if ( _stscanf( psz, _T("%i"), &nTemp ) != 1 ) return 0;
pTime.tm_hour = nTemp;
for ( psz = pszTime + 14 ; *psz == '0' ; psz++ );
if ( _stscanf( psz, _T("%i"), &nTemp ) != 1 ) return 0;
pTime.tm_min = nTemp;
time_t tGMT = mktime( &pTime );
struct tm* pGM = gmtime( &tGMT );
time_t tSub = mktime( pGM );
return tGMT + ( tGMT - tSub );
}
CString TimeToString(DWORD tVal)
{
struct tm* pTime = gmtime( (time_t*)&tVal );
CString str;
str.Format( _T("%.4i-%.2i-%.2iT%.2i:%.2iZ"),
pTime->tm_year + 1900, pTime->tm_mon + 1, pTime->tm_mday,
pTime->tm_hour, pTime->tm_min );
return str;
}
/////////////////////////////////////////////////////////////////////////////
// Time Management Functions (FILETIME)
BOOL TimeFromString(LPCTSTR pszTime, FILETIME* pTime)
{
// 2002-04-30T08:30Z
if ( _tcslen( pszTime ) != 17 ) return FALSE;
if ( pszTime[4] != '-' || pszTime[7] != '-' ) return FALSE;
if ( pszTime[10] != 'T' || pszTime[13] != ':' || pszTime[16] != 'Z' ) return FALSE;
SYSTEMTIME pOut;
LPCTSTR psz;
int nTemp;
ZeroMemory( &pOut, sizeof(pOut) );
if ( _stscanf( pszTime, _T("%i"), &nTemp ) != 1 ) return FALSE;
pOut.wYear = nTemp;
for ( psz = pszTime + 5 ; *psz == '0' ; psz++ );
if ( _stscanf( psz, _T("%i"), &nTemp ) != 1 ) return FALSE;
pOut.wMonth = nTemp;
for ( psz = pszTime + 8 ; *psz == '0' ; psz++ );
if ( _stscanf( psz, _T("%i"), &nTemp ) != 1 ) return FALSE;
pOut.wDay = nTemp;
for ( psz = pszTime + 11 ; *psz == '0' ; psz++ );
if ( _stscanf( psz, _T("%i"), &nTemp ) != 1 ) return FALSE;
pOut.wHour = nTemp;
for ( psz = pszTime + 14 ; *psz == '0' ; psz++ );
if ( _stscanf( psz, _T("%i"), &nTemp ) != 1 ) return FALSE;
pOut.wMinute = nTemp;
return SystemTimeToFileTime( &pOut, pTime );
}
CString TimeToString(FILETIME* pTime)
{
SYSTEMTIME pOut;
CString str;
FileTimeToSystemTime( pTime, &pOut );
str.Format( _T("%.4i-%.2i-%.2iT%.2i:%.2iZ"),
pOut.wYear, pOut.wMonth, pOut.wDay,
pOut.wHour, pOut.wMinute );
return str;
}
void CShareazaApp::DebugState(BOOL bState)
{
CRect rc( 0, 0, 32, 32 );
CDC dc;
dc.Attach( GetDC( 0 ) );
dc.FillSolidRect( &rc, bState ? RGB( 255, 0, 0 ) : RGB( 255, 255, 255 ) );
ReleaseDC( 0, dc.Detach() );
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -