NOW  CONSTRUCTING

TOP PAGE  CEMENT ENGINEERING  EXCEL VBA .NET VB SCHTASKS/WSH

.

3.  .NET VISUAL BASIC 2010  SHORT PROGRAM

.

[A]  SHORT PROGRAM  [B]  TIPS COLLECTION

.

INTRODUCTION

.

  [A]  SHORT PROGRAM にて公開したプログラム内に使用された コードや小プログラムを [B]  TIPS COLLECTION として紹介する。 下記に記述されたコレクションは [A]  SHORT PROGRAM より全てコピー(コード記述が長くなるものは一部は省略されている)された(実際に使用された)コードであります。 従って [A]  SHORT PROGRAM で使用されたプログラムの説明にもなっています。
.
.

[B]  TIPS COLLECTION

.
0. プロジェクト・ファイルの保存管理
.
  VB2010のDownLoadやインストール、プロジェクトの新規作成までは簡単に出来たが、作っつた沢山のプロジェクト・ファイルの保存管理方法がマニアルにもなく、Officeのファイル管理のように簡単ではなく、方法が分からず困った。 以下は試行錯誤の結果である。
  新規プロジェクトのDefault名は WindowsApplication1、一つだけのプロジェクトならこれで保存し改良していけばよいが、平行してチョット試しに作ったTips的プログラムを保存しておきたくなることもある。 Defaultでプロジェクトは C:\Users\使用者名\Documents\Visual Studio 2010\Projects に保存されることになったいるので Default名を変更し、Projectホルダ内に変更したDefault名と同名の新ホルダを作って保存することにした。 ビルドし、発行するとコンパイルされた実行ファイルが出来あがるが これはDドライブにPublishホルダを作りその下層にプロジェクトファイルと同名のホルダを設けて保存することにした。
  またプロジェクトを一旦完成させ、実際にビルドし発行させ実使用して問題ないか確認したくなることもある。 一旦完成品を残して改良したい場合があり、上書き改良していくと一旦完成品が残らなくなる。 一旦完成品を残して改良を続ける場合は 一旦完成品をホルダ名を付けて保存し、別のホルダを作って一旦完成品のファイルを全てコピーし、コピーしたファイルを使って改良していくことがよい。
.

フォルダとファイルの構成例

ライブラリ
  Visual Basic 2010
    Projects (C:)
      PC TimerClose
        PC TimerClose    
           bin        
           My Project
           obj

        PC TimerClose.sln
        PC TimerClose.suo
          
  PC TimerClose2
      OnOff Timer

      | 
      |
      VB Sample (発行無し)
        AAAAA Tips
        BBBBB Tips


    Publish (D:)
      PC TimerClose
        Application Files   
          PC TimerClose_1_0_0_0
          |
          |
             PC TimerClose_1_0_0_N

        PC TimerClose.application
        setup.exe
      
PC TimerClose2
       OnOff Timer
       

.
ライブラリ に作成
  ライブラリに移動したフォルダ(Defaultより移動)
     Projects に作成(一旦完成品)
.
.
.
.
     保存でフォルダに出来るファイル  ピンク
.
    Projects に作成(改良に使用)
    Projects に作成
.
.
.     
.
     Projects に作成(発行せず、試しに使用)
.
.
.
.
  ライブラリに移動したフォルダ(Dドライブに作成)
     Publish に作成(一旦完成品)
.
.
.
    発行でフォルダに出来るファイル  ピンク
.
.
.
    Publish に作成(改良の発行)
    Publish に作成
.
.
1. 年月日、時間
.
a) TextBoxへ現在日付時刻表示    Date.Now
表示  大文字MM,:月  HH:24時間、hh:12時間表示  mm:分 ss:秒
  Me.TextBox1.Text = Format(Date.Now, "yyyy/MM/dd HH:mm:ss")
b) カレンダー表示 と 年月日取得  DateTimePicker
表示 ツールDateTimePickerをForm1にD&Dする。 Form1/EPに記述
  DateTimePicker1.Format = DateTimePickerFormat.Custom
  DateTimePicker1.CustomFormat = "yyyy/MM/dd"      '例  2013/04/15
取得
  Dim D1 As String = CDate(DateTimePicker1.Text) 
