質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
VBScript

VBScript(Visual Basic Scripting Edition)はMicrosftが開発したスクリプト言語であり、Visual Basicのサブセットです。

Q&A

解決済

4回答

19179閲覧

VBScriptのボタン

Launcher

総合スコア19

VBScript

VBScript(Visual Basic Scripting Edition)はMicrosftが開発したスクリプト言語であり、Visual Basicのサブセットです。

0グッド

1クリップ

投稿2017/01/31 01:20

vbscriptをつかってシャットダウンをさせたいと思っています。

現在のソースはこちら

Msg = MsgBox("シャットダウンしますか?", vbYesNo + vbQuestion, "確認")
If Msg = vbYes Then
Set WSHShell = WScript.CreateObject("WScript.shell")
WSHShell.Run "Shutdown.exe -S"
End If

イメージ説明

この「はい(Y)」「いいえ(N)」
の部分を
「シャットダウン(Y)」「再起動(N)」
にしたいと思っています。

ここの文字を変えることは可能ですか?不可能ですか?教えてください。

可能な場合その方法を
不可能な場合、ほかの言語でこのようにシャットダウンできる言語を教えてください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

vbs でダイアログを作るには「[VBScript] ラジオボタンダイアログを実現する」のように IE を使うのが一番手軽なようです。
IE を使わず vbs は使うならば、ダイアログを作る COM オブジェクトを Visual Studio .NET などで作成・登録し、それを vbs から使うのが正攻法でしょう。
しかしそれができるならシャットダウンツールを exe として直接作る方が簡単です。

vbs を使わないならば、PowerShell という選択肢もありますが、これはデフォルトでは GUI からダブルクリックで実行できないようになっています。

もう一つの方法として、ウィンドウズ自身のシャットダウンダイアログを使用するという手もあります。
次のスクリプトを試してみてください。

VBScript

1Set shell = CreateObject("shell.application") 2shell.ShutdownWindows

投稿2017/01/31 02:48

Zuishin

総合スコア28656

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

exe として直接作るほうが簡単だと書きましたので、作ってみました。
以下のコードを compile.ps1 として保存し、PowerShell を開いて実行してみてください。
するとカレントディレクトリに sdrb.exe という実行ファイルが出来上がります。
成功したなら compile.ps1 は削除して結構です。
sdrb.exe を実行すると、シャットダウンの方法を尋ねるダイアログが開きます。

PowerShell

1$Source = @" 2 using System; 3 using System.ComponentModel; 4 using System.Diagnostics; 5 using System.Drawing; 6 using System.Windows.Forms; 7 class Program 8 { 9 public static void Main() 10 { 11 var form = new Form(); 12 form.SuspendLayout(); 13 form.Size = new Size(400, 150); 14 form.StartPosition = FormStartPosition.CenterScreen; 15 form.FormBorderStyle = FormBorderStyle.FixedDialog; 16 form.MaximizeBox = false; 17 form.MinimizeBox = false; 18 form.TopMost = true; 19 20 var panel = new TableLayoutPanel(); 21 panel.Dock = DockStyle.Fill; 22 panel.ColumnCount = 2; 23 panel.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50F)); 24 panel.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50F)); 25 panel.RowCount = 2; 26 panel.RowStyles.Add(new RowStyle(SizeType.Percent, 50F)); 27 panel.RowStyles.Add(new RowStyle(SizeType.Percent, 50F)); 28 form.Controls.Add(panel); 29 30 var label = new Label(); 31 label.Anchor = AnchorStyles.None; 32 label.AutoSize = true; 33 label.Text = "シャットダウンしますか?"; 34 panel.Controls.Add(label); 35 panel.SetColumnSpan(label, 2); 36 37 var shutDownButton = new Button(); 38 shutDownButton.Text = "シャットダウン(&Y)"; 39 shutDownButton.Anchor = AnchorStyles.None; 40 shutDownButton.Width = 150; 41 shutDownButton.Click += (sender, e) => 42 { 43 shutdown("-s -t 0"); 44 }; 45 panel.Controls.Add(shutDownButton); 46 47 var rebootButton = new Button(); 48 rebootButton.Text = "再起動(&N)"; 49 rebootButton.Anchor = AnchorStyles.None; 50 rebootButton.Width = 150; 51 rebootButton.Click += (sender, e) => 52 { 53 shutdown("-r -t 0"); 54 }; 55 panel.Controls.Add(rebootButton); 56 57 form.ResumeLayout(false); 58 form.ShowDialog(); 59 } 60 61 private static void shutdown(string arg) 62 { 63 var info = new ProcessStartInfo(); 64 info.FileName = "shutdown.exe"; 65 info.Arguments = arg; 66 info.CreateNoWindow = true; 67 Process.Start(info); 68 } 69 } 70"@ 71$Reference = "System.dll", "System.Drawing.dll", "System.Windows.Forms.dll" 72 73$compiler = New-Object Microsoft.CSharp.CSharpCodeProvider 74$compilerParameters = New-Object System.CodeDom.Compiler.CompilerParameters 75if ($Reference.Length -gt 0) { 76 $compilerParameters.ReferencedAssemblies.AddRange($Reference) 77} 78$compilerParameters.GenerateInMemory = $false 79$compilerParameters.GenerateExecutable = $true 80$compilerParameters.OutputAssembly = ".\sdrb.exe" 81$compilerParameters.CompilerOptions = "/target:winexe" 82$results = $compiler.CompileAssemblyFromSource($compilerParameters, $Source) 83if ($results.NativeCompilerReturnValue -ne 0) { 84 $results.Output | Write-Host 85 exit 1 86}

投稿2017/01/31 04:47

Zuishin

総合スコア28656

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Launcher

2017/02/08 04:11

無事うまくいったので使わせていただきました! 作成、ありがとうございます!
guest

0

変更は無理ですね。

「HTAアプリ」はどうでしょうか?
HTML+VBScript(またはJScript)で簡単なものならGUIアプリが書けます。ご希望のものくらいは大丈夫です。

具体的にはググってください。

投稿2017/01/31 03:08

otn

総合スコア84423

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

投稿2017/01/31 01:22

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問