//自己封装的几个函数方便记忆

来源:互联网 发布:2017淘宝如何投诉盗图 编辑:程序博客网 时间:2024/05/22 14:52
void bootUp()//将本目录写入注册表
{
//设置程序开机启动
HKEY hKey;
//找到系统的启动项   
CString lpRun = _T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run");
//打开启动项Key   
long lRet = RegOpenKeyEx(HKEY_CURRENT_USER, lpRun, 0, KEY_ALL_ACCESS, &hKey);
if (lRet == ERROR_SUCCESS)
{
TCHAR pFileName[MAX_PATH] = { 0 };
//得到程序自身的全路径   
DWORD dwRet = GetModuleFileName(NULL, pFileName, MAX_PATH);
_tcscat(pFileName, _T(" -auto"));
//添加一个子Key,并设置值, 下面应用程序名字(不加后缀.exe)  
lRet = RegSetValueEx(hKey, _T("AppName"), 0, REG_SZ, (LPBYTE)pFileName, (lstrlen(pFileName) + 1) * sizeof(TCHAR));
//关闭注册表   
RegCloseKey(hKey);
if (lRet != ERROR_SUCCESS)
{
return ;
}
}
////取消程序开机启动
//
//HKEY hKey;

////找到系统的启动项   
//CString lpRun = _T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run");

//long lRet = RegOpenKeyEx(HKEY_CURRENT_USER, lpRun, 0, KEY_ALL_ACCESS, &hKey);
//if (lRet == ERROR_SUCCESS)
//{
//RegDeleteValue(hKey, _T("AppName"));

////关闭注册表   
//RegCloseKey(hKey);

//return;
//}
}

void GetKeyData()//获取主机名、mac地址、ip地址
{
//初始套接字
WSADATA WSAData;
if (WSAStartup(MAKEWORD(2, 0), &WSAData) != 0)
{
return ;
}
//本机名称获取
char sHostName[100];
gethostname(sHostName, sizeof(sHostName));
GetDlgItem(IDC_HOSTNAME2)->SetWindowText((CString)sHostName);
//本机信息获取
struct hostent FAR * lpHostEnt = gethostbyname(sHostName);
m_hostName[256] = sHostName;
if (lpHostEnt == NULL)
{
MessageBox(_T("error"));
}
//获取IP
LPSTR lpAddr = lpHostEnt->h_addr_list[0];
if (lpAddr)
{
struct in_addr inAddr;
memmove(&inAddr, lpAddr, 4);
CString str;
str = inet_ntoa(inAddr);
m_edit = str;
UpdateData(0);
DWORD  dw1 = inet_addr(inet_ntoa(inAddr));
WORD  wd1 = LOWORD(dw1);//取高十六位
WORD  wd2 = HIWORD(dw1);//取低十六位
BYTE  bte1 = LOBYTE(wd1);
BYTE  bte2 = HIBYTE(wd1);
BYTE  bte3 = LOBYTE(wd2);
BYTE  bte4 = HIBYTE(wd2);
m_ip.SetAddress(bte1, bte2, bte3, bte4);
m_ipAddr[12] = str;
}
char lpszMac[128];
memset(lpszMac, 0x00, sizeof(lpszMac));

//获取MAC

CString sMACAddress;
PIP_ADAPTER_INFO pAdapterInfo;
DWORD AdapterInfoSize;
TCHAR szMac[32] = { 0 };
DWORD Err;
AdapterInfoSize = 0;

Err = GetAdaptersInfo(NULL, &AdapterInfoSize);
if ((Err != 0) && (Err != ERROR_BUFFER_OVERFLOW))
{
TRACE("获得网卡信息失败!");
return;
}

//  分配网卡信息内存
pAdapterInfo = (PIP_ADAPTER_INFO)GlobalAlloc(GPTR, AdapterInfoSize);

if (pAdapterInfo == NULL)
{
TRACE("分配网卡信息内存失败");
return ;
}
if (GetAdaptersInfo(pAdapterInfo, &AdapterInfoSize) != 0)
{
TRACE(_T("获得网卡信息失败!\n"));
GlobalFree(pAdapterInfo);
return ;
}

//GetDlgItem(IDC_MAC_ADDR)->SetWindowText(sMACAddress);
sMACAddress.Format(_T("%02X%02X%02X%02X%02X%02X"),
pAdapterInfo->Address[0],
pAdapterInfo->Address[1],
pAdapterInfo->Address[2],
pAdapterInfo->Address[3],
pAdapterInfo->Address[4],
pAdapterInfo->Address[5]);
GetDlgItem(IDC_MAC_ADDR)->SetWindowText(sMACAddress);
GlobalFree(pAdapterInfo);
m_macAddr[12] = sMACAddress;
//清理套接字
WSACleanup();
return;
}
 
//加入托盘消息 ON_MESSAGE(WM_TRAY_NOTIFICATION, &CclientDlg::OnTrayNotification)
//托盘消息响应函数
LRESULT OnTrayNotification(WPARAM wParam, LPARAM lParam)
{
switch (lParam) 
{
case WM_RBUTTONUP:
{
LPPOINT lpoint = new tagPOINT;
::GetCursorPos(lpoint);
CMenu Menu;
Menu.CreatePopupMenu();
Menu.AppendMenuW(MF_STRING, WM_DESTROY, L"关闭");
Menu.TrackPopupMenu(TPM_LEFTALIGN, lpoint->x, lpoint->y, this);
SetForegroundWindow();
HMENU hmenu = Menu.Detach();
delete lpoint;
}break;
case WM_LBUTTONDBLCLK:
{
ShowWindow(SW_SHOW);
}break;
}
return 0;
}
//托盘消息映射函数
BOOL TrayMessage(HWND hWnd, DWORD dwMessage, HICON hIcon, LPCWSTR pszTip)
{
BOOL bReturn;
NOTIFYICONDATA NofityData;
NofityData.cbSize = (DWORD)sizeof(NOTIFYICONDATA);
NofityData.hWnd = hWnd;
NofityData.uID = IDR_MAINFRAME;
NofityData.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP;
NofityData.uCallbackMessage = WM_TRAY_NOTIFICATION;
NofityData.hIcon = hIcon;
lstrcpyn(NofityData.szTip, pszTip, sizeof(NofityData.szTip));
bReturn = Shell_NotifyIcon(dwMessage, &NofityData);
if (hIcon)DestroyIcon(hIcon);
return bReturn;
}
0 0