精华内容
下载资源
问答
  • 隐藏开始按钮或工具栏的VB代码,主要功能,隐藏开始菜单,隐藏工具栏,显示工具栏和开始菜单,改变开始按钮位置,更换开始按钮等功能。
  • 隐藏开始按钮或工具栏的VB代码,主要功能,隐藏开始菜单,隐藏工具栏,显示工具栏和开始菜单,改变开始按钮位置,更换开始按钮等功能。
  • 隐藏、显示开始按钮程序(VB6.0代码编写) 隐藏、显示开始按钮。 QQ223857666勾月
  • 隐藏、显示开始按钮程序"FindWindowA","FindWindowExA"的应用(VB6.0源代码编写) 隐藏、显示开始按钮。 "FindWindowA" (ByVal lpClassName As String, _ ByVal lpWindowName As String) As Long Private Declare ...
  • VB定时关机代码

    2015-10-25 17:42:10
    VB定时关机代码 简单的VB定时 关机 记时开始的时候可以发出声音 新建一个窗体FROM1 和一个 按钮 Command1 添加 一个 Timer1 控件 和 Label1 Dim ss, mm, hh As Integer   Private qdtime '变量保存计时...
    
    VB定时关机代码

    简单的VB定时 关机 记时开始的时候可以发出声音

    新建一个窗体FROM1 和一个 按钮 Command1

    添加 一个 Timer1 控件 和 Label1

    Dim ss, mm, hh As Integer

     

    Private qdtime                               '变量保存计时起点
    Private imglft As Integer                    '退出图标左坐标初值
    '下面为关机的 WIMDOWS API 函数声明
    Private Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long, ByVal dwReserved As Long) As Long
    Enum HowExitConst
                  EWX_FORCE = 4     '强制关机
                  EWX_LOGOFF = 0    '注销
                  EWX_REBOOT = 2    '重开机
                  EWX_SHUTDOWN = 1 '可关机98 但在2000下关机最后出现“ 现在可以安全关机”的问题
                  EWX_POWEROFF = 8 '可以关闭Windows NT/2000/XP:计算机的:

    End Enum
    Const TOKEN_ADJUST_PRIVILEGES = &H20
    Const TOKEN_QUERY = &H8
    Const SE_PRIVILEGE_ENABLED = &H2
    Const ANYSIZE_ARRAY = 1
    Private Type LUID
         lowpart As Long
         highpart As Long
    End Type

    Private Type LUID_AND_ATTRIBUTES
         pLuid As LUID
         Attributes As Long
    End Type

    Private Type TOKEN_PRIVILEGES
         PrivilegeCount As Long
         Privileges(ANYSIZE_ARRAY) As LUID_AND_ATTRIBUTES
    End Type

    Private Declare Function GetCurrentProcess Lib "kernel32" () As Long

    Private Declare Function LookupPrivilegeValue Lib "advapi32.dll" Alias _
            "LookupPrivilegeValueA" (ByVal lpSystemName As String, _
            ByVal lpName As String, lpLuid As LUID) As Long
           
    Private Declare Function AdjustTokenPrivileges Lib "advapi32.dll" _
            (ByVal TokenHandle As Long, ByVal DisableAllPrivileges As Long, _
            NewState As TOKEN_PRIVILEGES, ByVal BufferLength As Long, _
            PreviousState As TOKEN_PRIVILEGES, ReturnLength As Long) As Long
           
    Private Declare Function OpenProcessToken Lib "advapi32.dll" _
            (ByVal ProcessHandle As Long, ByVal DesiredAccess As Long, _
             TokenHandle As Long) As Long
            
            
    Private Sub AdjustToken()                          '关闭2000/XP前要先得到关机的特权
    Dim hdlProcessHandle As Long
    Dim hdlTokenHandle As Long
    Dim tmpLuid As LUID
    Dim tkp As TOKEN_PRIVILEGES
    Dim tkpNewButIgnored As TOKEN_PRIVILEGES
    Dim lBufferNeeded As Long
    hdlProcessHandle = GetCurrentProcess()
    OpenProcessToken hdlProcessHandle, (TOKEN_ADJUST_PRIVILEGES Or TOKEN_QUERY), _
           hdlTokenHandle
    'Get the LUID for shutdown privilege.
    LookupPrivilegeValue "", "SeShutdownPrivilege", tmpLuid
    tkp.PrivilegeCount = 1 ' One privilege to set
    tkp.Privileges(0).pLuid = tmpLuid
    tkp.Privileges(0).Attributes = SE_PRIVILEGE_ENABLED
    'Enable the shutdown privilege in the access token of this process.
    AdjustTokenPrivileges hdlTokenHandle, False, tkp, Len(tkpNewButIgnored), _
                          tkpNewButIgnored, lBufferNeeded
    End Sub


    Private Function hmstostring(ByVal h As Integer, ByVal m As Integer, ByVal s As Integer) As String
    Dim hhs, mms, sss As String
    If h < 10 Then
         hhs = "0" + Trim(Str(h))
    Else
         hhs = Trim(Str(h))
    End If
    If m < 10 Then
         mms = "0" + Trim(Str(m))
    Else
         mms = Trim(Str(m))
    End If
    If s < 10 Then
         sss = "0" + Trim(Str(s))
    Else
         sss = Trim(Str(s))
    End If
    hmstostring = hhs + ":" + mms + ":" + sss
    End Function
    Private Sub Command1_Click()
    Timer1.Enabled = False
    End Sub
    Private Sub Form_Load()
    valuetime = 5       '设置关机时间 /分钟
    Timer1.Enabled = True
    hh = Int(valuetime / 60)   ' 转换时间格式
    mm = valuetime - hh * 60
    ss = 0
    Label1.Caption = hmstostring(hh, mm, ss)
    End Sub


    Private Sub Timer1_Timer()
    If ss < 1 Then
         If mm < 1 Then
           If hh < 1 Then
              Timer1.Interval = 0
         
          AdjustToken                              '关闭2000/XP前要先得到关机的特权
       Call ExitWindowsEx(EWX_POWEROFF, 0)            '关机
              Exit Sub
           Else
              hh = hh - 1
              mm = 59
              ss = 60
             
           End If
         Else
           mm = mm - 1
           ss = 60
         End If
    Else
         ss = ss - 1
         Beep                                             '发出声音
    End If
         Label1.Caption = hmstostring(hh, mm, ss)

    展开全文
  • VB隐藏/显示windows的“开始菜单”,点一下按钮开始菜单就会消失了,呜呜,不要这样哦,不过没关系,用本程序还能恢复的,一个小代码,供新手参阅,帮助了解了解Windows相关的编程知识。
  • 收集一些VB杂项源代码,可供学习参考,这些代码主要有:获取本机网卡物理地址、聊天室、获取CPU信息、在局域网内发送消息、隐藏开始按钮或工具栏、一个下载程序、通过ADO访问和改变SQL Server BLOB数据库、从DLL和...
  • 工作环境:Windows操作系统,Microsoft Access2010(需安装完整版)数据库部分字段和内容如下图:数据库部分字段图数据库数据图有了米,开始下锅,大致步骤是:新建窗体——放置按钮——为按钮编写事件代码。...

    因工作需要,同时为了避免大量繁琐工作,特研究了一下VB操作Access数据库,代码编写好后一劳永逸,极大提高了效率。本人是VB小白,在网上查阅了一些资料后动手操作,记录以备查阅。

    工作环境:Windows操作系统,Microsoft Access2010(需安装完整版)

    数据库部分字段和内容如下图:

    数据库部分字段图

    147573514_1_20181119012711919

    数据库数据图

    147573514_2_20181119012712372

    有了米,开始下锅,大致步骤是:新建窗体——放置按钮——为按钮编写事件代码。

    打开上图文件名为users的Access数据库(库中包含一个users表,表内有上千条数据),然后按如下步骤操作。

    1、创建窗体

    147573514_3_20181119012712653

    2、在窗体上放置按钮

    147573514_4_20181119012712809

    将窗体模式改为设计视图

    147573514_5_2018111901271391

    3、设置按钮属性并编写事件代码

    为按钮设置一个标题

    147573514_6_20181119012713231

    为按钮注册事件

    147573514_7_20181119012713559

    进入到VB编辑模式:

    147573514_8_2018111901271475

    编写VB代码,在Private Sub Command0_Click()和End Sub之间编写代码,如下图:

    147573514_9_20181119012714309

    语句str1、str2的完整代码如下:

    str1 = "UPDATE users SET carWeight=carWeight-overWeight-int(rnd(billNum)*800),overWeightPercent='0' WHERE overWeight>1000 AND limiteWeight<>0 AND date BETWEEN '" + startDate + "' AND '" + endDate + "'"

    str2 = "UPDATE users SET carWeight=int(carWeight/10)*10,overWeight=0 WHERE overWeight>1000 AND limiteWeight<>0 AND date BETWEEN '" + startDate + "' AND '" + endDate + "'"

    特别需要注意的是:Access数据库中SQL语句中日期值要用单引号引起来,在VB语言中,一个单引号开头表示注释。SQL语句是字符串,字符串用双引号引起来,里面的日期值再使用单引号引起来。另外由于在声明变量时startDate和endDate是字符串值,在SQL语句拼接变量时,语句中的单引号不能漏掉,否则报错。

    4、保存窗体,并为窗体取名字

    147573514_10_20181119012714653

    5、运行

    进入“窗体视图”,点击窗体上的按钮,就可以执行自己编写的VB代码了,运行结果如下图:

    147573514_11_20181119012714856

    VB语法和函数的使用均查阅网络和MSDN手册,经过不断尝试,出错调试终得成功!

    展开全文
  • 隐藏Win9X中任务栏上的“开始按钮VB经典源码,别的地方都找不到,本人长期提供原创源码,请到我的博客www.cpu7.net编程资料栏获取。
  • 第一个窗体的代码: Public Class Form1 Private Sub Label1_...现在调试第一个窗体的代码,点击第一个窗体的“开始按钮后,却无法弹出第二个窗体。 本人刚开始学习VB,也许问题很幼稚,请大侠不吝赐教!先谢过。
  • VB鼠标控制的演示源代码,与获取坐标有关,请在单击“开始演示”按钮后,请不要做任何操作。 实现思路: 先获得Command1在屏幕上的坐标,然后获得要移动到的位置的光标的坐标,再获得当前光标的坐标。
  • vb贪食蛇源代码

    2012-04-21 16:52:54
    vb小游戏定义蛇的运动速度枚举值 Private Enum tpsSpeed QUICKLY = 0 SLOWLY = 1 End Enum '定义蛇的运动方向枚举值 Private Enum tpsDirection D_UP = 38 D_DOWN = 40 D_LEFT = 37 D_RIGHT = 39 End Enum '...
  • VB格式化磁盘、格式化指定驱动器源代码,选择盘符,点击“开始按钮,即刻运行格式化操作。它能够判断磁盘的类别,比如可移动磁盘或本地磁盘。源码爱好者提示:请小心测试操作啊,以免丢失数据。程序运行结果,请看...
  •  纯VB6代码精仿QQ截图,抓屏模块功能,纯Vb代码编写,比之前上传的那些接近Qq截图的功能,也比较完整,代码内有画文本和椭圆的函数。  截图实现部分:确定鼠标XY输入点坐标,确定区域的范围,判断鼠标是否位于...
  • 这款拼图游戏源码基于VB6.0写成。游戏操作简单。首先点击“选择图片”按钮,出来对话框,选择图片。然后选择难度等级或不计时,点击“开始游戏”按钮开始游戏。若是计时游戏,可以在游戏过程中暂停,同时画面中的...
  • VB编写开发的JS特效代码生成工具,...生成前你需要选择这些特效,在文字栏输入你的文字 ,点击下方的生成按钮开始生成了,显示生成进度,不过生成速度有点慢,可能程序还有待进一步完善,运行效果图如上所示。
  • Vb6.0开发的仿QQ截图,抓屏模块功能代码,纯Vb代码编写,比之前上传的那些接近Qq截图的功能,也比较完整,代码内有画文本和椭圆的函数。 截图实现部分: 确定鼠标XY输入点坐标,确定区域的范围,判断鼠标是否...
  • 单击任意一个按钮,就开始了游戏。 具体的规则和逻辑是: 1,鼠标左击则弹开一个雷区,如果是炸弹,则游戏结束,如果不是炸弹且其周围有炸弹,那么将会出现一个数字,指示玩家周围有几个炸弹。如果不是炸弹且周围也...

    **

    扫雷游戏完整教程及代码

    **

    扫雷是一个非常经典的windows游戏,相信每个人都玩过。我做的这个扫雷基本上继承了windows中扫雷的玩法。通过菜单栏中的新游戏,选择一个游戏难度,即可进入扫雷界面。单击任意一个按钮,就开始了游戏。

    具体的规则和逻辑是:

    1,鼠标左击则弹开一个雷区,如果是炸弹,则游戏结束,如果不是炸弹且其周围有炸弹,那么将会出现一个数字,指示玩家周围有几个炸弹。如果不是炸弹且周围也没有炸弹,那么则自动弹开周围所有的雷区,并按照上述规则做递归执行。这里用到了递归思想。

    2,对一个数字区双击鼠标左击或者同时按下左键和右键时,可以自动为用户检查周围雷区,如果满足条件,则会自动弹开所有周围雷区。其中同时按下左键和右键这个功能,在VB中是没有此类事件的,其难点在于左键和右键的单击事件在vb中是单独的事件过程,而玩家在“同时”按下左键和右键时,其实并不是真正的同时,而是有一定的时间间隔的。这里我用了一个方法完美的完成了这个功能。大概逻辑就是,当用户按下一个左键或者右键时,那么记录此时的时间1,然后在按下另外一个右键或者左键时,记录时间2,如果时间1和时间2的间隔小于一个设定值时,那么认为玩家同时按下了左键和右键,具体代码见下方。

    3,鼠标右键可以标记某个雷区,在三种状态中来回切换(不标记,标记,问号)

    4,游戏中的排行榜功能,用到了文件操作,这里使用的是txt文本来记录玩家的记录。仅记录打破记录的时间和玩家姓名。

    5,扫雷结束有三种方式:玩家主动退出、玩家扫雷失败、玩家扫雷成功。扫雷成功的判断条件是:当用户标记(即红旗)的数量与游戏中隐藏的炸弹数量一致时,判断其所有标记是否正确,如果正确则提示扫雷成功。

    6,游戏难度分为4个等级,当时,我这里采用的是function函数,可以自定义任意难度,而不需要修改代码,只需要输入不同的参数即可,非常的方便。

    7,第一个必定不是雷,新的扫雷游戏为了提升玩家体验,已经自动适配,让玩家点的第一个格子必定不是炸弹,且一定是一个空格子,因为空格子可以自动弹开周围的雷区。

    下面看一下这个游戏的界面:

    1,主界面
    主界面

    2,扫雷界面(中等难度)

    在这里插入图片描述

    3,扫雷界面(骨灰级难度)

    在这里插入图片描述

    4,扫雷失败时

    在这里插入图片描述
    5,扫雷成功并打破记录时
    在这里插入图片描述

    6,排行榜界面
    在这里插入图片描述

    下面看一下整个工程结构:

    文件目录比较简单,需要注意的是,要在工程所在目录下建立一个image文件夹,用于存放用到的图片。并在工程所在目录同级下建立一个rank.txt文件,用来记录玩家排行榜。当然rank.txt文件不建立也没关系,因为代码中可以自动创建。

    在这里插入图片描述

    Image文件夹中需要准备以下这些图片和图标。这些都可以在网上找到。图标和图片不一定要和我的一样,但是命名必须一样,格式也要一样。图片大小也要差不多大小的。

    在这里插入图片描述

    工程包含两个窗体,如下所示:
    在这里插入图片描述

    接着我们分别来看一下两个窗体中的控件布置:

    窗体1(form1)包含了菜单栏、一个frame2(其中包含两个标签和2个文本框),一个frmae1(其中包含一个按钮和一个标签),一个Image1图像,一个timer1
    在这里插入图片描述

    菜单栏设计如下:
    在这里插入图片描述

    Frame1框架中包含:
    一个按钮和一个标签。Label3(0)和Command1(0)两个控件数组。控件数组是将其index属性值设置为非空,这里是设置的0,这样可以利用控件数组方便的控制控件的数量和大小位置。

    Frame2框架中包含:
    两个标签和2个文本框,名称分别是:Label1和Label2,Text1和Text2,分别用于显示游戏进行的时间和排雷的数量。

    窗体2中,包含了一个frame1控件,和若干标签,标签名称见下图所示。
    在这里插入图片描述

    下面来看完整的代码:

    窗体Form1的代码如下:

    Option Explicit
    Dim IndexMax%  'command1按钮编号索引
    Dim a%()    '对应每个command1的属性,-1表示是炸弹,0表示其周围没有炸弹,大于1表示周围有几个炸弹
    Dim B$()    '对应每个按钮的标记情况,flag表示旗子,""表示未标记," "表示周围没有炸弹且已被点击
    Dim rows%, cols%    '行数和列数
    Dim bs%     '炸弹数量(优化:可以将bombnums局部变量取消)
    Dim lastGame As Integer     '记录最近一次的游戏等级
    Dim LoadFlag As Boolean    '加载画面过程中的标记
    Dim L As Single, r As Single, t As Single   '用于控制同时按下鼠标左右键的参数
    Dim firstClick As Boolean   '标记为,标记是否首次单击
    

    '窗体1加载

    Private Sub Form_Load()
        Image1.Top = 0
        Image1.Left = 0
        Image1.Height = 5000
        Image1.Width = 5000
        Image1.Stretch = True
        Me.Icon = LoadPicture(App.Path & "/image/tile.ico")
        Timer1.Interval = 1000
        Timer1.Enabled = False
        Call unloadWindows      '调用卸载窗体控件的子程序
        ReDim a(1)  '初始化数组
        ReDim B(1)  '初始化数组
    End Sub
    

    '卸载窗体按钮

    Function unloadWindows()
        Dim i%
        Image1.Visible = True
        Image1.Picture = LoadPicture(App.Path & "/image/background.jpg")
        If IndexMax > 1 Then
            Frame1.Visible = False
            For i = 1 To IndexMax
                Unload Command1(i)
                Unload Label3(i)
            Next i
        End If
        IndexMax = 0
        Frame1.Visible = False
        Frame2.Visible = False
        Frame1.Left = 200
    
        Command1(0).Visible = False
        Label3(0).Visible = False
        Form1.Height = 5000
        Form1.Width = 5000
        Text1 = "0"
        Timer1.Enabled = False
        Erase a
        Erase B
    End Function
    

    '开始初级难度游戏

    Private Sub game1_Click()
        rows = 9    '雷区横向数量
        cols = 9    '雷区纵向数量
        bs = 12     '炸弹数量
        lastGame = 99   '标记
        Call unloadWindows  '调用卸载窗体控件的子程序(雷区)
        Call creatWindow    '调用创建窗体控件的子程序(雷区)
    End Sub
    

    '开始中级难度游戏

    Private Sub game2_Click()
        rows = 16
        cols = 16
        bs = 42
        lastGame = 1616
        Call unloadWindows
        Call creatWindow
    End Sub
    

    '开始高级难度游戏

    Private Sub game3_Click()
        rows = 16
        cols = 30
        bs = 90
        lastGame = 1630
        Call unloadWindows
        Call creatWindow
    End Sub
    

    '开始骨灰级难度游戏

    Private Sub game4_Click()
        rows = 25
        cols = 40
        bs = 180
        lastGame = 2540
        Call unloadWindows
        Call creatWindow
    End Sub
    

    '创建窗体及按钮(创建雷区)

    Function creatWindow()
        Dim i%, j%
        LoadFlag = True '加载标记位至为真,防止用户在加载过程中单击鼠标
        Image1.Picture = LoadPicture("")
        Image1.Visible = False
        Load Label3(1)
        Label3(1).Visible = True
        Label3(1).BackColor = &HC0C0C0
        Label3(1) = ""
        Label3(1).Height = 400
        Label3(1).Width = 400
        Label3(1).Top = 230
        Label3(1).Left = 50
        Load Command1(1)
        Command1(1).Visible = True
        Command1(1).BackColor = RGB(58, 154, 254)
        Command1(1).Caption = ""
        Command1(1).Height = 400
        Command1(1).Width = 400
        Command1(1).Top = 150
        Command1(1).Left = 50
        Command1(1).Picture = LoadPicture("")
        Frame1.Visible = True
        Frame2.Visible = True
        Frame1.Height = rows * 400 + 300
        Frame1.Width = cols * 400 + 100
        
        Form1.Height = Frame1.Height + 2000
        Form1.Width = Frame1.Width + 600
        Me.Top = (Screen.Height - Me.Height) / 2
        Me.Left = (Screen.Width - Me.Width) / 2
        Text1.Text = 0
        Text2.Text = bs
        
        '创建雷区的所有按钮和标签(按照游戏等级的行列数)
        For i = 1 To rows
            For j = 1 To cols
                    IndexMax = IndexMax + 1
                    If IndexMax <> 1 Then
                        DoEvents
                        Load Label3(IndexMax)
                        Label3(IndexMax).Height = 400
                        Label3(IndexMax).Width = 400
                        Label3(IndexMax).Top = Label3(1).Top + Label3(1).Height * (i - 1)
                        Label3(IndexMax).Left = Label3(1).Left + Label3(1).Width * (j - 1)
                        Label3(IndexMax).BackColor = &HC0C0C0
                        Label3(IndexMax) = ""
                        Label3(IndexMax).Visible = True
                        Load Command1(IndexMax)
                        Command1(IndexMax).Height = 400
                        Command1(IndexMax).Width = 400
                        Command1(IndexMax).Top = Command1(1).Top + Command1(1).Height * (i - 1)
                        Command1(IndexMax).Left = Command1(1).Left + Command1(1).Width * (j - 1)
                        Command1(IndexMax).Caption = ""
                        Command1(IndexMax).BackColor = RGB(58, 154, 254)
                        Command1(IndexMax).Visible = True
                    End If
            Next j
        Next i
    
        ReDim a(IndexMax)
        ReDim B(IndexMax)
        For i = 1 To IndexMax
            B(i) = ""
        Next i
        firstClick = False
        Text1.SetFocus
        LoadFlag = False
    End Function
    

    '鼠标单击事件(鼠标左键单击某个雷区)

    Private Sub Command1_Click(index As Integer)
        Dim row%, col%, i%
        If LoadFlag Then Exit Sub
        If firstClick = False Then  '判断是否首次单击雷区
            Call rndBomb(index)     '如果玩家首次单击雷区,则调用随机炸弹的子程序,布置炸弹。
            firstClick = True
        End If
        Text1.SetFocus
        If B(index) = "" Then       '判断玩家点到的是炸弹还是数字或者是空白区域
            '点到炸弹
            If a(index) = -1 Then
                Call gameOver       '点到炸弹,调用游戏结束子程序
            '点到数字
            ElseIf a(index) > 0 Then
                Command1(index).Visible = False
            '点到空白
            ElseIf a(index) = 0 Then
                Command1(index).Visible = False
                B(index) = " "
                col = IIf(index Mod cols = 0, cols, index Mod cols)
                row = ((index - col) / cols) + 1
                Call X(row, col)    '调用递归程序,用于循环判断周围所有的雷区
            End If
        End If
        
        '判断是否正确扫雷
        If Text2.Text = "0" And noSignCommandNums = 0 Then
            Call isok
        End If
    End Sub
    

    '随机布置炸弹子程序

    '由于要求玩家首次单击的雷区一定是空白区,所以需要用到循环,在随机炸弹后,判断是否满足这个条件。
    '如果不满足的话需要重新goto跳转到L行的代码,直到满足这个要求。
    Function rndBomb(index%)
        Dim i%, j%, m%, n%, r%, nums%, counts%, meBombNums%
    L:
        nums = 0
        counts = 0
        meBombNums = 0
        ReDim a(IndexMax)
        
        Do
            Randomize
            r = Int(Rnd() * IndexMax) + 1
            If a(r) <> -1 Then
                a(r) = -1 '炸弹
                nums = nums + 1
            End If
            DoEvents
        Loop Until (nums = bs)
        
        For i = 1 To rows
            For j = 1 To cols
                counts = counts + 1
                If a(counts) <> -1 Then
                    meBombNums = 0
                    For m = i - 1 To i + 1
                        For n = j - 1 To j + 1
                            If m > 0 And m <= rows And n > 0 And n <= cols Then
                                If a((m - 1) * cols + n) = -1 Then
                                    meBombNums = meBombNums + 1
                                End If
                            End If
                        Next n
                    Next m
                    a(counts) = meBombNums
                    Label3(counts) = meBombNums
    
                    If a(counts) = 0 Then
                        Label3(counts) = ""
                    ElseIf a(counts) = 1 Then
                        Label3(counts).ForeColor = vbBlue
                    ElseIf a(counts) = 2 Then
                        Label3(counts).ForeColor = &H8000&
                    ElseIf a(counts) = 3 Then
                        Label3(counts).ForeColor = vbRed
                    ElseIf a(counts) = 4 Then
                        Label3(counts).ForeColor = &H400000
                    ElseIf a(counts) = 5 Then
                        Label3(counts).ForeColor = &H4080&
                    End If
                    
                End If
            Next j
        Next i
    
        If a(index) <> "0" Then GoTo L      '判断是否满足首次单击的区域是空白
        Timer1.Enabled = True
        
    End Function
    

    '游戏结束子程序

    Sub gameOver()
        Dim i%
        '循环将所有炸弹显示
        For i = 1 To IndexMax
            If a(i) = -1 Then
                Command1(i).Picture = LoadPicture(App.Path & "/image/bom.jpg")
            End If
        Next i
        If 2 = MsgBox("炸弹,游戏结束", vbRetryCancel, "提示") Then
            Call unloadWindows
        Else
            If lastGame = 99 Then
                Call game1_Click
            ElseIf lastGame = 1616 Then
                Call game2_Click
            ElseIf lastGame = 1630 Then
                Call game3_Click
            ElseIf lastGame = 2540 Then
                Call game4_Click
            End If
        End If
    End Sub
    

    '递归程序,空白区自动点开周围雷区

    Function X(row%, col%)
        Dim i%, j%, m%, n%, index%
        For m = row - 1 To row + 1
            For n = col - 1 To col + 1
                index = (m - 1) * cols + n
                If m > 0 And n > 0 And m < rows + 1 And n < cols + 1 Then
                    If B(index) = "" Then
                        If a(index) = 0 Then
                            Command1(index).Visible = False
                            B(index) = " "
                            Call X(m, n)
                        ElseIf a(index) > 0 Then
                            Command1(index).Visible = False
                        End If
                    End If
                End If
            Next n
        Next m
    End Function
    

    '鼠标右键事件(标记雷区)

    Private Sub Command1_MouseDown(index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
        If Button = 2 And Command1(index).Caption = "" Then
            If B(index) = "" Then
                '按钮图片改为旗子
                Command1(index).Picture = LoadPicture(App.Path & "/image/flag.jpg")
                B(index) = "flag"
                Text2.Text = Val(Text2.Text) - 1
            ElseIf B(index) = "flag" Then
                Command1(index).Picture = LoadPicture("")
                '按钮图片改为问号
                Command1(index).Picture = LoadPicture(App.Path & "/image/mark.jpg")
                B(index) = "?"
                Text2.Text = Val(Text2.Text) + 1
            ElseIf B(index) = "?" Then
                B(index) = ""
                '删除按钮图片
                Command1(index).Picture = LoadPicture("")
            End If
        End If
    End Sub
    

    'Label3标签的双击事件

    Private Sub Label3_DblClick(index As Integer)
        Call m(index)   '调用快速自动消除周边雷区的子程序
    End Sub
    

    '此代码实现判断用户是否同时按下鼠标左右键(允许时间误差0.1s以内)

    Private Sub Label3_MouseDown(index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
        If Button = 1 Then
            L = Timer
        ElseIf Button = 2 Then
            r = Timer
        End If
        
        If Button = 1 Or Button = 2 Then
            t = Abs(L - r)
            If t <= 0.1 Then
                Call m(index)
            End If
        End If
    End Sub
    

    '双击数字或者同时按下左右键,快速自动消除周围所有雷区

    '仅在双击或同时按下左右键的是一个数字雷区,并且其周边已经标记了同等数量的炸弹数。
    Sub m(index As Integer)
        Dim row%, col%, m%, n%, index2%, c%
        col = IIf(index Mod cols = 0, cols, index Mod cols)
        row = ((index - col) / cols) + 1
        For m = row - 1 To row + 1
            For n = col - 1 To col + 1
                index2 = (m - 1) * cols + n
                If m > 0 And n > 0 And m < rows + 1 And n < cols + 1 Then
                    If B(index2) = "flag" Then c = c + 1
                End If
            Next n
        Next m
        If a(index) = c Then
            For m = row - 1 To row + 1
                For n = col - 1 To col + 1
                    index2 = (m - 1) * cols + n
                    If m > 0 And n > 0 And m < rows + 1 And n < cols + 1 Then
                            If a(index2) = 0 Then
                                B(index2) = " "
                                Call X(m, n)
                            ElseIf a(index2) = -1 And B(index2) <> "flag" Then
                                Call gameOver
                                Exit Sub
                            End If
                            If Command1(index2).Visible = True And B(index2) <> "flag" And B(index2) <> "问号" Then Command1(index2).Visible = False
                    End If
                Next n
            Next m
        End If
        '判断是否正确扫雷
        If Text2.Text = "0" And noSignCommandNums = 0 Then
            Call isok
        End If
    End Sub
    

    '打开排行榜窗口

    Private Sub pxb_Click()
        Form2.Show
    End Sub
    

    '剩余炸弹个数,当剩余炸弹数量改变时,进行判断

    Private Sub Text2_Change()
        '判断是否正确扫雷
        If Text2.Text = "0" And noSignCommandNums = 0 Then  'noSignCommandNums函数返回当前未被标记数量
            Call isok   '调用判断是否扫雷全部正确的子程序
        End If
    End Sub
    

    '函数返回当前玩家剩余未标记的数量(即总炸弹数减去标记数量)

    Function noSignCommandNums() As Integer
        Dim i%
        noSignCommandNums = IndexMax
        For i = 1 To IndexMax
            If Command1(i).Visible = False Or B(i) = "flag" Then
                noSignCommandNums = noSignCommandNums - 1
            End If
        Next i
    End Function
    

    '判断玩家扫雷是否正确的子程序

    Function isok()
        Dim i%, nums%
        For i = 1 To IndexMax
            If a(i) = -1 And B(i) = "flag" Then
                nums = nums + 1
            End If
        Next i
        If nums = bs Then       '如果扫雷正确
            Timer1.Enabled = False
            Call saverank       '调用保存记录的子程序
            If 2 = MsgBox("恭喜,扫雷成功,用时:" & Text1 & "", vbRetryCancel, "提示") Then
                Call unloadWindows
            Else
                If lastGame = 99 Then
                    Call game1_Click
                ElseIf lastGame = 1616 Then
                    Call game2_Click
                ElseIf lastGame = 1630 Then
                    Call game3_Click
                ElseIf lastGame = 2540 Then
                    Call game4_Click
                End If
            End If
            
        End If
    End Function
    

    '保存游戏记录的子程序

    Sub saverank()
        Dim str$, s$(), pathName$
        Dim fs As Object
        Dim a As Object
        
        On Error Resume Next
        
        pathName = App.Path & "/rank.txt"
        If Dir(pathName) = "" Then
            Set fs = CreateObject("Scripting.FileSystemObject")
            Set a = fs.CreateTextFile("rank.txt", True)
            a.WriteLine "0,0,0,0,0,0,0,0"
            a.Close
        End If
        
        Open pathName For Input As #1
        Line Input #1, str
        Close #1
        
        s = Split(str, ",")
        
        If lastGame = 99 Then
            If Text1 < s(0) Or s(0) = "0" Then
            s(0) = Text1
            s(1) = InputBox("大侠,留下你的尊姓大名", "恭喜,打破记录")
            End If
        ElseIf lastGame = 1616 Then
            If Text1 < s(2) Or s(2) = "0" Then
                s(2) = Text1
                s(3) = InputBox("大侠,留下你的尊姓大名", "恭喜,打破记录")
            End If
        ElseIf lastGame = 1630 Then
            If Text1 < s(4) Or s(4) = "0" Then
                s(4) = Text1
                s(5) = InputBox("大侠,留下你的尊姓大名", "恭喜,打破记录")
            End If
        ElseIf lastGame = 2540 Then
            If Text1 < s(6) Or s(7) = "0" Then
                s(6) = Text1
                s(7) = InputBox("大侠,留下你的尊姓大名", "恭喜,打破记录")
            End If
        End If
        
        str = Join(s, ",")
        
        Open pathName For Output As #1
        Print #1, str
        Close #1
        
    End Sub
    

    '计时器

    Private Sub Timer1_Timer()
        Text1 = Val(Text1) + 1
    End Sub
    

    窗体Form2的代码如下:

    Option Explicit
        Dim L1NoTime$, L1NoName$
        Dim L2NoTime$, L2NoName$
        Dim L3NoTime$, L3NoName$
        Dim pathName$
    

    '窗体加载

    Private Sub Form_Load()
        Dim fs As Object
        Dim a As Object
        Me.Icon = LoadPicture(App.Path & "/image/tile.ico")
        Label6 = ""
        Label7 = ""
        Label8 = ""
        Label9 = ""
        Label10 = ""
        Label11 = ""
        Label13 = ""
        Label14 = ""
        pathName = App.Path & "/rank.txt"
        If Dir(pathName) = "" Then
            Set fs = CreateObject("Scripting.FileSystemObject")
            Set a = fs.CreateTextFile("rank.txt", True)
            a.WriteLine "0,0,0,0,0,0,0,0"
            a.Close
        End If
        Call getRank    '取出现有记录
    End Sub
    

    '子程序:取出当前现有的记录值

    Sub getRank()
        Dim str$, s$()
        On Error Resume Next
        
        Open pathName For Input As #1
        Line Input #1, str
        Close #1
        
        s = Split(str, ",")
        
        If s(0) <> "0" Then
            Label6 = s(0)
        Else
            Label6 = "暂无"
        End If
        
        If s(1) <> "0" Then
            Label7 = s(1)
        Else
            Label7 = "暂无"
        End If
        
        If s(2) <> "0" Then
            Label8 = s(2)
        Else
            Label8 = "暂无"
        End If
        
        If s(3) <> "0" Then
            Label9 = s(3)
        Else
            Label9 = "暂无"
        End If
        
        If s(4) <> "0" Then
            Label10 = s(4)
        Else
            Label10 = "暂无"
        End If
        
        If s(5) <> "0" Then
            Label11 = s(5)
        Else
            Label11 = "暂无"
        End If
        
        If s(6) <> "0" Then
            Label13 = s(6)
        Else
            Label13 = "暂无"
        End If
        
        If s(7) <> "0" Then
            Label14 = s(7)
        Else
            Label14 = "暂无"
        End If
    End Sub
    

    以上两个窗体的代码直接复制粘贴到对应窗体即可直接运行(窗体界面控件先布置好)。

    展开全文
  • 3.双击替换按钮后的输入框会变成红色,生成的代码会包含正则替换的代码 4.点击网址、表达式、替换表达式输入框后的箭头会显示所有历史使用的网址或表达式 5.在数据处理区双击会显示出一个对话框,勾选删除回车或制表...
  • 填入文件名,将会从A盘开始搜查并继续,直到搜查到文件为止,搜索全部驱动器过程中,可以在任意时间单击 “停止”按钮结束搜索。可以使用通配符 * 与 ?搜查文件,如*.exe"等。同时搜索支持文件夹。
  •  ‘ 骰子滚动时,“开始按钮已变成“停1按钮(参见 Command2_Click())  ‘ 若按“停1按钮,则调用 Command2_Click()  ‘ 当按“金盆洗手”按钮时,调用 Command3_Click()  ‘ 每隔 0.05 秒时,系统调用 ...
  • VB之精彩界面源代码-隐藏Windows的开始按钮(5KB)
  • 这个游戏类似于连连看,点击中间菜单上的开始按钮,开始游戏. 游戏在开始后,球的数量逐渐增加,速度逐渐加快,种类逐渐增多. 在球的最大量达到100时不再增加.数量在面板上有显示. 数量:(当前数量)/(最大量) 在...
  • VB编程大赛:求圆弧相交点代码 这是一个求两圆弧相交点的程序。界面中有图区,操作及显示区。操作分为两个步骤: 1· 创建圆弧" 。 点击“创建圆槐按钮,可进入创建圆弧工作状态。进入创建圆弧工作状态以后,光标...
  • 内容索引:VB源码,系统... VB隐藏/显示windows的“开始菜单”,点一下按钮开始菜单就会消失了,呜呜,不要这样哦,不过没关系,用本程序还能恢复的,一个小代码,供新手参阅,帮助了解了解Windows相关的编程知识。
  • 一基本操作题 请根据以下各小题的要求设计 Visual Basic应用程序包括界面和代码 1在名称为Forml的窗体上画一个名称为 Chk1的复选框数组Index属性从0开始含 三个复选框其标题分别为语文数学英语利用属性窗口设置适当...
  • 《 {用VB编写“红绿灯”程序} 》{ 平时我们在过马路的时候常常会看到指挥交通的红绿灯,它的权利可大了,要是我们可以控制它就好了,虽然在现实生活中办不到,就让我们编写一个虚拟的红绿灯程序,也来过过控制红...

    《 {用VB编写“红绿灯”程序} 》

    {  平时我们在过马路的时候常常会看到指挥交通的红绿灯,它的权利可大了,要是我们可以控制它就好了,虽然在现实生活中办不到,就让我们编写一个虚拟的红绿灯程序,也来过过控制红绿灯的瘾。

    下面我们就开始编写吧。

    第一件事当然是新建一个工程,然后引入所需控件。在“红绿灯”程序中,我们需要用到的控件有:OptionButton(选项按钮)、Image(图像框)及Timer(时钟)控件。引入两个OptionButton,其中Option1的Caption设置为“红灯”,Option2的Caption设置为“绿灯”;Image1的Picture属性设置为红灯图片,选择一张红灯图片(读者可以自己创建一个红灯及绿灯图片)。设计好的程序界面如图1。

    好了,现在我们开始添加程序代码。

    我们要求程序能够通过我们所选择的是红灯或绿灯来显示相应的图像,实现的原理就是当我们单击“红灯”时显示红灯图片,单击“绿灯”时显示绿灯图片,只要用户准备好这两张图片后,要实现这个功能就非常的容易了。其具体的程序代码如下:

    双击Option1(即红灯)控件,添加如下代码:(黑体部分为系统自动生成的代码,下同)

    Private Sub Option1_Click()

    ′显示红灯图片

    On Error GoTo LoadErr ′当载入图片发生错误时跳到LoadErr处

    If Option1.Value=True Then ′当单击了Option1控件时

    Image1.Picture=LoadPicture(″C:\Windows\Desktop\red.jpg″) ′载入red.jpg图片,并显示在Image1控件中。

    End If

    LoadErr: ′设置捕获错误标签

    If Err.Number=53 Then ′当发生错误时

    MsgBox Err.Description,vbOKOnly+vbCritical,″错误″ ′显示错误信息

    End If

    End Sub

    上面一段代码中有一句“On Error Goto LoadErr”,该句是用作捕获程序错误的,当程序执行过程中发生了错误则跳到处理错误语句处执行。在这段代码中,如果在载入图片时发生了错误(通常是所要载入的文件不存在或路径错误)则跳到LoadErr处执行LoadErr后的程序代码。

    在VB中,所有的程序错误都是用数字表示的,如53则表示未找到文件的错误码,其实要知道哪个错误码表示哪种错误也并不难,当你在VB中运行这个程序时,如果出现了错误,会有一个错误的提示框,在该提示框中则有该错误的错误码。如果我们没有在该段程序中加入“On Error Goto LoadErr”语句及给出错误的文件名或文件路径的话,则会出现如图2所示的提示框。

    LoadPicture是载入图片的函数,其中第一个参数则是所要载入图片的完整路径,当然在本例中这个路径是固定了的,所要想使其路径随程序路径的变化而变化则需要使用App.Path值,可以写成Image1.Picture=LoadPicture(App.Path&″\red.jpg″),其中App.Path返回的值则是程序所在的路径,当然red.jpg必须放在程序所在的同一目录中。

    双击Option2(即绿灯)控件,添加如下代码:

    Private Sub Option2_Click()

    ′显示绿灯图片

    On Error GoTo LoadErr ′当载入图片发生错误时跳到LoadErr处

    If Option2.Value=True Then ′当单击了Option2控件时

    Image1.Picture=LoadPicture(″C:\Windows\Desktop\green.jpg″) ′载入green.jpg图片,并显示在Image1控件中。

    End If

    LoadErr: ′设置标签

    If Err.Number=53 Then ′当发生错误时

    MsgBox Err.Description,vbOKOnly+vbCritical,″错误″ ′显示错误信息

    End If

    End Sub

    OK!现在我们就可以单击F5键运行一下,看看我们自制的“红绿灯”程序吧。点击一下“绿灯”看看,红灯变成绿灯了吧?再试试红灯,怎样?现在我们就可以控制红绿灯了吧。

    如何才能让“红绿灯”自动更换呢?要实现这个功能也非常简单,只要加入Timer(时钟)控件,将Timer1的Interval设置为3000(即3秒)。其原理就是每隔3秒更换一种图片,这样便实现了自动更换。

    双击Timer1控件,添加如下代码:

    Private Sub Timer1_Timer()

    ′实现自动化

    If Option1.Value=True Then ′如果当前显示的是红灯

    Option2.Value=True ′使Option2被选中,执行Option2中的代码(即显示绿灯)

    Else

    Option1.Value=True ′使Option1被选中,执行Option1中的代码(即显示红灯)

    End If

    End Sub

    单击F5键运行一下,每隔3秒钟即换一种颜色显示。就这么几句代码就实现了自动化,简单吧?

    如果你有什么疑问,欢迎写信与我交流,我的E-mail是:vber@21cn.com。

    (伟子)}

    展开全文
  • 初学VB之 教程程开始跟我学习VB(2) 摘要:选中程序界面上的命令按钮,然后找到属性面板,如图十一: 图十一 其中,名称:Command1是此按钮的名称,主要用于程序引用,所以不要用中文名字。 此处,可以不修改按钮的...
  • 看实例学VB 6.0

    2009-12-13 23:14:58
    所以在VB中大部分的代码是与这些相关的,例如下图所示的一段代码,它是我们在一个按钮(Command)上双击鼠标而由VB自动产生的一个子过程,Private Sub Command1_Click()是子过程的开始,End Sub表示子过程的结束。...

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 139
精华内容 55
关键字:

vb开始按钮代码