c) 時間差の計算 DateDiff
カレンダーとComboBox から取得した D1、H3、M4、S9 から日時文字列作成
  Dim H3 As String = ComboBox1.SelectedItem  '例  H3:14
  Dim M4 As String = ComboBox2.SelectedItem  '例  M4:21
  Dim S9 As String = ComboBox5.SelectedItem  '例  S9:30  
  Dim D1 As String = CDate(DateTimePicker1.Text)   '例 D1:2013/04/15
  Dim baseT As String = Me.TextBox2.Text          '例 2013/04/15 13:20:30
  Dim alarmT As String = D1 & " " & H3 & ":" & M4 & ":" & S9 
     例  "2013/04/15 14:21:30"
タイマーによる経過秒取得  変数宣言:Static (Dimは不可)
  Static SS As Integer
  SS = SS + 1        例  1860秒
時間差の秒表示 分表示 残り分表示  "s":秒 "h":時間 "d":日数 "yyyy":年数
  Dim diffSec1
  diffSec1 = DateDiff("s", baseT, alarmT)                '例 3660秒
  Me.TextBox5.Text = Format(Val(diffSec1) / 60, "0.0")     '例 61.0分
  Me.TextBox6.Text = Format((Val(diffSec1) - SS) / 60, "0.0") '例 61.0-31.0=30.0分
d)カレンダーを文字列に変更 CDate
  Dim DD1 As String = Format(CDate(DateTimePicker1.Text), "yyyyMMdd")
e) 時刻の一致 と 出力  If ・・・ Then ・・・  End if
設定時刻:alarmと現在時刻:nowDTが一致した時Beep音が鳴り、キーコードを送る。
  Dim alarm As String = DD1 & H3 & M4 & S9        '例  20130415142130
  Dim nowDT As String = Format(Date.Now, "yyyyMMddHHmmss")             例  20130415141030(残り11分)
  If alarm = nowDT Then    '例 Ctrl+Space → "^ "  単なるBeep音を鳴らす。
    Beep
    SendKeys.SendWait("^ ")
  End if
f) タイマーの使用方法 と カウント方法
Form1ウインドウにツールからTimer1をD&Dする。 Timer1をWCLしてForm1コードにEPを作る。 スタート方法(起動)
  Me.Timer1.Interval = 1000  '1000:1秒  指定なしでは100:1/10秒
    Me.Timer1.Start=()    'プログラム起動と共にスタートの場合はForm1/EPに記載、
             Buttonでスタートさせる場合は必要なButton/EP内に記載
カウント方法
  Static SS As Integer
  SS = SS + 1      'タイマーによる経過秒取得  変数宣言:Static (Dimは不可)
停止方法(ストップ)
    Me.Timer1.Stop=()    '停止は必要なEP内に記載
.
.
k) 時間の加算
Text日時を実日時DateTimeに直す  DateTime.Parse
  TextBox3〜5から 時分秒 を取得して 実日時に直す
  Dim H3 As String = Me.TextBox3.Text      '例 H3=1
  Dim M4 As String = Me.TextBox4.Text      '例 M4=30
  Dim S5 As String = Me.TextBox5.Text      '例 S9=10
  Dim startTime As DateTime = DateTime.Parse(Me.TextBox2.Text)
                               '例 2013/04/15 21:20:30
実日時に 時分秒(H3M4S9)を加算  startTime をTextBox6に表示
  startTime = startTime.AddHours(H3)       '例 2013/04/15 22:20:30
  startTime = startTime.AddMinutes(M4)     '例 2013/04/15 22:50:30
  startTime = startTime.AddSeconds(S5)      '例 2013/04/15 22:51:00
  'MsgBox(startTime)
  Me.TextBox6.Text = startTime          
l) カウントダウン・タイマーの時分秒 00:00:00 表示
A ・ カウンター方式

Form1ウインドウにButton1,2、TexstBox1を配置、Timer1をD&Dする。    Button1をCLして Button2をCLする間の時間が 00:00:00 にて表示される。
・Button1/EPに記入
  Me.Timer.Start = ()
  Me.Timer1.Interval = 1000
・Timer1/EPに記入
  Static oSec As Integer     '秒
  Static oMin As Integer      '分
  Static oHour As Integer     '時

  oSec = oSec + 1         '1秒進める  累積秒

  '累積秒を 時分秒 に直す
  If oSec >= 60 Then        '60秒=1分
    oMin = oMin + 1
    oSec = 0

    If oMin >= 60 Then      '60分=1時間
      oHour = oHour + 1
      oMin = 0
    End If
  End If

  Me.TextBox1.Text = Format(oHour, "00") & ":" & _
               Format(oMin, "00") & ":" & _
               Format(oSec, "00")
・Button2/EPに記入
  Me.Timer1.Stop=() 
