日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

WinCE切换GPRS

發(fā)布時(shí)間:2023/12/10 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 WinCE切换GPRS 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
// GPRSwitch.cpp : 定義應(yīng)用程序的入口點(diǎn)。 // #include "stdafx.h" #include "GPRSwitch.h" #include <windows.h> #include <commctrl.h> #include "GprsXmlConfig.h" #include <connmgr.h> #include <ras.h> #include <Raserror.h> //#include <stdio.h>#define MAX_LOADSTRING 100 #define WM_GPRSwitch WM_USER+7227 #define WM_CTLCENTER WM_USER+112 #define GPRS_STATUS_ON 1 #define GPRS_STATUS_OFF 0// 全局變量: HINSTANCE g_hInst; // 當(dāng)前實(shí)例 HANDLE hConnection; HRESULT hResult; DWORD dwStatus; GprsXmlConfig config; DWORD bufsize; DWORD numEntries; //FILE *fp; HWND hWndDes = NULL; // 接收消息的主程序句柄// 此代碼模塊中包含的函數(shù)的前向聲明: ATOM MyRegisterClass(HINSTANCE, LPTSTR); BOOL InitInstance(HINSTANCE, int); LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPTSTR lpCmdLine,int nCmdShow) {MSG msg;nCmdShow = SW_HIDE;// 執(zhí)行應(yīng)用程序初始化:if (!InitInstance(hInstance, nCmdShow)) {return FALSE;}HACCEL hAccelTable;hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_GPRSWITCH));// 主消息循環(huán):while (GetMessage(&msg, NULL, 0, 0)) {if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg)) {TranslateMessage(&msg);DispatchMessage(&msg);}}return (int) msg.wParam; }// // 函數(shù): MyRegisterClass() // // 目的: 注冊窗口類。 // // 注釋: // ATOM MyRegisterClass(HINSTANCE hInstance, LPTSTR szWindowClass) {WNDCLASS wc;wc.style = CS_HREDRAW | CS_VREDRAW;wc.lpfnWndProc = WndProc;wc.cbClsExtra = 0;wc.cbWndExtra = 0;wc.hInstance = hInstance;wc.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_GPRSWITCH));wc.hCursor = 0;wc.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH);wc.lpszMenuName = 0;wc.lpszClassName = szWindowClass;return RegisterClass(&wc); }BOOL InitInstance(HINSTANCE hInstance, int nCmdShow) {HWND hWnd;TCHAR szTitle[MAX_LOADSTRING] = _T("GPRS Switcher"); // 標(biāo)題欄文本TCHAR szWindowClass[MAX_LOADSTRING] = _T("TBWidget"); // 主窗口類名 g_hInst = hInstance; // 將實(shí)例句柄存儲在全局變量中 SHInitExtraControls();LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING); LoadString(hInstance, IDC_GPRSWITCH, szWindowClass, MAX_LOADSTRING);hWnd = FindWindow(szWindowClass, szTitle); if (hWnd) {return 0;} if (!MyRegisterClass(hInstance, szWindowClass)){return FALSE;}hWnd = CreateWindow(szWindowClass, szTitle, WS_VISIBLE,CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL);if (!hWnd){return FALSE;}ShowWindow(hWnd, nCmdShow);UpdateWindow(hWnd);hWndDes = FindWindow(_T("TBClass"), _T("TBMainWnd"));SendMessage(hWnd, WM_GPRSwitch, 0, 0);return TRUE; }LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) {switch (message) {case WM_GPRSwitch:RASCONN entries[25];bufsize = 0;numEntries = 0;bufsize = 25 * sizeof(RASCONN);entries[0].dwSize = sizeof(RASCONN);//必須RASCONNSTATUS status;//RAS狀態(tài)在ras.h中可以查找到。status.dwSize = sizeof(RASCONNSTATUS);//fp = fopen("GPRSwitch.log", "w");if(RasEnumConnections(entries, &bufsize, &numEntries) == 0) //枚舉所有活動(dòng)的連接 {if (numEntries == 0) //無GPRS連接 {RASDIALPARAMS rdParams;HRASCONN hRasConn = NULL;//初始化參數(shù)rdParams.dwSize = sizeof(RASDIALPARAMS);lstrcpy(rdParams.szEntryName, _T("GPRS"));lstrcpy(rdParams.szPhoneNumber, _T(""));lstrcpy(rdParams.szCallbackNumber, _T(""));lstrcpy(rdParams.szPhoneNumber, _T(""));lstrcpy(rdParams.szUserName, _T(""));lstrcpy(rdParams.szPassword, _T(""));lstrcpy(rdParams.szDomain, _T(""));DWORD dwRet;dwRet = RasDial(NULL, NULL, &rdParams, 0xFFFFFFFF, NULL, &hRasConn); //通過給窗體發(fā)送WM_RASDIALEVENT消息。if(dwRet != 0) //拔號失敗 {if (hWndDes != NULL){SendMessage(hWndDes, WM_CTLCENTER, WM_GPRSwitch, GPRS_STATUS_OFF);}}else{if (hWndDes != NULL){SendMessage(hWndDes, WM_CTLCENTER, WM_GPRSwitch, GPRS_STATUS_ON);}}exit(0);break;}for(DWORD i=0; i<numEntries; i++) // 有GPRS連接 {for (DWORD j=0; j<wcslen(entries[i].szEntryName)-4; j++){if (entries[i].szEntryName[j] == 'G'&& entries[i].szEntryName[j+1] == 'P'&& entries[i].szEntryName[j+2] == 'R'&& entries[i].szEntryName[j+3] == 'S'){RasHangUp(entries[i].hrasconn);while(RasGetConnectStatus(entries[i].hrasconn,&status)==0)//得到連接的狀態(tài)(能獲取得到) {Sleep(0); //Sleep(0)是指CPU交出當(dāng)前線程的執(zhí)行權(quán),讓CPU去執(zhí)行其他線程。 }break;}}//fwprintf(fp, _T("%d : %s\n"), i, entries[i].szEntryName); }if (hWndDes != NULL){SendMessage(hWndDes, WM_CTLCENTER, WM_GPRSwitch, GPRS_STATUS_OFF);}}//fclose(fp);exit(0);break;case WM_DESTROY:PostQuitMessage(0);break;case WM_CLOSE:exit(0);break;default:return DefWindowProc(hWnd, message, wParam, lParam);}return 0; }

