0

起動時にトレイ アイコンしかない WPF アプリケーションを構築したいと考えています。ユーザーがトレイのコンテキスト メニューからメニュー エントリを操作すると、Windows が表示されます。

ただし、MainWindow をロードする必要があるため、Clipboard Changed Events をリッスンできます。でも見せたくない。

私は試した:

<Window x:Class="ClipboardListener.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:tb="http://www.hardcodet.net/taskbar"
    Title="Should not see me"
    ShowInTaskbar="False" Visibility="Collapsed" Opacity="100"
    Width="320" Height="240">

しかし、それはまだ表示されますか?クリップボード イベント リスナーを WinAPI に登録するにはウィンドウが必要なので、Visibility を Hidden に設定してもうまくいきません。

何か案は?

4

1 に答える 1

2

私は最近、非常によく似た仕事をしました。ウィンドウを非表示にする試み、グーグル、スタックオーバーフローなどはすべて失敗しました。最後に、目に見えないウィンドウは、何らかの理由で WPF にあってはならないものだと感じました。WinForms のように TrayIcon コントロールがあれば簡単です。残念ながら、WPF には TrayIcon がありません。これは、WinForms に存在するものにつながります。

この問題に関する良い記事があります。そして、このdllを使用する私のコード:

<Window x:Class="ScannerClientWpf.TrayIcon"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:ni="clr-namespace:Hardcodet.Wpf.TaskbarNotification;assembly=Hardcodet.Wpf.TaskbarNotification"
    Title="TrayIcon" WindowStyle="None" AllowsTransparency="True" Background="Transparent" ShowActivated="False" ShowInTaskbar="False" >
<Grid>
    <ni:TaskbarIcon IconSource="/ScannerClient;component/app.ico" 
                    ToolTipText="ScannerClient">
        <ni:TaskbarIcon.ContextMenu>
            <ContextMenu>
                <MenuItem Header="Close" Click="MenuItem_Click"/>
            </ContextMenu>
        </ni:TaskbarIcon.ContextMenu>
    </ni:TaskbarIcon>
</Grid>

于 2012-04-29T18:29:30.617 に答える