using System; using System.Drawing; using System.Reflection; using System.Runtime.InteropServices; using System.Threading; using System.Windows.Forms; using Microsoft.Win32; namespace Night_Filter { public partial class Form1 : Form { // funkcie na povolenie Click through [DllImport("user32.dll")] private static extern int GetWindowLong(IntPtr hWnd, int nIndex); [DllImport("user32.dll")] private static extern int SetWindowLong(IntPtr hWnd, int nIndex, int dwNewLong); private bool visible = true, fullscreen = true; private int initialStyle; public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { // ulozime si styl initialStyle = GetWindowLong(this.Handle, -20); // povolime Click through SetWindowLong(this.Handle, -20, initialStyle | 0x80000 | 0x20); } private void notifyIcon1_DoubleClick(object sender, EventArgs e) { if (visible) { Hide(); visible = false; showToolStripMenuItem.Text = "Show"; } else { Show(); visible = true; showToolStripMenuItem.Text = "Hide"; } } private void showToolStripMenuItem_Click(object sender, EventArgs e) { switch (showToolStripMenuItem.Text) { case "Show": Show(); visible = true; showToolStripMenuItem.Text = "Hide"; break; case "Hide": Hide(); visible = false; showToolStripMenuItem.Text = "Show"; break; } } private void onTopToolStripMenuItem_Click(object sender, EventArgs e) { TopMost = onTopToolStripMenuItem.Checked; forcedOnTopToolStripMenuItem.Enabled = onTopToolStripMenuItem.Checked; } private void fullscreenToolStripMenuItem_Click(object sender, EventArgs e) { if (fullscreen) { WindowState = FormWindowState.Normal; FormBorderStyle = System.Windows.Forms.FormBorderStyle.Sizable; if (clickThroughToolStripMenuItem.Checked) SetWindowLong(this.Handle, -20, initialStyle | 0x80000 | 0x20); fullscreen = false; } else { WindowState = FormWindowState.Maximized; FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; if (clickThroughToolStripMenuItem.Checked) SetWindowLong(this.Handle, -20, initialStyle | 0x80000 | 0x20); fullscreen = true; } } private void toolStripMenuItem2_Click(object sender, EventArgs e) { Opacity = 0.9; uncheck(toolStripMenuItem2, brightnessToolStripMenuItem.DropDownItems); } private void toolStripMenuItem3_Click(object sender, EventArgs e) { Opacity = 0.8; uncheck(toolStripMenuItem3, brightnessToolStripMenuItem.DropDownItems); } private void toolStripMenuItem4_Click(object sender, EventArgs e) { Opacity = 0.7; uncheck(toolStripMenuItem4, brightnessToolStripMenuItem.DropDownItems); } private void toolStripMenuItem5_Click(object sender, EventArgs e) { Opacity = 0.6; uncheck(toolStripMenuItem5, brightnessToolStripMenuItem.DropDownItems); } private void toolStripMenuItem6_Click(object sender, EventArgs e) { Opacity = 0.5; uncheck(toolStripMenuItem6, brightnessToolStripMenuItem.DropDownItems); } private void toolStripMenuItem7_Click(object sender, EventArgs e) { Opacity = 0.4; uncheck(toolStripMenuItem7, brightnessToolStripMenuItem.DropDownItems); } private void toolStripMenuItem8_Click(object sender, EventArgs e) { Opacity = 0.3; uncheck(toolStripMenuItem8, brightnessToolStripMenuItem.DropDownItems); } private void toolStripMenuItem9_Click(object sender, EventArgs e) { Opacity = 0.2; uncheck(toolStripMenuItem9, brightnessToolStripMenuItem.DropDownItems); } private void toolStripMenuItem10_Click(object sender, EventArgs e) { Opacity = 0.1; uncheck(toolStripMenuItem10, brightnessToolStripMenuItem.DropDownItems); } private void uncheck(ToolStripMenuItem exclude, ToolStripItemCollection where) { foreach (ToolStripMenuItem item in where) { if (item != exclude) item.Checked = false; else item.Checked = true; } } private void toolStripTextBox1_TextChanged(object sender, EventArgs e) // zo stringu precita pocet percent a nastavi priehladnost { if (toolStripTextBox1.Text.Length != 0) { if (toolStripTextBox1.Text.Contains("%")) toolStripTextBox1.Text.Replace("%", ""); try { Opacity = Convert.ToDouble(toolStripTextBox1.Text) / 100; uncheck(otherToolStripMenuItem, brightnessToolStripMenuItem.DropDownItems); } catch {} if (!toolStripTextBox1.Text.Contains(",")) toolStripTextBox1.Text = (Opacity * 100).ToString(); } else toolStripTextBox1.Text = (Opacity * 100).ToString(); } private void timer1_Tick(object sender, EventArgs e) { // Program si nastavi kazdych 15ms, aby bol na vrchu (aby prekryl aj kontextove menu atd) if (visible) TopMost = true; } private void forcedOnTopToolStripMenuItem_Click(object sender, EventArgs e) { timer1.Enabled = forcedOnTopToolStripMenuItem.Checked; } private void clickThroughToolStripMenuItem_Click(object sender, EventArgs e) { if (clickThroughToolStripMenuItem.Checked) { // zapnutie Click through SetWindowLong(this.Handle, -20, initialStyle | 0x80000 | 0x20); } else { // nastavenim stylu okraja aplikacie sa Click through vypne if (fullscreenToolStripMenuItem.Checked) FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; else FormBorderStyle = System.Windows.Forms.FormBorderStyle.Sizable; } } private void changeColorToolStripMenuItem_Click(object sender, EventArgs e) { // zmena farby (defaultna je cierna) colorDialog1.ShowDialog(); BackColor = colorDialog1.Color; } } }
Poznámka: Kód nie je kompletný, pre lepší prehľad som z neho vymazal "omáčky", ktoré ale neovplyvňujú hlavnú funkcionalitu programu.
Kompletný program si môžte stiahnuť v odkaze nižšie.