?

// GPRSXmlConfig.h#pragma once /*! * 通過wap-provisioningdoc方式設(shè)置gprs連接 * 使用方式:枚舉網(wǎng)絡(luò)找一個(gè)名為CMWAP_GPRS的連接,(如果找不到新建一個(gè)名為CMWAP_GPRS的網(wǎng)絡(luò)連接), * 然后通過建立該連接來進(jìn)行網(wǎng)絡(luò)訪問 */ class GprsXmlConfig { public:GprsXmlConfig(void);~GprsXmlConfig(void);public:/* 創(chuàng)建一個(gè)名為CMWAP_GPRS的網(wǎng)絡(luò)設(shè)置*/BOOL CreateCmwapNetConfig();/*選擇名為CMWAP_GPRS的網(wǎng)絡(luò)設(shè)置的GUID*/BOOL findCmwapNetGuid(GUID&); };

?

// GprsXmlConfig.cpp #include "StdAfx.h" #include "GprsXmlConfig.h" #include <Cfgmgrapi.h> #include <connmgr.h> #include <connmgr_proxy.h> #pragma comment( lib,"cellcore.lib") #pragma comment(lib, "Aygshell.lib")GprsXmlConfig::GprsXmlConfig(void) { }GprsXmlConfig::~GprsXmlConfig(void) { }BOOL GprsXmlConfig::findCmwapNetGuid(GUID& guid) {BOOL rst = false;HRESULT hr = 0;int nIndex = 0;CONNMGR_DESTINATION_INFO DestInfo;//WCHAR wszDestGUIDStr[128];while ( (hr = ConnMgrEnumDestinations(nIndex,&DestInfo)) == 0 ){if (_tcscmp(_T("中國移動(dòng)WAP設(shè)置"),DestInfo.szDescription)==0){guid = DestInfo.guid;rst = true;break;}nIndex++;}return rst; }BOOL GprsXmlConfig::CreateCmwapNetConfig() {//AfxMessageBox(_T("開始創(chuàng)建連接"));LPCWSTR g_wszFavoriteXml = L"<wap-provisioningdoc>"L" <characteristic type=\"CM_Networks\">"L" <characteristic type=\"中國移動(dòng)WAP設(shè)置\">"L" <parm name=\"DestId\" value=\"{EA9A391E-7878-0D28-4CA2-21F8C61F1243}\"/>"L" </characteristic>"L" </characteristic>"L" <characteristic type=\"CM_GPRSEntries\">"L" <characteristic type=\"中國移動(dòng) GPRS 因特網(wǎng)\">"L" <parm name=\"DestId\" value=\"{EA9A391E-7878-0D28-4CA2-21F8C61F1243}\"/>"L" <characteristic type=\"DevSpecificCellular\">"L" <parm name=\"BearerInfoValid\" value=\"1\"/>"L" <parm name=\"GPRSInfoValid\" value=\"1\"/>"L" <parm name=\"GPRSInfoProtocolType\" value=\"2\"/>"L" <parm name=\"GPRSInfoL2ProtocolType\" value=\"PPP\"/>"L" <parm name=\"GPRSInfoAccessPointName\" value=\"cmwap\"/>"L" <parm name=\"GPRSInfoAddress\" value=\"\"/>"L" <parm name=\"GPRSInfoDataCompression\" value=\"1\"/>"L" <parm name=\"GPRSInfoHeaderCompression\" value=\"1\"/>"L" <parm name=\"GPRSInfoParameters\" value=\"\"/>"L" </characteristic>"L" </characteristic>"L" </characteristic>"L" <characteristic type=\"CM_ProxyEntries\">"L" <characteristic type=\"HTTP-{EA9A391E-7878-0D28-4CA2-21F8C61F1243}\">"L" <parm name=\"SrcId\" value=\"{EA9A391E-7878-0D28-4CA2-21F8C61F1243}\"/>"L" <parm name=\"DestId\" value=\"{436EF144-B4FB-4863-A041-8F905A62C572}\"/>"L" <parm name=\"Proxy\" value=\"10.0.0.172:80\"/>"L" <parm name=\"Enable\" value=\"1\"/>"L" <parm name=\"Type\" value=\"1\"/>"L" </characteristic>"L" <characteristic type=\"WAP-{EA9A391E-7878-0D28-4CA2-21F8C61F1243}\">"L" <parm name=\"SrcId\" value=\"{EA9A391E-7878-0D28-4CA2-21F8C61F1243}\"/>"L" <parm name=\"DestId\" value=\"{7022E968-5A97-4051-BC1C-C578E2FBA5D9}\"/>"L" <parm name=\"Proxy\" value=\"10.0.0.172:9201\"/>"L" <parm name=\"Enable\" value=\"1\"/>"L" <parm name=\"Type\" value=\"2\"/>"L" </characteristic>"L" </characteristic>"L"</wap-provisioningdoc>";HRESULT hr = E_FAIL;LPWSTR wszOutput = NULL;hr = DMProcessConfigXML(g_wszFavoriteXml, CFGFLAG_PROCESS, &wszOutput); // if (hr==S_OK) // { // AfxMessageBox(_T("創(chuàng)建連接成功!")); // }if (wszOutput){delete [] wszOutput;wszOutput=NULL;}return (hr==S_OK);}

?

轉(zhuǎn)載于:https://www.cnblogs.com/ZzzZzz/archive/2012/12/30/2839768.html

總結(jié)

以上是生活随笔為你收集整理的WinCE切换GPRS的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。