WinCE切换GPRS

// GPRSwitch.cpp : 定义应用程序的入口点。
//

#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;            // 当前实例
HANDLE                hConnection;
HRESULT                hResult;
DWORD                dwStatus;
GprsXmlConfig        config;
DWORD                bufsize;
DWORD                numEntries;
//FILE *fp;
HWND                hWndDes = NULL;            // 接收消息的主程序句柄// 此代码模块中包含的函数的前向声明:
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;// 执行应用程序初始化:if (!InitInstance(hInstance, nCmdShow)) {return FALSE;}HACCEL hAccelTable;hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_GPRSWITCH));// 主消息循环:while (GetMessage(&msg, NULL, 0, 0)) {if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg)) {TranslateMessage(&msg);DispatchMessage(&msg);}}return (int) msg.wParam;
}//
//  函数: 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");        // 标题栏文本TCHAR szWindowClass[MAX_LOADSTRING] = _T("TBWidget");    // 主窗口类名
g_hInst = hInstance; // 将实例句柄存储在全局变量中
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状态在ras.h中可以查找到。status.dwSize = sizeof(RASCONNSTATUS);//fp = fopen("GPRSwitch.log", "w");if(RasEnumConnections(entries, &bufsize, &numEntries) == 0) //枚举所有活动的连接
            {if (numEntries == 0) //无GPRS连接
                {RASDIALPARAMS rdParams;HRASCONN hRasConn = NULL;//初始化参数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); //通过给窗体发送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)//得到连接的状态(能获取得到)
                            {Sleep(0);    //Sleep(0)是指CPU交出当前线程的执行权,让CPU去执行其他线程。
                            }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方式设置gprs连接
* 使用方式:枚举网络找一个名为CMWAP_GPRS的连接,(如果找不到新建一个名为CMWAP_GPRS的网络连接),
* 然后通过建立该连接来进行网络访问
*/
class GprsXmlConfig
{
public:GprsXmlConfig(void);~GprsXmlConfig(void);public:/* 创建一个名为CMWAP_GPRS的网络设置*/BOOL CreateCmwapNetConfig();/*选择名为CMWAP_GPRS的网络设置的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("中国移动WAP设置"),DestInfo.szDescription)==0){guid = DestInfo.guid;rst = true;break;}nIndex++;}return rst;
}BOOL GprsXmlConfig::CreateCmwapNetConfig()
{//AfxMessageBox(_T("开始创建连接"));LPCWSTR g_wszFavoriteXml = L"<wap-provisioningdoc>"L"    <characteristic type=\"CM_Networks\">"L"        <characteristic type=\"中国移动WAP设置\">"L"            <parm name=\"DestId\" value=\"{EA9A391E-7878-0D28-4CA2-21F8C61F1243}\"/>"L"        </characteristic>"L"    </characteristic>"L"    <characteristic type=\"CM_GPRSEntries\">"L"        <characteristic type=\"中国移动 GPRS 因特网\">"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("创建连接成功!"));
// }if (wszOutput){delete [] wszOutput;wszOutput=NULL;}return (hr==S_OK);}

 

转载于:https://www.cnblogs.com/ZzzZzz/archive/2012/12/30/2839768.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/266543.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

url模糊匹配优化_企业必备的网站SEO优化解决方案

一、网站优化与调整倡议一个好网站不只要满足阅读者&#xff0c;还要契合搜索引擎规则、满足搜索引擎快照抓取、赋予评级、提升关键词排序等。我们站在用户角度和搜索引擎规则根底上为您提供一套完好的SEO处理计划SEO处理计划SEO倡议大纲&#xff1a;1、目的客户剖析与定位&…

项目实战 编辑

编辑本目录 01 博客系统功能需求 编辑 02 设计表结构 编辑 03 登录认证 编辑 04 用户注册 编辑 05 首页设计 编辑 06 文章详情页设计 编辑 07 后台管理页面 编辑转载于:https://www.cnblogs.com/yaya625202/p/9354610.html

全国计算机等级考试题库二级C操作题100套(第17套)

第17套&#xff1a; 程序通过定义学生结构体数组&#xff0c;存储了若干名学生的学号、姓名和3门课的成绩。函数fun的功能是将存放学生数据的结构体数组&#xff0c;按照姓名的字典&#xff08;从小到大&#xff09;排序。 请在程序的下划线处填入正确的内容并把下划线删除, …

中文能用rsa加密吗_外文文献数据库能用中文词进行检索吗?

大家使用外文文献数据库进行检索的时候可能想过一个问题&#xff1a;我们可以使用中文关键词进行检索吗&#xff1f;上文献检索课的老师可能会这样回答&#xff1a;在一般情况下&#xff0c;是不可以的。那么实际情况是怎样的呢&#xff1f;我们找几个外文文献数据库来验证一下…

长链接转短链接java_长链接生成短链接Java源码(调用百度接口)

public static DefaultHttpClient httpclient;static {httpclient new DefaultHttpClient();//httpclient (DefaultHttpClient) HttpClientConnectionManager.getSSLInstance(httpclient); // 接受任何证书的浏览器客户端}/*** 生成短连接信息** author: zhaojinhui* date: 2…

python学习[第十三篇] 条件和循环

python学习[第十三篇] 条件和循环 if语句 单一if 语句 if语句有三个部分构成&#xff0c;关键字if本身&#xff0c;判断结果真假的条件表达式&#xff0c;以及表达式为真或非0是执行的代码 if expression: expr_true_suite 条件表达式可以是多重的 通过布尔操作符 and or not来…

【maven3学习之三】maven构建一个简单的Hello World

2019独角兽企业重金招聘Python工程师标准>>> 在写之前我先需要配置一下setting.xml。 首先是localRepository&#xff0c;默认情况下是【你的用户目录】/.m2/repository作为本地库的目录&#xff0c;但是我希望将其放在D:\maven_localRepository的目录下面。 如果…

全国计算机等级考试题库二级C操作题100套(第18套)

第18套&#xff1a; 给定程序中&#xff0c;函数fun的功能是&#xff1a;将形参s所指字符串中的所有字母字符顺序前移&#xff0c;其他字符顺序后移&#xff0c;处理后新字符串的首地址作为函数值返回。 例如&#xff0c;s所指字符串为:asd123fgh543df,处理后新字符串为:asdfgh…

python营销骗局_python案例:金融营销活动中欺诈用户行为分析

首先&#xff0c;数据导入 1 importnumpy as np2 importpandas as pd3 from collections importCounter4 importmatplotlib.pyplot as plt5 from pymining importitemmining,assocrules,perftesting,seqmining6 importpyecharts as pe7 rtpd.read_csv(r"E:\transaction_tr…

java 重定向 https_使用简单身份验证从HTTP重定向到HTTPS

我希望得到一些关于如何使用带有ember-simple-auth的ember初始化程序将用户从HTTP重定向到HTTPS的建议 .import ENV from cio/config/environmentSSLInitializer name: sslbefore: simple-auth-cookie-storeinitialize: (container, application) ->application.deferReadin…

你真的会数钱吗?

本文已迁移至&#xff1a;http://thinkinside.tk/2013/01/01/money.html 快年底了&#xff0c;假如你们公司的美国总部给每个人发了一笔201212.21美元的特别奖金&#xff0c;作为程序员的你&#xff0c; 该如何把这笔钱收入囊中&#xff1f; Table of Contents 1 美元&#xff…

Maven 系统环境变量配置

Download http://maven.apache.org/download.cgi http://mirrors.shu.edu.cn/apache/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.zip 环境变量 1.添加 MAVEN_HOME&#xff1a; 变量名&#xff1a;MAVEN_HOME  变量值&#xff1a;C:\Program\apache-maven-3.5.4 注…

全国计算机等级考试题库二级C操作题100套(第19套)

第19套&#xff1a; 程序通过定义学生结构体变量&#xff0c;存储了学生的学号、姓名和3门课的成绩。函数fun的功能是将形参a所指结构体变量s中的数据进行修改,并把a中地址作为函数值返回主函数&#xff0c;在主函数中输出修改后的数据。 例如&#xff1a;a所指变量s中的学号…

eclipse中文乱码解决_解决git status显示中文文件名乱码问题

使用 git status 查看本地有改动但未提交的中文文件名时&#xff0c;发现会显示为一串数字&#xff0c;没有显示中文的文件名。具体如下所示&#xff1a;$ git status# 位于分支 master# 尚未暂存以备提交的变更:# (使用 "git add ..." 更新要提交的内容)# (使用 &qu…

MongoDB 3.X 用户权限控制

摘要&#xff1a; MongoDB 3.0 安全权限访问控制&#xff0c;在添加用户上面3.0版本和之前的版本有很大的区别&#xff0c;这里就说明下3.0的添加用户的方法。 环境、测试&#xff1a; 在安装MongoDB之后&#xff0c;先关闭auth认证&#xff0c;进入查看数据库&#xff0c;只有…

oracle和sql server取第一条记录的区别以及rownum详解

我们知道学生可能有重名的情况&#xff0c;那么当重名的时候假设只需要取得重名结果集中的第一条记录。 sql server:select top(1) num,Name from M_Student where name xy Oracle:select num,Name from M_Student where name xy and rownum < 1 对于rownum在oracle的使用…

全国计算机等级考试题库二级C操作题100套(第20套)

第20套&#xff1a; 给定程序中&#xff0c;函数fun的功能是&#xff1a;计算形参x所指数组中N个数的平均值&#xff08;规定所有数均为正数&#xff09;,将所指数组中小于平均值的数据移至数组的前部&#xff0c;大于等于平均值的数据移至x所指数组的后部&#xff0c;平均值作…

java enum 变量_java枚举使用详解

package com.ljq.test;/*** 枚举用法详解** author jiqinlin**/public class TestEnum {/*** 普通枚举** author jiqinlin**/public enum ColorEnum {red, green, yellow, blue;}/*** 枚举像普通的类一样可以添加属性和方法&#xff0c;可以为它添加静态和非静态的属性或方法**…

c#小游戏_C#小游戏—钢铁侠VS太空侵略者

身为漫威迷&#xff0c;最近又把《钢铁侠》和《复仇者联盟》系列又重温了一遍&#xff0c;真的是印证了那句话&#xff1a;“读书百遍&#xff0c;其意自现”。看电影一个道理&#xff0c;每看一遍&#xff0c;都有不懂的感受~ 不知道大伙是不是也有同样的感受&#xff0c;对于…

输入年份月份判断是平年还是闰年及这个月有多少天

import java.util.Scanner;public class year {public static void main(String[] args) {System.out.println("请输入年份");Scanner sc new Scanner(System.in);int s sc.nextInt();System.out.println("请输入月份");Scanner sc1 new Scanner(System…