==========================================================================
B ・  実日時方式       2017/02/09追加

    Dim restT As TimeSpan = CDate(alarmT) - DateTime.Now
    TextBox1.Text = restT.Days.ToString("0 days") & "  " &
             restT.Hours.ToString("00:") &
             restT.Minutes.ToString("00:") &
             restT.Seconds.ToString("00")

   alarmT:設定日時     yyyy/MM/dd HH:mm:ss
      DateTime.Now:現日時  yyyy/MM/dd HH:mm:ss 
m) 時間の一致 と 出力  If ・・・ Then ・・・  End if
Form1ウインドウにButton1、TextBox1〜5を配置、Timer1をD&Dする。 Button1をCLすると 5410秒経った後、Beep音を鳴らしてコードキーを送り、Timer1が停止する。
・Button1/EPに記入
  Me.Timer.Start = ()
  Me.Timer1.Interval = 1000
・Timer1/EPに記入    TextBox3〜5 時分秒の入力
  Dim H3 As Integer = Val(Me.TextBox3.Text)      '例 H3=1
  Dim M4 As Integer = Val(Me.TextBox4.Text)      '例 M4=30
  Dim S5 As Integer = Val(Me.TextBox5.Text)      '例 S9=10
  Dim Q As Integer = H3 * 60 * 60 + M4 * 60 + S5     '例 5410      
     Static iSec0 As Integer 
      oSec0 = oSec0 + 1         '1秒進める  累積秒
  Me.TextBox1.Text = Q                   '待ち秒の表示
  Me.TextBox2.Text = Format(Q - oSec0, "000000")   '残り秒の表示 
     If  Q = oSec0  Then
         Beep
    SendKeys.SendWait("^ ")
  End if
   Me.Timer.Stop = ()
n)日時入力3方法と読込  (簡単なAlarmTimerの全ProgramCode表示)
  1.ComboBox 方法
   3.汎用サウンドソフト用録音プログラムへの変更(カウントダウン方式) にて採用した
   方式。 入力方式として一番楽 であるが、Program内に必要な入力数値を書かね
   ばならない。
   If RadioButton1.Checked内にPurogramを記述。
 2.NumericalUpDown方法
   初めて試みたが 上限数値からゼロに循環しない点、またProgram内に取り込んだ数 
   値を必ず 2桁 にしなければならない点等あり この方式は不適当であると判断。
   If RadioButton2.Checked内にProgramを記述
 3.DateTimPicker方式
   この方式をよく見かけるので 実際にProgeamを組んでみた。 利点は省スペースと
   なり、循環回転するので NumericalUpDown方法 好良い。 しかし回転入力に手間
   が掛かるようだ。
   If RadioButton3.Checked内にProgramを記述。
Form1
Form1 搭載の Control
TextBox (TB): 1-10  Button(BT):1-3  RadioButton(RB):1-3
ComboBox(CB):1-3  NumericalUpDown(NUD):1-3  DateTimPicker(DTP):1-2
※入力の容易さの順番 1 → 3 → 2 (1 が一番容易)
.
全Program Code表示

Public Class Form1
--------------------------------------------------------------------------
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

'0.ComboBox 入力------------------------------
With ComboBox1
.Items.Add("00")
.Items.Add("01")
.Items.Add("02")
.Items.Add("03")
.Items.Add("04")
.Items.Add("05")
.Items.Add("06")
.Items.Add("07")
.Items.Add("08")
.Items.Add("09")
.Items.Add("10")
.Items.Add("11")
.Items.Add("12")
.Items.Add("13")
.Items.Add("14")
.Items.Add("15")
.Items.Add("16")
.Items.Add("17")
.Items.Add("18")
.Items.Add("19")
.Items.Add("20")
.Items.Add("21")
.Items.Add("22")
.Items.Add("23")
'.BackColor = Color.PowderBlue
'.Font = New Font("MS Pゴシック", 12)
.Text = "00" 'テキストボックスに最初に表示して置く項目を設定
End With

