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ページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答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
総合スコア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
総合スコア28656
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
投稿2017/01/31 01:22
退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。