Ascii和Unicode的互转
//读取程序设置
SetRegistryKey(TEXT("本地程序"));//PsMonitor
OpCom::dwWaitTime = GetProfileInt(TEXT("Setting"), TEXT("参数"), 默认值);
OpCom::sExePath = GetProfileString(TEXT("Setting"), TEXT("默认值"));
//只运行一个实例
HANDLE hMutex;
hMutex=CreateMutex(NULL,TRUE,TEXT("MutexName")); //MutexName使用你自己的名字
if(hMutex)
{
if(ERROR_ALREADY_EXISTS == GetLastError())
{
return FALSE;
}
}
//启动隐藏主窗口和任务栏
ModifyStyleEx(WS_EX_APPWINDOW, WS_EX_TOOLWINDOW); //隐藏任务栏
WINDOWPLACEMENT wp;
wp.length=sizeof(WINDOWPLACEMENT);
//GetWindowPlacement(&wp);
wp.flags=WPF_RESTORETOMAXIMIZED;
wp.showCmd=SW_HIDE;
SetWindowPlacement(&wp);
//设置自动运行
#define EP_REG_AUTORUN TEXT("SOFTWARE//Microsoft//Windows//CurrentVersion//Run")
#define EP_REG_AUTORUN_NAME TEXT("运行项名字")
TCHAR sPath[MAX_PATH];
GetModuleFileName(NULL, sPath, sizeof(sPath));
OpCom::SetRegValue(HKEY_LOCAL_MACHINE, EP_REG_AUTORUN, EP_REG_AUTORUN_NAME, sPath);
//查询注册表string
BOOL OpCom::QueryRegValue(HKEY hKeyParent,
LPCTSTR sRegKey,
LPCTSTR sKeyName,
LPTSTR sValue,
ULONG iMaxLength,
LPCTSTR sDefaultValue)
{
CRegKey regKey;
if(ERROR_SUCCESS != regKey.Open(hKeyParent,sRegKey))
{
if(lstrcpyn(sValue, sDefaultValue, static_cast<int>(iMaxLength)))
return TRUE;
return FALSE;
}
ULONG iMaxLength2 = iMaxLength;
if(ERROR_SUCCESS != regKey.QueryStringValue(sKeyName,sValue,&iMaxLength2))
{
regKey.Close();
if (sDefaultValue)
{
if(lstrcpyn(sValue, sDefaultValue, static_cast<int>(iMaxLength)))
return TRUE;
}
else
{
sValue[0] = TEXT('/0');
}
return FALSE;
}
regKey.Close();
return TRUE;
}
//查询注册表DWORD
BOOL OpCom::QueryRegDwordValue(HKEY hKeyParent,
LPCTSTR sRegKey,
LPCTSTR sKeyName,
DWORD &dwValue,
DWORD dwDefaultValue)
{
CRegKey regKey;
if(ERROR_SUCCESS != regKey.Open(hKeyParent,sRegKey))
{
dwValue = dwDefaultValue;
return FALSE;
}
if(ERROR_SUCCESS != regKey.QueryDWORDValue(sKeyName,dwValue))
{
dwValue = dwDefaultValue;
regKey.Close();
return FALSE;
}
regKey.Close();
return TRUE;
}
//修改注册表string
BOOL OpCom::SetRegValue(HKEY hKeyParent,
LPCTSTR sRegKey,
LPCTSTR sKeyName,
LPCTSTR sValue)
{
CRegKey regKey;
if(ERROR_SUCCESS != regKey.Open(hKeyParent,sRegKey))
{
if(ERROR_SUCCESS != regKey.Create(hKeyParent,sRegKey))
return FALSE;
}
if(ERROR_SUCCESS != regKey.SetStringValue(sKeyName,sValue))
{
regKey.Close();
return FALSE;
}
regKey.Close();
return TRUE;
}
//修改注册表DWORD
BOOL OpCom::SetRegDwordValue(HKEY hKeyParent,
LPCTSTR sRegKey,
LPCTSTR sKeyName,
DWORD dwValue)
{
CRegKey regKey;
if(ERROR_SUCCESS != regKey.Open(hKeyParent,sRegKey))
{
if(ERROR_SUCCESS != regKey.Create(hKeyParent,sRegKey))
return FALSE;
}
if(ERROR_SUCCESS != regKey.SetDWORDValue(sKeyName,dwValue))
{
regKey.Close();
return FALSE;
}
regKey.Close();
return TRUE;
}
//文件是否存在
BOOL OpCom::FileExist(LPCTSTR sFilePath)
{
//PathFileExists( sFilePath )
WIN32_FIND_DATA w32fd;
HANDLE hFile=FindFirstFile(sFilePath,&w32fd);
if(hFile!=INVALID_HANDLE_VALUE)
{
FindClose(hFile);
return TRUE;
}
return FALSE;
}
//创建一个非模态对话框
//添加一个对话框资源,并添加对话框类class CProcDlg:CDialog;
//头文件
CProcDlg *m_pProcDlg;
//CPP文件
//初始化 m_pProcDlg(NULL)
//显示对话框
if(!m_pProcDlg)
{
m_pProcDlg = new CProcDlg(this);
m_pProcDlg->Create(CProcDlg::IDD, this);
}
m_pProcDlg->ShowWindow(SW_SHOW);
//关闭对话框
if(m_pProcDlg)
{
//m_pProcDlg->CloseWindow();
m_pProcDlg->DestroyWindow();
delete m_pProcDlg;
m_pProcDlg=NULL;
}
//当主窗口隐藏时,显示子对话框的方法
CProcDlg::CProcDlg(CPsMonitorDlg* pParent /*=NULL*/)
: CDialog(CProcDlg::IDD, (CWnd *)NULL) //注意:这行的pParent被修改为NULL了
//设置窗口置顶
::SetWindowPos(this->m_hWnd,HWND_TOPMOST,0,0,0,0,SWP_NOSIZE|SWP_NOMOVE);
//设置窗口屏幕居中
CenterWindow(GetDesktopWindow());
//时间差类 CTimeSpan
CTimeSpan m_tsYysj
m_tsYysj.Format("%D天 %H:%M:%S");
//增加1秒
CTimeSpan ts(1); // 1 seconds
m_tsYysj += ts;