With ComboBox2
.Items.Add("00")
.Items.Add("01")
.Items.Add("02")
.Items.Add("03")
.Items.Add("04")
.Items.Add("05")
.Items.Add("06")
.Items.Add("07")
.Items.Add("08")
.Items.Add("09")
.Items.Add("10")
.Items.Add("11")
.Items.Add("12")
.Items.Add("13")
.Items.Add("14")
.Items.Add("15")
.Items.Add("16")
.Items.Add("17")
.Items.Add("18")
.Items.Add("19")
.Items.Add("20")
.Items.Add("21")
.Items.Add("22")
.Items.Add("23")
.Items.Add("24")
.Items.Add("25")
.Items.Add("26")
.Items.Add("27")
.Items.Add("28")
.Items.Add("29")
.Items.Add("30")
.Items.Add("31")
.Items.Add("32")
.Items.Add("33")
.Items.Add("34")
.Items.Add("35")
.Items.Add("36")
.Items.Add("37")
.Items.Add("38")
.Items.Add("39")
.Items.Add("40")
.Items.Add("41")
.Items.Add("42")
.Items.Add("43")
.Items.Add("44")
.Items.Add("45")
.Items.Add("46")
.Items.Add("47")
.Items.Add("48")
.Items.Add("49")
.Items.Add("50")
.Items.Add("51")
.Items.Add("52")
.Items.Add("53")
.Items.Add("54")
.Items.Add("55")
.Items.Add("56")
.Items.Add("57")
.Items.Add("58")
.Items.Add("59")
'.BackColor = Color.PowderBlue
'.Font = New Font("MS Pゴシック", 12)
.Text = "00" 'テキストボックスに最初に表示して置く項目を設定
End With

With ComboBox3
.Items.Add("00")
.Items.Add("10")
.Items.Add("20")
.Items.Add("30")
.Items.Add("40")
.Items.Add("50")
'.BackColor = Color.PowderBlue
'.Font = New Font("MS Pゴシック", 12)
.Text = "00" 'テキストボックスに最初に表示して置く項目を設定
End With
'0.ComboBox 入力------------------------------


Me.Timer1.Interval = 1000
Me.Timer2.Interval = 1000
Me.Timer3.Interval = 1000

Me.Timer1.Start()
Me.Timer2.Start()


DateTimePicker1.Format = DateTimePickerFormat.Custom
DateTimePicker1.CustomFormat = "yyyy/MM/dd"

End Sub
--------------------------------------------------------------------------
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick

TextBox6.Text = Format(Date.Now, "yyyy/MM/dd HH:mm:ss")

End Sub
--------------------------------------------------------------------------
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

Timer2.Stop()

Timer3.Start()

End Sub
--------------------------------------------------------------------------
Private Sub Timer2_Tick(sender As Object, e As EventArgs) Handles Timer2.Tick

Me.TextBox7.Text = Format(Date.Now, "yyyy/MM/dd HH:mm:ss")

End Sub
--------------------------------------------------------------------------
'Beep宣言(周波数・秒数)
<System.Runtime.InteropServices.DllImport("KERNEL32.DLL")>
Private Shared Function Beep(ByVal dwFlags As Integer, ByVal dwDuration As Integer) As Integer

'Console.Beep(262, 400) ' ド
'Console.Beep(294, 400) ' レ
'Console.Beep(330, 400) ' ミ
'Console.Beep(349, 400) ' ファ
'Console.Beep(392, 400) ' ソ
'Console.Beep(440, 400) ' ラ
'Console.Beep(494, 400) ' シ
'Console.Beep(523, 400) ' ド

End Function
--------------------------------------------------------------------------
Private Sub Timer3_Tick(sender As Object, e As EventArgs) Handles Timer3.Tick

If RadioButton1.Checked = True Then  ’ComboBoxでの入力

'2.ComboBox
Dim H1 As String = ComboBox1.SelectedItem '待ち時間入力
Dim m1 As String = ComboBox2.SelectedItem '待ち分入力
Dim s1 As String = ComboBox3.SelectedItem '待ち秒入力
Dim DT As String = CDate(DateTimePicker1.Text) '待ち日入力 "yyyy/MM/dd"
Dim DDT As String = Format(CDate(DateTimePicker1.Text), "yyyyMMdd")

TextBox1.Text = H1
TextBox2.Text = m1
TextBox3.Text = s1
TextBox4.Text = Format(CDate(DateTimePicker1.Text), "yyyy/MM/dd")

Dim baseT As String = TextBox7.Text '******
Dim alarmT As String
alarmT = DT & " " & H1 & ":" & m1 & ":" & s1
'MsgBox(alarmT)

Dim diffS
Dim nowDt As DateTime = DateTime.Now
diffS = DateDiff("s", baseT, nowDt)

'Static SS As Integer
'SS = SS + 1

Dim diffSec1
diffSec1 = DateDiff("s", baseT, alarmT)

TextBox8.Text = Format(diffSec1 / 60, "0.0")
TextBox9.Text = Format((Val(diffSec1) - diffS) / 60, "0.0")

