Visual Basic-手机归属查询

偶然间看到了一份手机号码归属地的数据库,9000多页的内容真是惊呆了,想着把它做成C++,但UI着实不咋样,索性用Visual Basic写了一份基于网络的手机归属查询。

结构很简单,用一张picture做背景,增加一个Textbox,三个Label(一个输出,一个作为拖动窗口,一个作为关闭按钮)和一个Image(负责command类此的效果)。

数据库基于网络,也就是说必须联网才可以使用。

网络接口API是从网上找的, "http://www.096.me/api.php?phone=" + phone + "&mode=txt",其中phone就是手机号码。

利用两个函数获取网页的源码从而提取出来了手机归属地的信息,并利用Label. caption显示出来。

获取网页源码的函数:

Function getHTTPPage(url) '获取网站源码
On Error Resume Next
Dim http
Set http = CreateObject("MSXML2.XMLHTTP")
http.Open "GET", url, False
getHTTPPage = http.Send()
If http.ReadyState <> 4 Then
Debug.Print "无法连接服务器"
getHTTPPage = "无法连接服务器"
Exit Function
End If
getHTTPPage = BytesToBstr(http.responseBody, "GB2312")
Set http = Nothing
End Function

Function BytesToBstr(body, Cset) '转码
Dim objstream
Set objstream = CreateObject("adodb.stream")
objstream.Type = 1
objstream.Mode = 3
objstream.Open
objstream.Write body
objstream.position = 0
objstream.Type = 2
objstream.Charset = Cset
BytesToBstr = objstream.ReadText
objstream.Close
Set objstream = Nothing
End Function

拖动窗口的方法:

利用label,将label的属性backstyle=0即可,更改名称为:labFormTitle增加源码:

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, _
ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Function ReleaseCapture Lib "user32" () As Long
Private Const WM_SYSCOMMAND = &H112
Private Const SC_MOVE = &HF010&
Private Const HTCAPTIO = 2
Private Sub labFormTitle_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    ReleaseCapture 'WM_SYS向窗体发送一个移动窗体命令
    Call SendMessage(Me.hwnd, WM_SYSCOMMAND, SC_MOVE + HTCAPTIO, 0)
'SC_MOVE+ HTCAPTIO表示单击左键移动窗体
End Sub

获取源码中特定两个字符的方法:

Function GetByDiv(ByVal code As String, ByVal divBegin As String, divEnd As String)  '获取分隔符所夹的内容
    Dim lgStart As Long
    Dim lens As Long
    Dim lgEnd As Long
    lens = Len(divBegin)
    lgStart = InStr(1, code, divBegin) + CLng(lens)
    lgEnd = InStr(lgStart, code, divEnd)
    GetByDiv = Mid(code, lgStart, lgEnd - lgStart)
End Function

所以;总的源码:

Option Explicit
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, _
ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Function ReleaseCapture Lib "user32" () As Long
Private Const WM_SYSCOMMAND = &H112
Private Const SC_MOVE = &HF010&
Private Const HTCAPTIO = 2
Private Sub Image1_Click()
Dim phone
Dim web As String
Dim tem As String
phone = Text1.Text
web = "http://www.096.me/api.php?phone=" + phone + "&mode=txt"
'Text2.Text = web
tem = getHTTPPage(web)
Label1.Caption = GetByDiv(tem, "||", "||")
End Sub

Function getHTTPPage(url) '获取网站源码
On Error Resume Next
Dim http
Set http = CreateObject("MSXML2.XMLHTTP")
http.Open "GET", url, False
getHTTPPage = http.Send()
If http.ReadyState <> 4 Then
Debug.Print "无法连接服务器"
getHTTPPage = "无法连接服务器"
Exit Function
End If
getHTTPPage = BytesToBstr(http.responseBody, "GB2312")
Set http = Nothing
End Function

Function BytesToBstr(body, Cset) '转码
Dim objstream
Set objstream = CreateObject("adodb.stream")
objstream.Type = 1
objstream.Mode = 3
objstream.Open
objstream.Write body
objstream.position = 0
objstream.Type = 2
objstream.Charset = Cset
BytesToBstr = objstream.ReadText
objstream.Close
Set objstream = Nothing
End Function

Function GetByDiv(ByVal code As String, ByVal divBegin As String, divEnd As String)  '获取分隔符所夹的内容
    Dim lgStart As Long
    Dim lens As Long
    Dim lgEnd As Long
    lens = Len(divBegin)
    lgStart = InStr(1, code, divBegin) + CLng(lens)
    lgEnd = InStr(lgStart, code, divEnd)
    GetByDiv = Mid(code, lgStart, lgEnd - lgStart)
