我的目标:
我正在尝试通过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执行相同的脚本,它都能正常工作,即可以切换蓝牙状态。
先谢谢了。