1

アプリケーションがあります。アプリケーションが一定時間使用されていない場合は、非表示にする必要があります。アプリケーションが非表示になっていて、アイコンの上にマウスを置くと、復元されます。

これどうやってするの?前もって感謝します。

4

3 に答える 3

2

マウスがフォーム/ウィンドウ上にない時間をカウントするタイマーをアプリケーションで定義する必要があります。次に、アプリケーションを非表示にします。

WPF NotifyIconをダウンロード し、フォーム/ウィンドウを表示するMouseOverイベントを処理します

編集:

アプリケーションをトレイに最小化し、ウィンドウを非表示にしてデスクトップに保持する必要がない場合->同じアルゴリズムを使用しますが、ウィンドウを非表示にしない場合は、透明度を0%または10%に設定します。マウスが上にあるとき-透明度を100%に設定します。

于 2012-10-18T09:49:47.747 に答える
1

JesseJamesが言ったように、タイマーを使用してアプリケーションの非アクティブ時間を測定し、一定時間後に非表示にします。マウスをNotifyIconに合わせたら、再度アクティブにします。これがその仕事をするサンプルのWindowsFormsソリューションです:

private Timer _timer;
private int _ticks;

public Form1()
{
    _timer = new Timer { Interval = 1000, Enabled = true };
    _timer.Tick += TimerTick;

    Activated += Form1_Activated;
    MouseMove += Form1_MouseMove;
    //notifyIcon1 is an icon set through the designer
    notifyIcon1.MouseMove += NotifyIcon1MouseMove;
}

protected void TimerTick(object sender, EventArgs e)
{
    //After 5 seconds the app will be hidden
    if (_ticks++ == 5)
    {
        WindowState = FormWindowState.Minimized;
        Hide();
        _timer.Stop();
        _ticks = 0;
    }
}

protected void NotifyIcon1MouseMove(object sender, MouseEventArgs e)
{
    WindowState = FormWindowState.Normal;
    Show();
    _ticks = 0;
    _timer.Start();
}

protected void Form1_MouseMove(object sender, MouseEventArgs e)
{
    _ticks = 0;
}

おそらくもっとクリーンな解決策があるかもしれません、私にはわかりませんが、それはあなたを道に連れて行きます。同じ原則がWPFにも当てはまりますが、コードのみがわずかに異なります。お役に立てれば!

于 2012-10-18T10:25:41.643 に答える
0

ユーザーが入力を行ったかどうかを確認するには、このような同様のアプローチを使用できます。アプリケーションを再び表示するには、グローバルマウスとキーボード入力を取得する方法が必要です。これを行うには、フックを使用できます。そのための1つの解決策をここで見つけることができます。フックがトリガーされた場合、実際には使用しているUIの種類によって異なりますが、特定のメソッドhideまたはshowメソッドを呼び出すだけで十分です。

于 2012-10-18T09:50:36.023 に答える