Dim restT As TimeSpan = CDate(alarmT) - DateTime.Now
TextBox10.Text = restT.Days.ToString("0 days") & " " &
restT.Hours.ToString("00:") &
restT.Minutes.ToString("00:") &
restT.Seconds.ToString("00")

'録音開始時刻Format
Dim alarm As String
alarm = DDT & H1 & m1 & s1 ' yyyyMMdd+H1+m1+s1
'MsgBox(alarm)
'MsgBox(Format(Date.Now, "yyyyMMddHHmmss"))

'時刻一致のイベント
If alarm = Format(Date.Now, "yyyyMMddHHmmss") Then
AAAA()
End If

End If

'-------
If RadioButton2.Checked = True Then   ’NumericalUpDownでの入力

'2.NumericalUpDown
Dim H1F As String = NumericUpDown1.Value '待ち時間入力
Dim m1F As String = NumericUpDown2.Value '待ち分入力
Dim s1F As String = NumericUpDown3.Value '待ち秒入力
Dim DT As String = CDate(DateTimePicker1.Text) '待ち日入力 "yyyy/MM/dd"
'MsgBox(DT)

TextBox1.Text = H1F
TextBox2.Text = m1F
TextBox3.Text = s1F
TextBox4.Text = Format(CDate(DateTimePicker1.Text), "yyyy/MM/dd")

Dim H1FF As String = Format(NumericUpDown1.Value, "00")
Dim m1FF As String = Format(NumericUpDown2.Value, "00")
Dim s1FF As String = Format(NumericUpDown3.Value, "00")
Dim DDT As String = Format(CDate(DateTimePicker1.Text), "yyyyMMdd")

'残り秒表示
Dim baseT As String = TextBox7.Text '******
Dim alarmT As String
alarmT = DT & " " & H1FF & ":" & m1FF & ":" & s1FF
'MsgBox(alarmT)
'MsgBox(baseT)

Dim diffS
Dim nowDt As DateTime = DateTime.Now
diffS = DateDiff("s", baseT, nowDt)

'Static SS As Integer
'SS = SS + 1

Dim diffSec1
diffSec1 = DateDiff("s", baseT, alarmT)

TextBox8.Text = Format(diffSec1 / 60, "0.0")
TextBox9.Text = Format((Val(diffSec1) - diffS) / 60, "0.0")

Dim restT As TimeSpan = CDate(alarmT) - DateTime.Now
TextBox10.Text = restT.Days.ToString("0 days") & " " &
restT.Hours.ToString("00:") &
restT.Minutes.ToString("00:") &
restT.Seconds.ToString("00")

'録音開始時刻Format
Dim alarm As String
alarm = DDT & H1FF & m1FF & s1FF ' yyyyMMdd+H1+m1+s1
'MsgBox(alarm)
'MsgBox(Format(Date.Now, "yyyyMMddHHmmss"))

'時刻一致のイベント
If alarm = Format(Date.Now, "yyyyMMddHHmmss") Then
AAAA()
End If

End If
'----------
If RadioButton3.Checked = True Then   ’DateTimePickerでの入力

'3.DateTimePicker
Dim H1 As String = Format(CDate(DateTimePicker2.Text), "HH") '待ち時間入力
Dim m1 As String = Format(CDate(DateTimePicker2.Text), "mm") '待ち分入力
Dim s1 As String = Format(CDate(DateTimePicker2.Text), "ss") '待ち秒入力
Dim DT As String = CDate(DateTimePicker1.Text) '待ち日入力
Dim DDT As String = Format(CDate(DateTimePicker1.Text), "yyyyMMdd")
'MsgBox(DT)

TextBox1.Text = H1
TextBox2.Text = m1
TextBox3.Text = s1
TextBox4.Text = DT

'残り秒表示
Dim baseT As String = TextBox7.Text '******
Dim alarmT As String
alarmT = DT & " " & H1 & ":" & m1 & ":" & s1
'MsgBox(alarmT)
Dim diffS
Dim nowDt As DateTime = DateTime.Now
diffS = DateDiff("s", baseT, nowDt)

'Static SS As Integer
'SS = SS + 1

Dim diffSec1
diffSec1 = DateDiff("s", baseT, alarmT)

TextBox8.Text = Format(diffSec1 / 60, "0.0")
TextBox9.Text = Format((Val(diffSec1) - diffS) / 60, "0.0")

