Add a kill button for manually killing the content

This commit is contained in:
Mike Griese 2021-08-12 11:28:01 -05:00
parent 88d974280d
commit 56f1223dc5
4 changed files with 23 additions and 5 deletions

View file

@ -90,7 +90,6 @@ namespace winrt::SampleApp::implementation
THROW_IF_WIN32_BOOL_FALSE(succeeded);
// Wait for the child process to signal that they're ready.
// TODO!: The _first_ time we run, we always fail to init the ContentProcess. What the heck?
WaitForSingleObject(ev.get(), INFINITE);
return std::move(piOne);
@ -153,9 +152,8 @@ namespace winrt::SampleApp::implementation
_writeToLog(L"CreateInstance the ContentProces object");
_writeToLog(fmt::format(L" HR ({}): {}", hr.code(), hr.message().c_str()));
co_return; // be sure to co_return or we'll fall through to the part where we clear the log
}
if (content == nullptr)
{
_writeToLog(L"Failed to connect to the ContentProces object. It may not have been started fast enough.");
@ -213,15 +211,27 @@ namespace winrt::SampleApp::implementation
}
void MyPage::CloseClicked(const IInspectable& /*sender*/,
const WUX::Input::TappedRoutedEventArgs& /*eventArgs*/)
const WUX::Input::TappedRoutedEventArgs& /*eventArgs*/)
{
OutOfProcContent().Children().Clear();
GuidInput().Text(L"");
if (piContentProcess.hProcess)
{
piContentProcess.reset();
}
}
void MyPage::KillClicked(const IInspectable& /*sender*/,
const WUX::Input::TappedRoutedEventArgs& /*eventArgs*/)
{
if (piContentProcess.hProcess)
{
TerminateProcess(piContentProcess.hProcess, (UINT)-1);
piContentProcess.reset();
}
}
// Method Description:
// - Gets the title of the currently focused terminal control. If there
// isn't a control selected for any reason, returns "Windows Terminal"

View file

@ -18,6 +18,7 @@ namespace winrt::SampleApp::implementation
winrt::fire_and_forget CreateClicked(const IInspectable& sender, const Windows::UI::Xaml::Input::TappedRoutedEventArgs& eventArgs);
void CloseClicked(const IInspectable& sender, const Windows::UI::Xaml::Input::TappedRoutedEventArgs& eventArgs);
void KillClicked(const IInspectable& sender, const Windows::UI::Xaml::Input::TappedRoutedEventArgs& eventArgs);
private:
friend struct MyPageT<MyPage>; // for Xaml to bind events

View file

@ -3,7 +3,7 @@
namespace SampleApp
{
[default_interface] runtimeclass MyPage : Windows.UI.Xaml.Controls.Page
[default_interface] runtimeclass MyPage : Windows.UI.Xaml.Controls.Page, Windows.UI.Xaml.Data.INotifyPropertyChanged
{
MyPage();
}

View file

@ -30,9 +30,16 @@
</Button>
<Button x:Name="CloseOopControl"
Grid.Row="0"
Margin="4,0,0,0"
Tapped="CloseClicked">
Close
</Button>
<Button x:Name="KillOopControl"
Grid.Row="0"
Margin="4,0,0,0"
Tapped="KillClicked">
Kill
</Button>
</StackPanel>