End Function
Private Sub labFormTitle_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    ReleaseCapture 'WM_SYS向窗体发送一个移动窗体命令
    Call SendMessage(Me.hwnd, WM_SYSCOMMAND, SC_MOVE + HTCAPTIO, 0)
'SC_MOVE+ HTCAPTIO表示单击左键移动窗体
End Sub
Private Sub Label2_Click()
End
End Sub
Private Sub Picture1_Click()

End Sub

运行结果:

 
    

GUI 比较单一,用了最简单的结构,效果还是一般吧。

虽然网上有很多类似的软件,可是制作的过程是快乐的。

@ Mayuko

时间: 2024-08-25 03:56:40

Visual Basic-手机归属查询的相关文章

微信公众平台开发(35)(天气预报、股票查询、手机归属查询、在线听音乐、翻译、成绩查询功能)代码分享

微信公众平台开发应用(天气预报.股票查询.手机归属查询.在线听音乐.翻译.成绩查询功能) 原文: http://www.cnblogs.com/imaker/p/5491433.html 1.xml(信息返回用扩展语言XML来传递值) $postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; //extract post data if (!empty($postStr)){ $postObj = simplexml_load_string($postStr

手机归属地查询

手机归属地查询 效果图: 分析: 1.传递多个参数,用一个类就好 2.打开数据库 private SQLiteDatabase database; database=SQLiteDatabase.openOrCreateDatabase(file, null); file是数据库的路径 3.在逻辑中多加判断 比如是否获取到正确的手机号 比如我们操作的字符串是否为空 比如时候获取正确参数 4.通过文件流来实现释放APK中包中的数据库文件到手机本地 5.需要用的数据库放在assets目录中 buff

PHP学习笔记:利用百度api实现手机归属地查询

从来没有用过api,都不知道怎么获得api的数据,跟着demo,然后修改,终于实现了手机号码查询的功能,代码和说明很全,大家试试. <?php /** * Created by jianqingwang * User: Administrator * Date: 2016/9/10 0010 * Time: 22:49 * 查询手机归属地 */ header("Content-type: text/html; charset=utf-8"); //传入查询的电话 //$phone

谈谈WebService开发-应用篇(一)---手机归属地查询

接续上一篇WebService基础,这里介绍一些常用应用的开发,主要是让大家练练手.后续还会介绍以后工作中常用的开发方式,采用CXF.AXIS2等第三方框架进行开发. 相信大家经常能看到一些网站有有手机归属地查询.天气预报等信息,那么这些信息是哪里来的呢?实际上是有一些单位提供了免费的webservice服务,那么哪里可以查到这些免费服务呢,大家可以到  Web服务(免费) 查询到不少免费的webservice服务,也可以访问这篇博文常用免费Webservice服务列表,里面收集了不少常用的免费

手机归属地查询api

手机归属地查询:可以查询到手机号码是哪的,属于移动,联通,还是电信等一系列情况.? 详情:?http://www.haoservice.com/docs/14 示例: { "error_code": "0", "reason": "Return Successd!", "result": { "province": "浙江", "city": &q

【安卓笔记】单机版手机归属地查询

既然是单机版,那么必然是查询本地数据库了,所以我们得准备一个离线数据库文件(下载地址:http://download.csdn.net/detail/rowandjj/7660979). 步骤: 1.创建一个工具类打开数据库: package cn.edu.chd.mobilesafe.db.dao; import android.database.sqlite.SQLiteDatabase; public class AddressDao { public static SQLiteDatab

手机归属地查询演示代码

手机归属地演示代码示例 申请key值(http://www.haoservice.com/docs/14 )后输入要查手机号就可以用了,刚测试完,没问题. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net.Security; using System.Security.Cryptography.X509Certificates; using

特性(C# 和 Visual Basic)

特性提供功能强大的方法,用以将元数据或声明信息与代码(程序集.类型.方法.属性等)相关联. reflection.' data-guid="716c0768f610f38427afe934e71f1d47">特性与程序实体关联后,即可在运行时使用名为"反射"的技术查询特性. Reflection (C# and Visual Basic).' data-guid="4484aa4f01eb3fabaeabfd2ce4c39248">有

【Visual Basic】vb6的ListView控件,对Access2003数据库的增删改查,判断是否有中文、多窗体操作

vb6对Access2003数据库的增删改查并不复杂,可以通过ado对象轻松完成,下面举个小例子,同时说明vb6中的ListView控件的使用.虽然在<[Visual Basic]列表控件ListView的增删改查.模态对话框.禁止窗口调整大小>曾经对VB.NET的ListView控件进行详细的说明,但是证明微软就是个坑爹货,vb6对于ListView实现的代码居然跟VB.NET有着彻底的不同,似乎换了一门语言似得的.改代码什么的最讨厌的. 首先,在vb6生成的工程文件夹中有着一个db1.md