Dim restT As TimeSpan = CDate(alarmT) - DateTime.Now
TextBox10.Text = restT.Days.ToString("0 days") & " " &
restT.Hours.ToString("00:") &
restT.Minutes.ToString("00:") &
restT.Seconds.ToString("00")

'録音開始時刻Format
Dim alarm As String
alarm = DDT & H1 & m1 & s1 ' yyyyMMdd+H1+m1+s1
'MsgBox(alarm)
'MsgBox(Format(Date.Now, "yyyyMMddHHmmss"))

'時刻一致のイベント
If alarm = Format(Date.Now, "yyyyMMddHHmmss") Then
AAAA()
End If

End If

End Sub
--------------------------------------------------------------------------
Sub AAAA() '***** Melody & Message ********

'下追加
Console.Beep(262, 300)
Console.Beep(294, 300)
Console.Beep(330, 300)
Console.Beep(349, 1000)

TextBox5.Text = "おわり"

Timer3.Stop()

End Sub
--------------------------------------------------------------------------
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click

Application.Restart()

End Sub
--------------------------------------------------------------------------
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click

Close()

End Sub
--------------------------------------------------------------------------
End Class
 
2. 構文
.
.a) If Then 文
単純な If ・・・ Then 文
    MsgBoxniに{OK}または{キャンセル}が表示される。

  Dim YN As Integer = MsgBox("Hibernate OK !!", vbOKCancel)
  If YN = 2 Then         'キャンセルをCLの場合 YN=2
    Application.Restart()
  End If
  If YN = 1 Then         'OKをCLの場合 YN=1
    '休止状態にする メモリ情報をHDDに保存して電源を切る
    Application.SetSuspendState(PowerState.Hibernate, False, False)
  End If
If ・・・ Then Goto label (ラベル) 文                N88BASIC的?
  FalesではAA→labelTrueではlabelに直接行く

  If CheckBox1.Checked = True Then GoTo label
 AA SendKeys.SendWait("^ ")
    Me.TextBox10.Text = "開始 SendKeys(Ctrl+Space)"
    Console.Beep(330, 1000)

label:  Me.Timer4.Interval = 1000
    Me.Timer4.Start()
    Me.Timer3.Stop()
  End If
If ・・・ Then Goto aaaa , Goto bbbb 文          N88BASIC的?
   FalesではAA→BB→bbbb、Trueではaaaabbbbとなる
  alarm=Format()ではCC→bbbb、alarm<>Format()ではEnd Ifへ

  If CheckBox1.Checked = True Then GoTo aaaa  

 AA Dim baseT As String = TextBox2.Text
    Dim alarmT As String
    alarmT = D1 & " " & H3 & ":" & M4 & ":" & S9

BB If alarm = Format(Date.Now, "yyyyMMddHHmmss") Then
 CC SendKeys.SendWait(Ton)
    Me.TextBox10.Text = "Start SendKeys(KeyCode)"
    Console.Beep(330, 1000)

    GoTo bbbb

    '待機時間タイマー停止 と 録音開始タイマー起動
aaaa:  TextBox5.Text = Format(0, "0.0")
    TextBox6.Text = Format(0, "0.0")
bbbb:   Me.Timer3.Stop()
            Me.Timer4.Start()

    Exit Sub
    End If

 

b) If Then ElseIf 文
沢山のRadioButtonの一つがチェックされたらその該当のキーコードを送り、aaaaラベルに飛ぶ。
  If RadioButton1.Checked = True Then
      SendKeys.SendWait("(+^){F1}")
    GoTo aaaa
  ElseIf RadioButton2.Checked = True Then
    SendKeys.SendWait("(+^){F2}")
    GoTo aaaa
  ElseIf RadioButton3.Checked = True Then
    SendKeys.SendWait("%{PRTSC}")
    GoTo aaaa
  ElseIf RadioButton4.Checked = True Then
    SendKeys.SendWait("(^%){F2}")
    GoTo aaaa
  End If

aaaa: Me.WindowState = FormWindowState.Minimized

.
3. 文法 & Tips
.
a) アプリケーションの 閉じる または 再スタート
アプリケーション(Form1ウインドウ)を閉じる。
  Me.Close()      '自分自身のフォームを閉じる
  Application.Exit()   'アプリケーションを終了する
  End           '当方、アプリの Close に全て End を採用
アプリケーションを再スタートする。
  Application.ReStart()
b) PC 停止方法
休止状態にする メモリ情報をHDDに保存して電源を切る
  Application.SetSuspendState(PowerState.Hibernate, False, False)

スタンバイ状態にする 中断・サスペンド・スリープ状態にする
  Application.SetSuspendState(PowerState.Suspend, False, False)

シャットダウン
  Dim psi As New System.Diagnostics.ProcessStartInfo()
  psi.FileName = "shutdown.exe"
  'コマンドラインを指定  5秒でシャットダウンする
  psi.Arguments = "-s -t 5"
  'ウィンドウを表示しないようにする(こうしても表示される)
  psi.CreateNoWindow = True
  'コンピュータをシャットダウンします
  Dim p As System.Diagnostics.Process = System.Diagnostics.Process.Start(psi)

シャットダウンして再起動
  Dim psi As New System.Diagnostics.ProcessStartInfo()
  psi.FileName = "shutdown.exe"
  'コマンドラインを指定  シャットダウンして再起動します
  psi.Arguments = "-r"
  'ウィンドウを表示しないようにする(こうしても表示される)
  psi.CreateNoWindow = True
  'コンピュータをシャットダウンして再起動します
  Dim p As System.Diagnostics.Process = System.Diagnostics.Process.Start(psi)

'shutdown のコマンドライン使用法
    'shutdown のコマンドライン [-i , -l , -s , -r , -a] [-f] [-m \\コンピュータ名] [-t xx]
      [-c"コメント"] [-d up:xx:yy]
 
  '引数なし このメッセージを表示します (-? と同じです)
  '-i GUIインターフェイスを表示します。このオプションは最初に指定する必要がありま
       す()
  '-l ログオフ (-m オプションとは併用できません)
  '-s コンピュータをシャットダウンします
  '-r コンピュータをシャットダウンして再起動します
  '-a システム シャットダウンを中止します
  '-m \\コンピュータ名 シャットダウン/再起動/中止するリモートコンピュータの名前で
      す()
  '-t xx シャットダウンのタイムアウトを xx 秒に設定します()
  '-c "コメント" シャットダウンのコメントです (127 文字まで)
  '-f 実行中のアプリケーションを警告なしに閉じます
  '-d [u][p]:xx:yy シャットダウンの理由コードです
  '            u = ユーザー コード
  '            p = 計画されたシャットダウンのコード
  '            xx = 重大な理由コード (255 以下の正の整数)
  '            (yy = 重大ではない理由コード (65535 以下の正の整数)
c)Beep宣言(周波数・秒数)
単なるBeep音でなく、周波数・秒数を指定する場合は下記宣言し、( )内を記入
Public Declare Function Beep Lib "kernel32" (ByVal dwFreq As Long, ByVal dwDuration As Long) As Long

  'Console.Beep(262, 400) ' ド
  'Console.Beep(294, 400) ' レ
  'Console.Beep(330, 400) ' ミ
  'Console.Beep(349, 400) ' ファ
  'Console.Beep(392, 400) ' ソ
  'Console.Beep(440, 400) ' ラ
  'Console.Beep(494, 400) ' シ
  'Console.Beep(523, 400) ' ド
d) ウインドウの 最小化・最大化
最小化
  Me.WindowState = FormWindowState.Minimized
最大化
  Me.WindowState = FormWindowState.Maximized
e) TextBox内データを ホルダを作って保存、呼出
TextBox1="D:\My Documents2\DownLoad Soft\WinShot1.53a\ws153a\WinShot.exe"の内容をC:|dataWSホルダを作って、ファイル名:dataWS01.txtとしてCheckBox1=Trueなら保存または書替して閉じる、その後CheckBox1=Falesにする。
  'WinShotのFullPath を保存及び書き換え
   Dim StartupPath, FullPath01 As String    
   StartupPath = "C:\dataWS" 'Application.StartupPath
  System.IO.Directory.CreateDirectory(StartupPath)

   FullPath01 = (StartupPath & "\dataWS01.txt")
  ' MsgBox(FullPath01)

   If CheckBox1.Checked = True Then

     Dim sw01 As System.IO.StreamWriter
    sw01 = New System.IO.StreamWriter(FullPath01, False,     System.Text.Encoding.GetEncoding("Shift-JIS")) ', System.Text.Encodeing("shift-jis")Test
    sw01.Write(TextBox1.Text)
     sw01.Close()

     CheckBox1.Checked = False
   End If
C:\dataWS\dataWS01.txtに保存されたデータを呼出し、TextBox1に書く
  Dim StartupPath, FullPath01 As String 'Dim FullPath As String 
   StartupPath = "C:\dataWS" 
   FullPath01 = (StartupPath & "\dataWS01.txt")

  TextBox1.Text = IO.File.ReadAllText(FullPath01, System.Text.Encoding.GetEncoding("Shift-JIS")) 
