使用C#

时间:2018-09-20 08:18:08

标签: c# powershell batch-file bluetooth

我的目标:

我正在尝试通过C#中的Windows应用程序控制蓝牙的状态。为此,我得到了一个从批处理文件执行的PowerShell脚本。

我尝试过的事情:

我尝试了多种实现此目标的方法,如下所示。

方法1:

        Process proc = new Process();
        string _batDir = Application.StartupPath + @"\ToggleBluetoothState\";
        proc.StartInfo.WorkingDirectory = _batDir;
        proc.StartInfo.FileName = "ToggleBluetoothState.bat";
        proc.StartInfo.CreateNoWindow = false;
        proc.Start();
        proc.WaitForExit();
        proc.Close();

方法2:

        ProcessStartInfo startInfo = new ProcessStartInfo();
        startInfo.WorkingDirectory = Environment.CurrentDirectory;
        startInfo.FileName = @"powershell.exe";
        startInfo.Arguments = "-ExecutionPolicy ByPass -File " + Application.StartupPath + @"\ToggleBluetoothState\ToggleBluetoothState.ps1";
        startInfo.CreateNoWindow = false;
        Process process = new Process
        {
            StartInfo = startInfo
        };
        process.Start();

方法3:

        PowerShell ps = PowerShell.Create();
        ps.Commands.AddScript(Application.StartupPath + @"\ToggleBluetoothState\ToggleBluetoothState.ps1");
        ps.Invoke();

挑战:

现在正在努力从我的应用程序调用此PowerShell脚本/批处理文件。当我尝试运行应用程序时,将出现空白的“命令”窗口/ PowerShell窗口,并在3-4秒内关闭。我想知道是直接通过双击执行批处理文件还是从PowerShell ISE执行相同的脚本,它都能正常工作,即可以切换蓝牙状态。

先谢谢了。

0 个答案:

没有答案