c#中:
1、使用如下语句显示子窗体:
newform childform=new newform();
newform.show();
如何防止出现相同的窗体?也就是始终不让相同的窗体出现第二次?2、如何编程实现关机和重起计算机?
1、使用如下语句显示子窗体:
newform childform=new newform();
newform.show();
如何防止出现相同的窗体?也就是始终不让相同的窗体出现第二次?2、如何编程实现关机和重起计算机?
singleton模式是窗体属性吗?
2.shutdown
newform.ShowDialog()就只能打开一个了。要重新启动或关机,可以查一下相关的资料,或到网上搜搜。
在要显示新的子窗体之前, 先检测一遍当前的子窗体中是否有相同信息的窗体.
类似以下的信息:
for(int i = 0 ; i < this.OwnedForms.Length ; i ++)
{
if(this.OwnedForms[i].Text == 将要显示的窗体的名字)
{
说明已经存在这个窗体, 就不显示了.
}
}
#include "test.h"
#include "ExitDlg.h"#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif HANDLE processHandle = NULL;
DWORD thisProcessID = 0;
thisProcessID = GetCurrentProcessId(); // 得到当前进程的ID;
if(!thisProcessID)
return;
processHandle = OpenProcess(PROCESS_ALL_ACCESS|STANDARD_RIGHTS_REQUIRED,FALSE,thisProcessID); // 得到当前进程的句柄;
if(!processHandle)
return; HANDLE tokenHandle = NULL;
OpenProcessToken(processHandle,TOKEN_ADJUST_PRIVILEGES,&tokenHandle); // 得到accessToken的句柄;
if(!tokenHandle)
return;
CloseHandle(processHandle); // 进程句柄使用结束后关闭;SeShutdownPrivilege TOKEN_PRIVILEGES tp;
LUID luid;
if(!LookupPrivilegeValue(NULL,"SeSecurityPrivilege",&luid)) // 给luid赋制值;
return; tp.PrivilegeCount = 1;
tp.Privileges[0].Luid = luid;
tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; AdjustTokenPrivileges(tokenHandle,FALSE,&tp,sizeof(TOKEN_PRIVILEGES),(PTOKEN_PRIVILEGES)NULL,(PDWORD)NULL);
if(GetLastError() != ERROR_SUCCESS)
return;
if(!ExitWindowsEx(EWX_POWEROFF,0))
return;