NSDWinEnd メンバ
コンピュータのシャットダウン、再起動、ディスプレイのON/OFFを行います。
●コンストラクタ
名前 説明 NSDWinEnd NSDWinEndを初期化します。
●メソッドの一覧
名前 引数 戻り値 説明 MyWinLogoff なし Boolean型 現在のユーザーをログオフします。 ( Boolean ) Boolean型 プログラム終了有無を指定して現在のユーザーをログオフします。 MyWinReboot なし Boolean型 ローカルコンピュータを再起動します。 MyWinShutDown なし Boolean型 ローカルコンピュータをシャットダウンを行います。 WinRestartDlg なし Boolean型 再起動ダイアログボックスを表示します。 WinShutDownDlg なし Boolean型 シャットダウンダイアログボックスを表示します。 WinEndDlg なし Boolean型 終了時のダイアログボックスを表示します。 RemoteShutDown ( String ) Boolean型 リモートコンピュータのシャットダウン処理を開始します。 ( String , String , Integer ) Boolean型 リモートコンピュータにメッセージを表示させて、シャットダウン処理を開始します。 ( String , String , Integer , Boolean ) Boolean型 リモートコンピュータにメッセージを表示させて、シャットダウン処理を開始します。
(他のアプリケーションの強制終了有無を指定できます)RemoteReboot ( String ) Boolean型 リモートコンピュータの再起動処理を開始します。 ( String , String , Integer ) Boolean型 リモートコンピュータにメッセージを表示させて、再起動処理を開始します。 ( String , String , Integer , Boolean ) Boolean型 リモートコンピュータにメッセージを表示させて、再起動処理を開始します。
(他のアプリケーションの強制終了有無を指定できます)GetIPAddress ( String ) String()型 コンピュータ名からIPアドレスを返します。 IPToMacAddressString ( String ) String型 IPアドレスからMacアドレスを取得します。 ( Byte() ) String型 IPアドレスからMacアドレスを取得します。 IPToMacAddressByte ( String ) Byte()型 IPアドレスからMacアドレスを取得します。 ( Byte() ) Byte()型 IPアドレスからMacアドレスを取得します。 WakeOnLan ( String ) なし Wake On Lan機能でLan上の指定Macアドレスを持つクライアントの電源を入れます。 ( Byte() ) なし Wake On Lan機能でLan上の指定Macアドレスを持つクライアントの電源を入れます。 MoniterOn なし なし ディスプレイの電源をONにします。 MoniterOff なし なし ディスプレイの電源をOFFにします。
●NSDWinEndコンストラクタの説明
構文:Public Sub New()
使用法:Dim Cls_WinEnd As New NSDWinEnd
引数:なし。
使用例:
Public Class Form1 Dim Cls_WinEnd As New NSDWinEnd : End Class
●NSDWinEndメソッド の説明
名前:MyWinLogoff
機能:現在のユーザーをログオフします。
@現在のユーザーをログオフします。 構文:Public Function MyWinLogoff() As Boolean
引数:なし。
戻り値:Boolean
戻り値の説明:
成功した場合は、プログラムがEnd命令で終了します。
False:失敗、エラー発生使用例:
Public Class Form1 Dim Cls_WinEnd As New NSDWinEnd Private Sub Button1_Click( ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click Try If MsgBox("ログオフします。" & vbCrLf & _ "よろしいですか?", _ MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then Cls_WinEnd.MyWinLogoff() End If Catch ex As Exception End Try End Sub End Class
Aプログラム終了有無を指定して現在のユーザーをログオフします。 構文:Public Function MyWinLogoff( ProgramEnd ) As Boolean
引数:
名前 型 引数渡しの方法 説明 ProgramEnd Boolean 値渡し(ByVal) True :プログラムをEndで終了します。
False:プログラムを終了しません。戻り値:Boolean
戻り値の説明:
成功した場合BlnVal_ProgramEndがTrueの場合は、プログラムがEnd命令で終了します。
False:失敗、エラー発生使用例:
Public Class Form1 Dim Cls_WinEnd As New NSDWinEnd Private Sub Button1_Click( ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click Try If MsgBox("ログオフします。" & vbCrLf & _ "よろしいですか?", _ MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then Cls_WinEnd.MyWinLogoff(True) End If Catch ex As Exception End Try End Sub End Class
名前:MyWinReboot
構文:Public Function MyWinReboot() As Boolean 機能:ローカルコンピュータを再起動します。
引数:なし。
戻り値:Boolean
戻り値の説明:
成功した場合は、プログラムがEnd命令で終了します。
False:失敗、エラー発生使用例:
Public Class Form1 Dim Cls_WinEnd As New NSDWinEnd Private Sub Button1_Click( ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click Try If MsgBox("再起動します。" & vbCrLf & _ "よろしいですか?", _ MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then Cls_WinEnd.MyWinReboot() End If Catch ex As Exception End Try End Sub End Class
名前:MyWinShutDown
構文:Public Function MyWinShutDown() As Boolean
機能:ローカルコンピュータをシャットダウンします。
引数:なし。
戻り値:Boolean
戻り値の説明:
成功した場合は、プログラムがEnd命令で終了します。
False:失敗、エラー発生使用例:
Public Class Form1 Dim Cls_WinEnd As New NSDWinEnd Private Sub Button1_Click( ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click Try If MsgBox("シャットダウンを行います。" & vbCrLf & _ "よろしいですか?", _ MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then ' シャットダウンを行います. Cls_WinEnd.MyWinShutDown() End If Catch ex As Exception End Try End Sub End Class
名前:WinRestartDlg
構文:Public Function WinRestartDlg() As Boolean 機能: 再起動ダイアログボックスを表示します。
引数:なし。
戻り値:Boolean
戻り値の説明:
再起動の場合は、プログラムがEnd命令で終了します。
False:失敗、エラー発生使用例:
Public Class Form1 Dim Cls_WinEnd As New NSDWinEnd Private Sub Button1_Click( ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click Try Cls_WinEnd.WinRestartDlg() Catch ex As Exception End Try End Sub End Class
名前:WinShutDownDlg
構文:Public Function WinShutDownDlg() As Boolean 機能: シャットダウンダイアログボックスを表示します。
引数:なし。
戻り値:Boolean
戻り値の説明:
シャットダウンの場合は、プログラムがEnd命令で終了します。
False:失敗、エラー発生使用例:
Public Class Form1 Dim Cls_WinEnd As New NSDWinEnd Private Sub Button1_Click( ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click Try Cls_WinEnd.WinShutDownDlg() Catch ex As Exception End Try End Sub End Class
名前:WinEndDlg
構文:Public Function WinEndDlg() As Boolean 機能: 終了時のダイアログボックスを表示します。
引数:なし。
戻り値:Boolean
戻り値の説明:
True:成功 False:失敗、エラー発生
使用例:
Public Class Form1 Dim Cls_WinEnd As New NSDWinEnd Private Sub Button1_Click( ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click Try Cls_WinEnd.WinEndDlg() Catch ex As Exception End Try End Sub End Class
名前:RemoteShutDown
機能:リモートコンピュータのシャットダウン処理を開始します。
@リモートコンピュータのシャットダウン処理を開始します。 構文:Public Function RemoteShutDown( ComputerName ) As Boolean
引数:
名前 型 引数渡しの方法 説明 ComputerName String 値渡し(ByVal) リモートコンピュータ名を渡します。 戻り値:Boolean
戻り値の説明:
True:成功 False:失敗、エラー発生
使用例:
Public Class Form1 Dim Cls_WinEnd As New NSDWinEnd Private Sub Button1_Click( ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click Try Dim Str_Computer As String = Me.TextBox1.Text If String.IsNullOrEmpty(Str_Computer) Then MsgBox("コンピュータ名を入力してください。") Else If MsgBox("コンピュータ「" & Str_Computer & _ "」をシャットダウンします。" & vbCrLf & _ "よろしいですか?", _ MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then Cls_WinEnd.RemoteShutDown(Str_Computer) End If End If Catch ex As Exception End Try End Sub End Class
Aリモートコンピュータにメッセージを表示させて、シャットダウン処理を開始します。 構文:Public Function RemoteShutDown( ComputerName , Msg , TimeOut ) As Boolean
引数:
名前 型 引数渡しの方法 説明 ComputerName String 値渡し(ByVal) リモートコンピュータ名を渡します。 Msg String 値渡し(ByVal) 表示するメッセージを渡します。 TimeOut Integer 値渡し(ByVal) シャットダウンボックスの表示時間を渡します。 戻り値:Boolean
戻り値の説明:
True:成功 False:失敗、エラー発生
使用例:
Public Class Form1 Dim Cls_WinEnd As New NSDWinEnd Private Sub Button1_Click( ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click Try Dim Str_Computer As String = Me.TextBox1.Text If String.IsNullOrEmpty(Str_Computer) Then MsgBox("コンピュータ名を入力してください。") Else If MsgBox("コンピュータ「" & Str_Computer & _ "」をシャットダウンします。" & vbCrLf & _ "よろしいですか?", _ MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then Cls_WinEnd.RemoteShutDown(Str_Computer, "コンピュータをシャットダウンします。", 60) End If End If Catch ex As Exception End Try End Sub End Class
Bリモートコンピュータにメッセージを表示させて、シャットダウン処理を開始します(他のアプリケーションの強制終了有無を指定できます)。 構文:Public Function RemoteShutDown( ComputerName , Msg , TimeOut , ForceAppsClosed ) As Boolean
引数:
名前 型 引数渡しの方法 説明 ComputerName String 値渡し(ByVal) リモートコンピュータ名を渡します。 Msg String 値渡し(ByVal) 表示するメッセージを渡します。 TimeOut Integer 値渡し(ByVal) シャットダウンボックスの表示時間を渡します。 ForceAppsClosed Boolean 値渡し(ByVal) 他のアプリケーションを強制終了させるかどうかを渡します。
True :強制終了。
False:アプリケーションを終了するようにユーザーに指示するダイアログボックスが表示されます。戻り値:Boolean
戻り値の説明:
True:成功 False:失敗、エラー発生
使用例:
Public Class Form1 Dim Cls_WinEnd As New NSDWinEnd Private Sub Button1_Click( ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click Try Dim Str_Computer As String = Me.TextBox1.Text If String.IsNullOrEmpty(Str_Computer) Then MsgBox("コンピュータ名を入力してください。") Else If MsgBox("コンピュータ「" & Str_Computer & _ "」をシャットダウンします。" & vbCrLf & _ "よろしいですか?", _ MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then Cls_WinEnd.RemoteShutDown(Str_Computer, "コンピュータをシャットダウンします。", 60, True) End If End If Catch ex As Exception End Try End Sub End Class
名前:RemoteReboot
機能:リモートコンピュータの再起動処理を開始します。
@リモートコンピュータの再起動処理を開始します。 構文:Public Function RemoteReboot( ComputerName ) As Boolean
引数:
名前 型 引数渡しの方法 説明 ComputerName String 値渡し(ByVal) リモートコンピュータ名を渡します。 戻り値:Boolean
戻り値の説明:
True:成功 False:失敗、エラー発生
使用例:
Public Class Form1 Dim Cls_WinEnd As New NSDWinEnd Private Sub Button1_Click( ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click Try Dim Str_Computer As String = Me.TextBox1.Text If String.IsNullOrEmpty(Str_Computer) Then MsgBox("コンピュータ名を入力してください。") Else If MsgBox("コンピュータ「" & Str_Computer & _ "」を再起動します。" & vbCrLf & _ "よろしいですか?", _ MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then Cls_WinEnd.RemoteReboot(Str_Computer) End If End If Catch ex As Exception End Try End Sub End Class
Aリモートコンピュータにメッセージを表示させて、再起動処理を開始します。 構文:Public Function RemoteReboot( ComputerName , Msg , TimeOut ) As Boolean
引数:
名前 型 引数渡しの方法 説明 ComputerName String 値渡し(ByVal) リモートコンピュータ名を渡します。 Msg String 値渡し(ByVal) 表示するメッセージを渡します。 TimeOut Integer 値渡し(ByVal) シャットダウンボックスの表示時間を渡します。 戻り値:Boolean
戻り値の説明:
True:成功 False:失敗、エラー発生
使用例:
Public Class Form1 Dim Cls_WinEnd As New NSDWinEnd Private Sub Button1_Click( ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click Try Dim Str_Computer As String = Me.TextBox1.Text If String.IsNullOrEmpty(Str_Computer) Then MsgBox("コンピュータ名を入力してください。") Else If MsgBox("コンピュータ「" & Str_Computer & _ "」を再起動します。" & vbCrLf & _ "よろしいですか?", _ MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then Cls_WinEnd.RemoteReboot(Str_Computer, "コンピュータを再起動します。", 60) End If End If Catch ex As Exception End Try End Sub End Class
Bリモートコンピュータにメッセージを表示させて、再起動処理を開始します(他のアプリケーションの強制終了有無を指定できます)。 構文:Public Function RemoteReboot( ComputerName , Msg , TimeOut , ForceAppsClosed ) As Boolean
引数:
名前 型 引数渡しの方法 説明 ComputerName String 値渡し(ByVal) リモートコンピュータ名を渡します。 Msg String 値渡し(ByVal) 表示するメッセージを渡します。 TimeOut Integer 値渡し(ByVal) シャットダウンボックスの表示時間を渡します。 ForceAppsClosed Boolean 値渡し(ByVal) 他のアプリケーションを強制終了させるかどうかを渡します。
True :強制終了。
False:アプリケーションを終了するようにユーザーに指示するダイアログボックスが表示されます。戻り値:Boolean
戻り値の説明:
True:成功 False:失敗、エラー発生
使用例:
Public Class Form1 Dim Cls_WinEnd As New NSDWinEnd Private Sub Button1_Click( ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click Try Dim Str_Computer As String = Me.TextBox1.Text If String.IsNullOrEmpty(Str_Computer) Then MsgBox("コンピュータ名を入力してください。") Else If MsgBox("コンピュータ「" & Str_Computer & _ "」を再起動します。" & vbCrLf & _ "よろしいですか?", _ MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then Cls_WinEnd.RemoteReboot(Str_Computer, "コンピュータを再起動します。", 60, True) End If End If Catch ex As Exception End Try End Sub End Class
名前:GetIPAddress
構文:Public Function GetIPAddress( ComputerName ) As String() 機能:コンピュータ名からIPアドレスを返します。
引数:
名前 型 引数渡しの方法 説明 ComputerName String 値渡し(ByVal) コンピュータ名を渡します。
※ローカルコンピュータの場合は、Nothingを渡します。戻り値:String()
戻り値の説明:
IPアドレスを返します。
使用例:
Public Class Form1 Dim Cls_WinEnd As New NSDWinEnd Private Sub Button1_Click( ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click Try With Me.ListView1 .Items.Clear Dim Str_IPAddress() As String = Cls_WinEnd.GetIPAddress(Me.TextBox1.Text) If Not Str_IPAddress Is Nothing Then For Int_Loop As Integer = 0 To Str_IPAddress.Length - 1 Dim Str_MacAddress As String = Cls_WinEnd.IPToMacAddressString(Str_IPAddress(Int_Loop)) Dim LVItem As ListViewItem = .Items.Add(Str_IPAddress(Int_Loop)) If Not String.IsNullOrEmpty(Str_MacAddress) Then LVItem.SubItems.Add(Str_MacAddress) End If Next End If End With Catch ex As Exception End Try End Sub End Class
名前:IPToMacAddressString
機能:IPアドレスからMacアドレスを取得します。
@IPアドレスからMacアドレスを取得します。 構文:Public Function IPToMacAddressString( IPAddress ) As String
引数:
名前 型 引数渡しの方法 説明 IPAddress String 値渡し(ByVal) IPアドレスを渡します。
※例:「192.168.0.10」。戻り値:String
戻り値の説明:
Macアドレスを返します。
使用例:
Public Class Form1 Dim Cls_WinEnd As New NSDWinEnd Private Sub Button1_Click( ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click Try Dim Str_IPAddress As String = "192.168.0.10" Dim Str_MacAddress As String = Cls_WinEnd.IPToMacAddressString(Str_IPAddress) Catch ex As Exception End Try End Sub End Class
AIPアドレスからMacアドレスを取得します。 構文:Public Function IPToMacAddressString( IPAddress() ) As String
引数:
名前 型 引数渡しの方法 説明 IPAddress() Byte 値渡し(ByVal) IPアドレスを渡します。 戻り値:String
戻り値の説明:
Macアドレスを返します。
使用例:
Public Class Form1 Dim Cls_WinEnd As New NSDWinEnd Private Sub Button1_Click( ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click Try Dim Byte_IPAddress(0 To 3) As Byte Byte_IPAddress(0) = 192 Byte_IPAddress(1) = 168 Byte_IPAddress(2) = 0 Byte_IPAddress(3) = 10 Dim Str_MacAddress As String = Cls_WinEnd.IPToMacAddressString(Byte_IPAddress) Catch ex As Exception End Try End Sub End Class
名前:IPToMacAddressByte
機能:IPアドレスからMacアドレスを取得します。
@IPアドレスからMacアドレスを取得します。 構文:Public Function IPToMacAddressByte( IPAddress ) As Byte()
引数:
名前 型 引数渡しの方法 説明 IPAddress String 値渡し(ByVal) IPアドレスを渡します。
※例:「192.168.0.10」。戻り値:Byte()
戻り値の説明:
Macアドレスを返します。
使用例:
Public Class Form1 Dim Cls_WinEnd As New NSDWinEnd Private Sub Button1_Click( ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click Try Dim Str_IPAddress As String = "192.168.0.10" Dim Byte_MacAddress() As Byte = Cls_WinEnd.IPToMacAddressByte(Str_IPAddress) Catch ex As Exception End Try End Sub End Class
AIPアドレスからMacアドレスを取得します。 構文:Public Function IPToMacAddressByte( IPAddress() ) As Byte()
引数:
名前 型 引数渡しの方法 説明 IPAddress() Byte 値渡し(ByVal) IPアドレスを渡します。 戻り値:Byte()
戻り値の説明:
Macアドレスを返します。
使用例:
Public Class Form1 Dim Cls_WinEnd As New NSDWinEnd Private Sub Button1_Click( ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click Try Dim Byte_IPAddress(0 To 3) As Byte Byte_IPAddress(0) = 192 Byte_IPAddress(1) = 168 Byte_IPAddress(2) = 0 Byte_IPAddress(3) = 10 Dim Byte_MacAddress() As Byte = Cls_WinEnd.IPToMacAddressByte(Byte_IPAddress) Catch ex As Exception End Try End Sub End Class
名前:WakeOnLan
機能:Wake On Lan機能でLan上の指定Macアドレスを持つクライアントの電源を入れます。 ※Wake On Lanで電源を入れるには、電源を入れる側のコンピュータの設定(BIOS、LAN等)が行われている必要があります。
@Wake On Lan機能でLan上の指定Macアドレスを持つクライアントの電源を入れます。 構文:Public Sub WakeOnLan( MacAddress )
引数:
名前 型 引数渡しの方法 説明 MacAddress String 値渡し(ByVal) Macアドレスを渡します。
※例:「00-00-00-00-00-00」
「00.00.00.00.00.00」
「00 00 00 00 00 00」
「000000000000」戻り値:なし。
使用例:
Public Class Form1 Dim Cls_WinEnd As New NSDWinEnd Private Sub Button1_Click( ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click Try Dim Str_MacAddress As String = Me.TextBox1.Text If String.IsNullOrEmpty(Str_MacAddress) Then MsgBox("Macアドレスを入力してください。") Else Dim Str_Msg As String = Nothing Str_Msg = "Wake On Lanで電源を入れるには、" Str_Msg &= "電源を入れる側のコンピュータの設定(BIOS、LAN等)" Str_Msg &= "が行われている必要があります。" & vbcrlf & vbcrlf Str_Msg &= "Macアドレス「" & Str_MacAddress & "」の電源を入れます。" Str_Msg &= vbCrLf & "よろしいですか?" If MsgBox(Str_Msg, MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then Cls_WinEnd.WakeOnLan(Str_MacAddress) End If End If Catch ex As Exception End Try End Sub End Class
AWake On Lan機能でLan上の指定Macアドレスを持つクライアントの電源を入れます。 構文:Public Sub WakeOnLan( MacAddress() )
引数:
名前 型 引数渡しの方法 説明 MacAddress() Byte 値渡し(ByVal) Macアドレスを渡します。 戻り値:なし。
使用例:
Public Class Form1 Dim Cls_WinEnd As New NSDWinEnd Private Sub Button1_Click( ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click Try Dim Byte_MacAddress(0 To 5) As Byte Byte_MacAddress(0) = 0 Byte_MacAddress(1) = 1 Byte_MacAddress(2) = 2 Byte_MacAddress(3) = 3 Byte_MacAddress(4) = 4 Byte_MacAddress(5) = 5 Cls_WinEnd.WakeOnLan(Byte_MacAddress) Catch ex As Exception End Try End Sub End Class
名前:MoniterOn
構文:Public Sub MoniterOn() 機能:ディスプレイの電源をONにします。
※実際に主電源がON状態になるものではありません。
引数:なし。
戻り値:なし。
使用例:
Public Class Form1 Dim Cls_WinEnd As New NSDWinEnd Private Sub Button1_Click( ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click Try MsgBox("ディスプレイの電源を切って、10秒後に電源を入れます。" & vbCrLf & _ "※キーボード入力またはマウスの移動が発生した場合は、" & _ "電源ONの命令を待たずに電源が入ります。" ) Cls_WinEnd.MoniterOff() System.Threading.Thread.Sleep(10000) Cls_WinEnd.MoniterOn() Catch ex As Exception End Try End Sub End Class
名前:MoniterOff
構文:Public Sub MoniterOff() 機能: ディスプレイの電源をOFFにします。
※実際に主電源がOFF状態になるものではありません。
引数:なし。
戻り値:なし。
使用例:
Public Class Form1 Dim Cls_WinEnd As New NSDWinEnd Private Sub Button1_Click( ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click Try MsgBox("ディスプレイの電源を切って、10秒後に電源を入れます。" & vbCrLf & _ "※キーボード入力またはマウスの移動が発生した場合は、" & _ "電源ONの命令を待たずに電源が入ります。" ) Cls_WinEnd.MoniterOff() System.Threading.Thread.Sleep(10000) Cls_WinEnd.MoniterOn() Catch ex As Exception End Try End Sub End Class
Copyright (C) 2010 Nihon System Developer Corp. All Rights Reserved.