K.inc Tec Blog

Mein kleines EDV Logbuch

Category: Programmierung

Bildschirm per CMD sperren

rundll32.exe user32.dll,LockWorkStation

Meteor für lokalen Benutzer installieren

Unter Windows soll man das Meteor Framework über Chocolatey installieren. Unter einer privilegierten Shell ist nach der Installation von Chocolatey folgendes einzugeben:

choco install meteor

Damit wird Meteor unter %LOCALAPPDATA% des Administrators installiert. Es gibt dafür einen Workaround. Man muss vorher 2 Umgebungsvariablen in der Shell ändern:

set LOCALAPPDATA=C:\Users\<username>\AppData\Local
set USERPROFILE=C:\Users\<username>

C# Hotkeys

WPF

In WPF gibt es 2 Möglichkeiten auf Tastaturbefehle zu reagieren. Wir gehen hier mal beispielhaft von einer Textbox als GUI Elemt aus, in dem ein Tastaturbefehl abgefangen werden soll.

Keydown Event

XML

<TextBox x:Name="txtTest" KeyDown="txtTest_KeyDown" AcceptsReturn="True" TextWrapping="Wrap"  SpellCheck.IsEnabled="True" Language="de-DE" ScrollViewer.VerticalScrollBarVisibility="Auto" ScrollViewer.HorizontalScrollBarVisibility="Auto" />

Code

private void txtTextIntern_KeyDown(object sender, KeyEventArgs e)     {         
  if (e.Key == Key.A &&Keyboard.Modifiers.HasFlag(ModifierKeys.Control))
  {
    if (Keyboard.Modifiers.HasFlag(ModifierKeys.Shift))
      MessageBox.Show("CTRL + SHIFT + A trapped");
    else
      MessageBox.Show("CTRL + A trapped");
  }
}

Als Keybinding

In diesem Beispiel wird auch gezeigt, wie man per Typumwandlung eine Funktion für alle WPF-Elemente mit dem selben Binding nutzen kann.

XML

<TextBox x:Name="txtTextExtern" AcceptsReturn="True" TextWrapping="Wrap"  SpellCheck.IsEnabled="True" Language="de-DE" ScrollViewer.VerticalScrollBarVisibility="Auto" ScrollViewer.HorizontalScrollBarVisibility="Auto">
  <TextBox.CommandBindings>
    <CommandBinding Command="SelectAll" Executed="SelectAllCommand" />
  </TextBox.CommandBindings>
  <TextBox.InputBindings>
    <KeyBinding Key="A" Modifiers="Control" Command="SelectAll" />
  </TextBox.InputBindings>
</TextBox>

Code

private void SelectAllCommand(object sender, ExecutedRoutedEventArgs e)
{
  if (e.Key == Key.A && Keyboard.Modifiers.HasFlag(ModifierKeys.Control))
  {
    var obj = (TextBox)sender;
    obj.SelectAll();
  }
}

Nuget Paketquelle in Visual Studio hinzufügen

Weiterlesen

© 2016 kinc.de