VC++常用代码段

/*
1.改变当前目录到EXE所在的目录
在VC++开发环境中直接运行程序,当前目录不是EXE所在的目录,这样会造成一些麻烦,比如使用相对路径打开文件。使用以下代码将当前目录设成EXE所在的目录:
void ChangeCurDirToExe() 
    CString strPath; 
      
    ::GetModuleFileName(NULL,strPath.GetBuffer(MAX_PATH),MAX_PATH); 
    strPath.ReleaseBuffer(); 
    strPath = strPath.Left(strPath.ReverseFind(L'\\') +1 ); 
    ::SetCurrentDirectory(strPath.GetBuffer()); 
      
}
 
/*2.开机自运行*/
HKEY m_regkey; 
TCHAR filename[_MAX_PATH]; 
GetModuleFileName(NULL,filename,_MAX_PATH); 
RegOpenKey(HKEY_LOCAL_MACHINE,L "Software\\Microsoft\\Windows\\CurrentVersion\\Run" ,&m_regkey); 
RegSetValueEx(m_regkey,L "程序名称" ,0,REG_SZ,( const unsigned char *)filename,MAX_PATH); 
RegCloseKey(m_regkey);
/*3.取消开机自运行*/
HKEY hKey; 
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE,L "Software\\Microsoft\\Windows\\CurrentVersion\\Run" ,0,KEY_ALL_ACCESS,&hKey)==ERROR_SUCCESS) 
    RegDeleteValue(hKey,L "程序名称" ); 
    RegCloseKey(hKey); 
/*4.退出后重启*/
TCHAR szPath[MAX_PATH];  
GetModuleFileName(NULL, szPath, MAX_PATH);  
  
STARTUPINFO startupInfo; 
PROCESS_INFORMATION procInfo; 
memset (&startupInfo,0x00, sizeof (STARTUPINFO)); 
startupInfo.cb = sizeof (STARTUPINFO); 
::CreateProcess(szPath,NULL,NULL,NULL,FALSE,NORMAL_PRIORITY_CLASS,NULL,NULL,&startupInfo,&procInfo);
/*5.只运行一个实例*/
HANDLE m_hMutex = CreateMutex(NULL, FALSE, _T( "AetasServer" )); 
  
if (GetLastError() == ERROR_ALREADY_EXISTS) 
    AfxMessageBox(L "程序名称,已经运行" ); 
    CloseHandle(m_hMutex); 
    m_hMutex = NULL; 
    return FALSE; 
}
 
/*6.链接到库文件*/
#pragma comment(lib, "winspool.lib")
/*7.在窗口程序中输出信息到控制台*/
#include <io.h> 
#include <fcntl.h> 
  
void InitConsole() 
    int nRet= 0; 
    FILE * fp; 
    AllocConsole(); 
    nRet= _open_osfhandle(( long )GetStdHandle(STD_OUTPUT_HANDLE), _O_TEXT); 
    fp = _fdopen(nRet, "w" ); 
    *stdout = *fp; 
    setvbuf (stdout, NULL, _IONBF, 0); 
//程序退出时调用
FreeConsole( VOID );
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值