f) アプリケーションのアクティベイト
Shell関数が TexBox1のFullPathにある exefile をアクティベイトする。 
  Dim aaaaID As Integer
  aaaaID = Shell(TextBox1.Text) 
  'AppActivate(aaaaID)
g)  ウインドウの表示位置指定
ウインドウの左上位置をPoint(X,Y)で指定   Form1/EPに記述
  Me.StartPosition = System.Windows.Forms.FormStartPosition.Manual
  Me.Location = New System.Drawing.Point(50, 30)
h) 他のプロセス(URL、exe)の起動と停止(開くと閉じる)
NHK/FM(URL)とradico(exe)の起動(開く) → URLとexe共fullpathを記入
  radikoは事前に radiko_player_air.exe を install しておくこと
  System.Diagnostics.Process.Start("http: //www3.nhk.or.jp/netradio/player/index.html?ch=fm")

  System.Diagnostics.Process.Start("C:\Program Files\radiko_player_air\radiko_player_air.exe")
NHK/FM(URL)とradico(exe)の停止(閉じる)  exeファイル名を記入、プロセスを取得してKillメソッドで閉じる
 ・URLの場合 → IE自体を閉じる
  Dim ps As System.Diagnostics.Process() = System.Diagnostics.Process.GetProcessesByName("iexplore")

  For Each p As System.Diagnostics.Process In ps
     p.Kill()
  Next

 ・exeの場合 → exeファイル自体を閉じる
Dim ps As System.Diagnostics.Process() = System.Diagnostics.Process.GetProcessesByName("radiko_player_air")

  For Each p As System.Diagnostics.Process In ps
    p.Kill()
  Next

4. ツール
.
a)TextBox 手入力 または 表示
入力に使用   Form1のTextBoxをWCLして、EPに下記記述し、実行Formで入力すると
           S5 に文字  列が 入力される。
  Dim S5 As String = Me.TextBox9.Text   '待ち秒入力
表示に使用  EPを作る必要無し。 プログラムから指定すると 表示される。
  Me.TextBox5 = Q '実数字         Me.TextBox5 = "ABC" '文字列
b)ComboBox 選択して入力
ComboBox入力の場合 Form1/EPに下記を参考に記述  
  With ComboBox6           '00〜50を10おきに選択
    .Items.Add("00")
    .Items.Add("10")
    .Items.Add("20")
    .Items.Add("30")
    .Items.Add("40")
    .Items.Add("50")
    '.BackColor = Color.PowderBlue        '色指定
    '.Font = New Font("MS Pゴシック", 12)   'フォント指定
    .Text = "00"   'テキストボックスに最初に表示して置く項目を設定
   End With
c) Timer(タイマー) 起動・停止 と インターバル
Form1ウインドウにD&Dし、下画面に表示されたTimer1をWCL、EPに下記記述で起動・停止する。 インターバルの宣言も忘れずに。
  Me.Timer.Interval = 1000   '1秒=1000  未宣言では 100=1/10秒
  Me.Timer1.Start()   '起動
  Me.Timer1.Stop()   '停止
d) ToolTip の使用方法
ツールへのマウス・オーバーによるツールのポップアップ説明に使用
 ・ToolTipをポップアップ説明させたいツール(Button、CheckBox、RadioButton等)の上  にD&Dする。
 ・ツールのプロパティにあるToolTipのTextに説明文を書く。 ToolTipが沢山ある場合は  ToolTipとツールの対応を間違えないようにする。
e) RadioButton の複数選択と GroupBox
Form1ウインドウにRadioButtonを並べた場合、特性上1個しか選択できない。 グループの異なるRadioButtonをForm1に配置したい場合はForm1にGroupBoxをD&Dして、グループ毎にまとめれば(GroupBox内にグループ毎のRadioButtonを入れる)、グループ毎に複数選択出来る。
(例) [A]-4 汎用サウンドソフト用録音プログラムには PC停止状態を選択するRadioButtonが存在するが、これに ラジオ局選択RadioButtonの追加が必要になり、GroupBoxをD&Dして これにラジオ局選択RadioButtonを入れる。 これによりPC停止状態とラジオ局選択が同時にForm1で行えるようになる。
.
.
.
.

[A]  SHORT PROGRAM  [B]  TIPS COLLECTION

TOP PAGE   CEMENT ENGINEERING  EXCEL VBA .NET VB SCHTASKS/WSH

NOW  CONSTRUCTING