⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 remoteadmin.cpp

📁 VC网络程序设计实例导航配套代码
💻 CPP
字号:
// RemoteAdmin.cpp : Defines the class behaviors for the application.
//

#include "stdafx.h"
#include "RemoteAdmin.h"
#include "AboutDlg.h"
#include "MainFrame.h"
#include "RemoteAdminDoc.h"
#include "MachineView.h"
#include "SplashWnd.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CRemoteAdminApp

BEGIN_MESSAGE_MAP(CRemoteAdminApp, CWinApp)
	//{{AFX_MSG_MAP(CRemoteAdminApp)
	ON_COMMAND(ID_APP_ABOUT, OnAppAbout)
		// NOTE - the ClassWizard will add and remove mapping macros here.
		//    DO NOT EDIT what you see in these blocks of generated code!
	//}}AFX_MSG_MAP
	// Standard file based document commands
	ON_COMMAND(ID_FILE_NEW, CWinApp::OnFileNew)
	ON_COMMAND(ID_FILE_OPEN, CWinApp::OnFileOpen)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CRemoteAdminApp construction

CRemoteAdminApp::CRemoteAdminApp()
{
	m_pstTrayIcon = NULL;
}


CRemoteAdminApp::~CRemoteAdminApp()
{
	if (m_pstTrayIcon != NULL)
	{
		delete m_pstTrayIcon;

		m_pstTrayIcon = NULL;
	}
}
/////////////////////////////////////////////////////////////////////////////
// The one and only CRemoteAdminApp object

CRemoteAdminApp theApp;

CRITICAL_SECTION g_CriticalSection;

BOOL g_bUpdateProcessList  = TRUE;
UINT g_iUpdateProcessDelay = 10000;  // in milli secs
UINT g_iShutdownDelay      = 50000; // in milli secs

// << BLOCK START
// << Added by Prateek Kaul on May 21, 2003. to check the number of
// running instances of this application to only one
// Global variables in the shared 
#pragma data_seg("Shared")
LONG g_Counter = -1;
#pragma data_seg()

// Notice to the linker to make the Shared section readable, writable, and shared
#pragma comment(linker, "/section:Shared,rws")
// << BLOCK END


BOOL CRemoteAdminApp::InitInstance()
{
    // Check if another instance already running
    if (!(InterlockedIncrement(&g_Counter) == 0))
    {
        ::AfxMessageBox(IDS_APP_ALREADY_RUNNING);
        
        return FALSE;
    }
    // Standard initialization
	// If you are not using these features and wish to reduce the size
	//  of your final executable, you should remove from the following
	//  the specific initialization routines you do not need.


	// Initialize WinSock
	::AfxSocketInit();

    #ifdef _AFXDLL
	Enable3dControls();			// Call this when using MFC in a shared DLL
#else
	Enable3dControlsStatic();	// Call this when linking to MFC statically
#endif

	// Change the registry key under which our settings are stored.
	// TODO: You should modify this string to be something appropriate
	// such as the name of your company or organization.
	SetRegistryKey(_T("Local AppWizard-Generated Applications"));

	LoadStdProfileSettings();  // Load standard INI file options (including MRU)

	// Register the application's document templates.  Document templates
	//  serve as the connection between documents, frame windows and views.

	CSingleDocTemplate* pDocTemplate;
	pDocTemplate = new CSingleDocTemplate(
		IDR_MAINFRAME,
		RUNTIME_CLASS(CRemoteAdminDoc),
		RUNTIME_CLASS(CMainFrame),       // main SDI frame window
		RUNTIME_CLASS(CMachineView));
	AddDocTemplate(pDocTemplate);
    
    CSplashWnd::EnableSplashScreen(TRUE);
    CSplashWnd::ShowSplashScreen(CWnd::GetDesktopWindow());
    ::Sleep(2500);

	// Parse command line for standard shell commands, DDE, file open
	CCommandLineInfo cmdInfo;
	ParseCommandLine(cmdInfo);

	// Dispatch commands specified on the command line
	if (!ProcessShellCommand(cmdInfo))
		return FALSE;

 	// The one and only window has been initialized, so show and update it.
	///m_pMainWnd->ShowWindow(SW_SHOWNORMAL);
	m_pMainWnd->UpdateWindow();
    //m_pMainWnd->CenterWindow();
    
    // Used in the thread which updates processes
    ::InitializeCriticalSection(&g_CriticalSection);
    
	return TRUE;
}

void CRemoteAdminApp::OnAppAbout()
{
	CAboutDlg aboutDlg;
	aboutDlg.DoModal();
}


BOOL CRemoteAdminApp::ShowBalloonMsgInTray(CString strTitle, CString strMsgTxt)
{
	return m_pstTrayIcon->ShowBalloon(1, strTitle.GetBuffer(0), strMsgTxt.GetBuffer(0), NIIF_WARNING);
}

BOOL CRemoteAdminApp::CreateAndShowSystemTrayIcon()
{
	// This is supposed to called only once, if this assert triggers it means the function
	// has been called more than once
	ASSERT(m_pstTrayIcon == NULL); 

	if (m_pstTrayIcon == NULL)
	{
		// Create and show the system tray icon
		HICON hTrayIcon = ::AfxGetApp()->LoadIcon(MAKEINTRESOURCE(IDI_MACHINE_ON_NETWORK));
		
		TCHAR szAppName[_MAX_PATH];
		::LoadString(::AfxGetApp()->m_hInstance, IDS_APP_NAME, szAppName, _MAX_PATH);
		
		m_pstTrayIcon = new CRemoteAdminTrayIcon;

		if (m_pstTrayIcon != NULL)
		{
			BOOL bTrayIconCreated = m_pstTrayIcon->CreateIcon(hTrayIcon, 1, szAppName);
			BOOL bTrayIconShown   = m_pstTrayIcon->ShowIcon(1);

			return (bTrayIconCreated && bTrayIconShown);
		}
	}

	// Shouldn't reach here
	return FALSE;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -