?? nettest.cpp
字號:
// nettest.cpp : 傾僾儕働乕僔儑儞梡偺僄儞僩儕 億僀儞僩偺掕媊
//
#include "stdafx.h"
#include "utilsys.h"
#define lengthof(exp) ((sizeof((exp)))/sizeof((*(exp))))
#define KEYNAME_TCPIP TEXT("Comm\\SMS91C111\\Parms\\TcpIp")
#define VALNAME_DHCP TEXT("EnableDHCP")
#define VALNAME_GATEWAY TEXT("DefaultGateway")
#define VALNAME_IPADDRESS TEXT("IpAddress")
#define VALNAME_SUBNETMASK TEXT("Subnetmask")
#define VALNAME_DNS TEXT("DNS")
#define VALNAME_WINS TEXT("WINS")
#define VALNAME_HOSTIPADDRESS TEXT("HostIpAddress")
#define FILENAME_INI TEXT("\\sdmemory\\ipaddr.ini")
static const TCHAR szRegKey[] = KEYNAME_TCPIP;
static const TCHAR szRegDhcp[] = VALNAME_DHCP;
static const TCHAR szRegGateWay[] = VALNAME_GATEWAY;
static const TCHAR szRegIPAddress[] = VALNAME_IPADDRESS;
static const TCHAR szRegSubnetMask[] = VALNAME_SUBNETMASK;
BOOL ReadIni(LPCWSTR pwszSection, LPCWSTR pwszKey, LPWSTR pwszValue, size_t cchValue, LPCWSTR pwszIniFile)
{
// GetPrivateProfileString is unavailable on CE
BOOL bSuccess = FALSE;
FILE * fin;
WCHAR wszLine[256];
LPWSTR pwsz = NULL;
if (!pwszIniFile ||
!pwszSection ||
!pwszKey ||
!pwszValue ||
!cchValue)
{
goto leave;
}
fin = _wfopen(pwszIniFile, L"r");
if (fin)
{
while (fgetws(wszLine, lengthof(wszLine), fin))
{
if (!wcsstr(wszLine, pwszSection)) // Section
{
continue;
}
while (fgetws(wszLine, lengthof(wszLine), fin)) // Key & Value
{
pwsz = wcschr(wszLine, L'=');
if (!pwsz)
{
continue;
}
*pwsz = L'\0'; // Erase the '='
if (0 != _wcsicmp(wszLine, pwszKey)) // Key
{
continue;
}
pwsz++; // Point to the value
bSuccess = StringCchCopyEx(
pwszValue,
cchValue,
pwsz,
&pwsz,
NULL,
0
);
if (bSuccess == 0)
{
if (*--pwsz == L'\n')
{
*pwsz = L'\0';
}
}
}
}
fclose(fin);
}
leave:
return bSuccess;
}
void SetRegistryDWORD(DWORD *dwState, LPCTSTR lpszRegKey, LPCTSTR lpszRegValue)
{
HKEY hKey;
if(ERROR_SUCCESS == RegOpenKeyEx(HKEY_LOCAL_MACHINE, lpszRegKey, 0, 0, &hKey))
{
RegSetValueEx(hKey, lpszRegValue, 0, REG_DWORD, (LPBYTE)dwState, sizeof(DWORD));
RegCloseKey(hKey);
}
else
{
RETAILMSG(1, (TEXT("NetTest: ERROR: RegOpenKeyEx()\r\n")));
}
}
void SetRegistryREG_SZ(LPCTSTR szState, LPCTSTR lpszRegKey, LPCTSTR lpszRegValue)
{
HKEY hKey;
if(ERROR_SUCCESS == RegOpenKeyEx(HKEY_LOCAL_MACHINE, lpszRegKey, 0, 0, &hKey))
{
RegSetValueEx(hKey, lpszRegValue, 0, REG_SZ, (BYTE *)szState, (wcslen(szState)+1)*sizeof(WCHAR));
RegCloseKey(hKey);
}
else
{
RETAILMSG(1, (TEXT("NetTest: ERROR: RegOpenKeyEx()\r\n")));
}
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)
{
DWORD EnableDHCP = 0; // dhcp
TCHAR szEnableDHCP[20]; // dhcp
TCHAR szIPAddress[20]; // IPADDRESS
TCHAR szHostIPAddress[20]; // HostIPAddress
TCHAR szGateWay[20]; // Default GateWay
TCHAR szSubnetMask[20]; // SubnetMask
TCHAR szDNS[20]; // DNS
TCHAR szWINS[20]; // WINS
BOOL status;
RETAILMSG(1, (TEXT("starting app...\r\n")));
//
// file ipaddr.ini 傛?zhèn)鑄CP/IP愝掕忣曬偲儂僗僩PC偺IP傾僪儗僗傪庢摼偡傞
//
#if 1
// EnableDHCP
status = ReadIni(L"[TcpIp]", VALNAME_DHCP, szEnableDHCP, 19, FILENAME_INI);
if(status == ERROR_SUCCESS) {
if(_wcsicmp(szEnableDHCP, L"1") == 0) {
EnableDHCP = 1;
}
RETAILMSG(1, (TEXT("EnableDHCP = %d\r\n"), EnableDHCP));
}
SetRegistryDWORD(&EnableDHCP, szRegKey, VALNAME_DHCP);
// IpAddress
status = ReadIni(L"[TcpIp]", VALNAME_IPADDRESS, szIPAddress, 19, FILENAME_INI);
if(status == ERROR_SUCCESS) {
RETAILMSG(1, (TEXT("IpAddress = %s\r\n"), szIPAddress));
SetRegistryREG_SZ(szIPAddress, szRegKey, VALNAME_IPADDRESS);
}else {
RETAILMSG(1, (TEXT("don't setting IpAddress \r\n")));
}
// DefaultGateway
status = ReadIni(L"[TcpIp]", VALNAME_GATEWAY, szGateWay, 19, FILENAME_INI);
if(status == ERROR_SUCCESS) {
RETAILMSG(1, (TEXT("DefaultGateway = %s\r\n"), szGateWay));
SetRegistryREG_SZ(szGateWay, szRegKey, VALNAME_GATEWAY);
}else {
RETAILMSG(1, (TEXT("don't setting DefaultGateway \r\n")));
}
// Subnetmask
status = ReadIni(L"[TcpIp]", VALNAME_SUBNETMASK, szSubnetMask, 19, FILENAME_INI);
if(status == ERROR_SUCCESS) {
RETAILMSG(1, (TEXT("Subnetmask = %s\r\n"), szSubnetMask));
SetRegistryREG_SZ(szSubnetMask, szRegKey, VALNAME_SUBNETMASK);
}else {
RETAILMSG(1, (TEXT("don't setting Subnetmask \r\n")));
}
// DNS
status = ReadIni(L"[TcpIp]", VALNAME_DNS, szDNS, 19, FILENAME_INI);
if(status == ERROR_SUCCESS) {
RETAILMSG(1, (TEXT("DNS = %s\r\n"), szDNS));
SetRegistryREG_SZ(szDNS, szRegKey, VALNAME_DNS);
}else {
RETAILMSG(1, (TEXT("don't setting DNS \r\n")));
}
// WINS
status = ReadIni(L"[TcpIp]", VALNAME_WINS, szWINS, 19, FILENAME_INI);
if(status == ERROR_SUCCESS) {
RETAILMSG(1, (TEXT("WINS = %s\r\n"), szWINS));
SetRegistryREG_SZ(szWINS, szRegKey, VALNAME_WINS);
}else {
RETAILMSG(1, (TEXT("don't setting WINS \r\n")));
}
// 峏怴撪梕偺斀塮
NdisRebindAdapter();
#endif
//
// 儂僗僩PC偵懳偟PING傪峴偆
//
// HostIpAddress
TCHAR szPingString[40];
SHELLEXECUTEINFO sei = { 0 };
status = ReadIni(L"[TcpIp]", VALNAME_HOSTIPADDRESS, szHostIPAddress, 19, FILENAME_INI);
if(status == ERROR_SUCCESS) {
RETAILMSG(1, (TEXT("HostIpAddress = %s\r\n"), szHostIPAddress));
}else {
RETAILMSG(1, (TEXT("don't read HostIpAddress\r\n")));
goto exit;
}
// wsprintf((LPTSTR)szPingString, _T("ping %s"), szHostIPAddress);
// wsprintf((LPTSTR)szPingString, _T("ping senoo"));
wsprintf((LPTSTR)szPingString, _T("ping"));
RETAILMSG(1, (TEXT("szPingString=%s\r\n"), szPingString));
//峔憿懱偺僒僀僘
sei.cbSize = sizeof(SHELLEXECUTEINFO);
//婲摦懁偺僂僀儞僪僂僴儞僪儖
sei.hwnd = NULL;
//婲摦屻偺昞帵忬懺
sei.nShow = SW_SHOWNORMAL;
//偙偺僷儔儊乕僞偑廳梫偱丄僙僢僩偟側(cè)偄偲SHELLEXECUTEINFO峔憿懱偺hProcess儊儞僶偑僙僢僩偝傟側(cè)偄丅
sei.fMask = SEE_MASK_NOCLOSEPROCESS;
sei.lpVerb = _T("open");
sei.lpFile = _T("ping");
sei.lpParameters = szHostIPAddress;
//僾儘僙僗婲摦
ShellExecuteEx(&sei);
//廔椆傪懸偮
WaitForSingleObject( sei.hProcess, INFINITE ) ;
exit:
RETAILMSG(1, (TEXT("ending app...\r\n")));
return 0;
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -