Shutting down workstations | CodeGuru

Shutting down workstations

This time is about to shut down a network machine. Of course, we have to use InitiateSystemShutdown routine. The job is done in the sample dialog by pressing Shutdown button. Also the dialog with Cancel event armed can be useful sometimes (think at stored procedures, transactions, etc.). #include void CShutdownDlg::OnShutdown() { HTREEITEM hSel = […]

Written By
CodeGuru Staff
CodeGuru Staff
Jul 18, 1999
1 minute read
CodeGuru content and product recommendations are editorially independent. We may make money when you click on links to our partners. Learn More

This time is about to shut down a network machine. Of course, we have to use
InitiateSystemShutdown routine. The job is done in the sample dialog by pressing Shutdown button.
Also the dialog with Cancel event armed can be useful sometimes (think at stored procedures,
transactions, etc.).

#include <what_you_need.h>
void
CShutdownDlg::OnShutdown()
{
	HTREEITEM
		hSel  = m_treeWksta.GetSelectedItem(),	//	tree items (selected workstation)
		hRoot = m_treeWksta.GetRootItem();	//	root (network neighborhood)
	if(hRoot == hSel)
		return;
	CShutdownParamDlg dlgShutdown(this);		//	Here we configure how to shutdown workstation:
	if(dlgShutdown.DoModal() == IDCANCEL)		//	force close, reboot, timeout, and user message
		return;
	BOOL bShutdown =
		InitiateSystemShutdown
			(
				(LPSTR)(LPCTSTR)m_strWkstaName,
				(LPSTR)(LPCTSTR)dlgShutdown.m_strMessage,
				dlgShutdown.m_nTimeout,
				dlgShutdown.m_fForce,
				dlgShutdown.m_fReboot
			);
	if(!bShutdown)
		ShowLastError();			//	Usually: not enough privileges
	else
	{
		CShutdownParam shdwn;			//	Pass a structure to wait for abort thread
		shdwn.m_nTimeout	= dlgShutdown.m_nTimeout;
		shdwn.m_strMachineName	= m_strWkstaName;
		//	Show to the user dialog with Cancel button
		CEventDlg dlg(WaitForShutdown, (LPVOID)&shdwn);
		//	If user pressed Cancel, dismiss
		if (dlg.DoModal() != 0)
			AbortSystemShutdown((LPSTR)(LPCTSTR)m_strWkstaName);
	}
}

Download demo project – 25 KB

History

CodeGuru Logo

CodeGuru covers topics related to Microsoft-related software development, mobile development, database management, and web application programming. In addition to tutorials and how-tos that teach programmers how to code in Microsoft-related languages and frameworks like C# and .Net, we also publish articles on software development tools, the latest in developer news, and advice for project managers. Cloud services such as Microsoft Azure and database options including SQL Server and MSSQL are also frequently covered.

Property of TechnologyAdvice. © 2026 TechnologyAdvice. All Rights Reserved

Advertiser Disclosure: Some of the products that appear on this site are from companies from which TechnologyAdvice receives compensation. This compensation may impact how and where products appear on this site including, for example, the order in which they appear. TechnologyAdvice does not include all companies or all types of products available in the marketplace.