1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
|
#region Using
using System;
using System.Collections.Generic;
using System.Windows.Forms;
using System.Runtime.InteropServices;
#endregion
namespace Toolset {
#region Beschreibung
/// <summary>
/// Mithilfe dieser Klasse, können Sie Ihr eigenes Fenster + den Button in der Taskleiste, in einem Periodischen
/// Zeitinterval, aufblinken lassen.
/// Zusätzlich können Sie sich auch noch, an ein Event dranhängen und noch etwas eigenes dazu zu Programmieren
/// </summary>
/// <example>
/// <code lang="C#">
/// private Toolset.WindowFlasher flasher
/// //Innerhalb einer Form Klassem zb weil eine längere Arbeitsphase abgeschlossen ist und das Fenster
/// //in der Zwischenzeit minimiert wurde
/// private void StartWindowFlasher(){
/// flasher = new Toolset.WindowFlasher(this, 1000);
/// flasher.StartFlashing();
/// this.Activated += new System.EventHandler(this.Form1_Activated);
/// }
/// private void Form1_Activated(object sender, EventArgs e) {
/// if (flasher != null && flasher.IsActive) {
/// flasher.StopFlashing();
/// this.Activated -= this.Form1_Activated;
/// }
/// }
/// </code>
/// </example>
#endregion
public class WindowFlasher {
#region Event
/// <summary>
/// Stellt den Typ der Methode dar, die das Ereigniss behandelt.
/// </summary>
public delegate void WindowFlashHandler(Object sender, EventArgs ea);
/// <summary>
/// Tritt bei jedem Tick auf.
/// </summary>
public event WindowFlashHandler WindowFlashed;
#endregion
#region Private Felder
private Timer timer;
private Boolean isActive;
#endregion
#region Property
/// <summary>
/// Gibt an ob der Timer läuft oder ob er bereits gestoppt wurde.
/// </summary>
public Boolean IsActive {
get {
return isActive;
}
}
#endregion
#region DllImport
[DllImport("user32.dll")]
static extern long FlashWindow(IntPtr hwnd, long invert);
#endregion
#region konstruktor
/// <summary>
/// Initialisiert eine neue Instanz der MultiClipboard Klasse.
/// </summary>
/// <param name="window">die jeweilige Form die Blicken soll</param>
/// <param name="intervalInMs">ein Interval in ms, in welchen abstand die Form Blincken soll</param>
public WindowFlasher(Form window, int intervalInMs) {
IntPtr windowHwnd = window.Handle;
timer = new Timer();
timer.Interval = intervalInMs;
timer.Tick += new EventHandler(delegate(Object sender, EventArgs e) { long l = FlashWindow(windowHwnd, 1); if (WindowFlashed != null) WindowFlashed(window, new EventArgs()); });
}
#endregion
#region Destruktor
/// <summary>
/// aufräumen
/// </summary>
~WindowFlasher() {
WindowFlashed = null;
this.StopFlashing();
timer = null;
}
#endregion
#region Methoden
/// <summary>
/// Startet den Flasher Vorgang
/// </summary>
public void StartFlashing() {
if (!isActive) {
timer.Start();
isActive = true;
}
}
/// <summary>
/// Stoppt den Flasher vorgang
/// </summary>
public void StopFlashing() {
if (isActive) {
isActive = false;
timer.Stop();
}
}
#endregion
}
}
|