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

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;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值