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

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

ただいまの
回答率

90.54%

  • VBScript

    275questions

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

VBScriptのボタン

解決済

回答 4

投稿

  • 評価
  • クリップ 1
  • VIEW 5,022

Launcher

score 13

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)」
にしたいと思っています。

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

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

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 4

+2

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

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

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

checkベストアンサー

+1

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

$Source = @"
    using System;
    using System.ComponentModel;
    using System.Diagnostics;
    using System.Drawing;
    using System.Windows.Forms;
    class Program
    {
        public static void Main()
        {
            var form = new Form();
            form.SuspendLayout();
            form.Size = new Size(400, 150);
            form.StartPosition = FormStartPosition.CenterScreen;
            form.FormBorderStyle = FormBorderStyle.FixedDialog;
            form.MaximizeBox = false;
            form.MinimizeBox = false;
            form.TopMost = true;

            var panel = new TableLayoutPanel();
            panel.Dock = DockStyle.Fill;
            panel.ColumnCount = 2;
            panel.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50F));
            panel.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50F));
            panel.RowCount = 2;
            panel.RowStyles.Add(new RowStyle(SizeType.Percent, 50F));
            panel.RowStyles.Add(new RowStyle(SizeType.Percent, 50F));
            form.Controls.Add(panel);

            var label = new Label();
            label.Anchor = AnchorStyles.None;
            label.AutoSize = true;
            label.Text = "シャットダウンしますか?";
            panel.Controls.Add(label);
            panel.SetColumnSpan(label, 2);

            var shutDownButton = new Button();
            shutDownButton.Text = "シャットダウン(&Y)";
            shutDownButton.Anchor = AnchorStyles.None;
            shutDownButton.Width = 150;
            shutDownButton.Click += (sender, e) =>
            {
                shutdown("-s -t 0");
            };
            panel.Controls.Add(shutDownButton);

            var rebootButton = new Button();
            rebootButton.Text = "再起動(&N)";
            rebootButton.Anchor = AnchorStyles.None;
            rebootButton.Width = 150;
            rebootButton.Click += (sender, e) =>
            {
                shutdown("-r -t 0");
            };
            panel.Controls.Add(rebootButton);

            form.ResumeLayout(false);
            form.ShowDialog();
        }

        private static void shutdown(string arg)
        {
            var info = new ProcessStartInfo();
            info.FileName = "shutdown.exe";
            info.Arguments = arg;
            info.CreateNoWindow = true;
            Process.Start(info);
        }
    }
"@
$Reference = "System.dll", "System.Drawing.dll", "System.Windows.Forms.dll"

$compiler = New-Object Microsoft.CSharp.CSharpCodeProvider
$compilerParameters = New-Object System.CodeDom.Compiler.CompilerParameters
if ($Reference.Length -gt 0) {
    $compilerParameters.ReferencedAssemblies.AddRange($Reference)
}
$compilerParameters.GenerateInMemory = $false
$compilerParameters.GenerateExecutable = $true
$compilerParameters.OutputAssembly = ".\sdrb.exe"
$compilerParameters.CompilerOptions = "/target:winexe"
$results = $compiler.CompileAssemblyFromSource($compilerParameters, $Source)
if ($results.NativeCompilerReturnValue -ne 0) {
    $results.Output | Write-Host
    exit 1
}

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/02/08 13:11

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

    キャンセル

0

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

変更は無理ですね。

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

同じタグがついた質問を見る

  • VBScript

    275questions

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