小编Cha*_*tte的帖子

您如何等待任务计划程序任务在批处理文件或C#中完成?

我正在尝试编写一个执行两项操作的批处理文件:

  1. 首先,它启动安装程序(program.exe)的安装程序(install.exe).
  2. 其次,它启动已安装程序的一个实例(program.exe).必须在安装完成后执行此操作.

除了安装程序需要管理员权限并且必须在用户上下文中运行之外,这将是相对简单的.即使有这些限制,这仍然是相对简单的,除了我在Azure Worker Role上运行它,这意味着两件事:

  1. 必须从启动任务运行提升的批处理文件.
  2. Azure辅助角色中的启动任务没有用户上下文.

因此,解决方案似乎是在真实用户上下文中将安装程序作为任务计划程序任务运行.但是,这需要注意我需要在启动program.exe之前等待此任务完成.

因此,我的问题是:如何等待任务计划程序任务完成批处理文件?

或者,我可以在单个任务计划程序任务中以菊花链形式连接我的批处理文件中的两个调用(任务计划程序在单个任务中最多支持16个连续事件[需要引证]).

不过,如果我采取这种做法我的批处理文件将尽快任务终止计划,不只要它完成.不幸的是,我必须等到它才能完成我的工作者角色中的任何逻辑.但是,如果我可以检查任务计划程序任务是否已完成C#(没有管理员权限),那么我可以在那里等待它.

因此,第二个可行的答案是问题:如何检查任务计划程序任务是否已从C#完成?

编辑:我想我会通过MC ND澄清以下答案:

从高级别开始,此命令检查任务是否正在运行,然后它会休眠并循环(如果是).

:loop
for /f "tokens=2 delims=: " %%f in ('schtasks /query /tn yourTaskName /fo list ^| find "Status:"' ) do (
    if "%%f"=="Running" (
        ping -n 6 localhost >nul 2>nul
        goto loop
    )
)
Run Code Online (Sandbox Code Playgroud)

该调用schtasks /query /tn yourTaskName /fo list输出如下内容:

Folder: \  
HostName:      1234567890  
TaskName:      \yourTaskName  
Next Run Time: 11/27/2030 11:40:00 PM  
Status:        Ready  
Logon Mode:    Interactive/Background …
Run Code Online (Sandbox Code Playgroud)

c# windows batch-file scheduled-tasks azure

9
推荐指数
2
解决办法
1万
查看次数

在 Windows C++ 中检测白色或黑色高对比度模式

MS App Assure 团队向我报告了一个问题,即我的应用程序的通知区域/系统托盘图标在白色高对比度主题(或接近白色,如 Windows 11 的“沙漠”主题)上几乎不可见。

我已经有一个在(正常、非高对比度)Windows 浅色主题打开时使用的深色图标,因此我也想在这些场景中使用它。

唯一的问题是,虽然我可以检测高对比度模式是否打开SystemParametersInfo,但我没有找到任何东西来检测它是白色还是黑色高对比度主题。我将如何继续检测到这一点?

我知道 MSIX 包支持为白色和黑色高对比度主题使用不同的图标,那么它们如何检测它呢?

c++ windows winapi accessibility system-tray

5
推荐指数
1
解决办法
494
查看次数

在UWP中创建漂亮的SplitView

我按照教程添加了一个SplitView控件到我的页面.代码如下:

<SplitView x:Name="MainSplitView" DisplayMode="CompactOverlay" IsPaneOpen="False" CompactPaneLength="50" OpenPaneLength="150">
        <SplitView.Pane>
            <StackPanel Background="Gray">
                <Button x:Name="HamburgerButton" FontFamily="Segoe MDL2 Assets" Content="&#xE700;" Width="50" Height="50" Background="Transparent" Click="HamburgerButton_Click" />
                <StackPanel Orientation="Horizontal">
                    <Button x:Name="MenuButton1" FontFamily="Segoe MDL2 Assets" Content="&#xE825;" Width="50" Height="50" Background="Transparent" />
                    <TextBlock Text="Button 1" FontSize="18" VerticalAlignment="Center" />
                </StackPanel>
                <StackPanel Orientation="Horizontal">
                    <Button x:Name="SettingsButton" FontFamily="Segoe MDL2 Assets" Content="&#xE713;" Width="50" Height="50" Background="Transparent" FontSize="18" />
                    <TextBlock Text="Settings" FontSize="18" VerticalAlignment="Center" />
                </StackPanel>
                <StackPanel Orientation="Horizontal">
                    <Button x:Name="AboutButton" FontFamily="Segoe MDL2 Assets" Content="&#xE897;" Width="50" Height="50" Background="Transparent" FontSize="18" />
                    <TextBlock Text="About" FontSize="18" VerticalAlignment="Center" />
                </StackPanel>
            </StackPanel>
        </SplitView.Pane> …
Run Code Online (Sandbox Code Playgroud)

c# splitview uwp

3
推荐指数
1
解决办法
4520
查看次数