mirror of
https://github.com/flashwave/topmostfriend.git
synced 2024-06-02 21:40:12 +00:00
v1.3.0 - 2020-01-12
This commit is contained in:
parent
c4da744a1f
commit
6633f72dd7
|
@ -34,6 +34,8 @@ namespace TopMostFriend {
|
||||||
public const string LIST_BACKGROUND_PATH_SETTING = @"ListBackgroundPath";
|
public const string LIST_BACKGROUND_PATH_SETTING = @"ListBackgroundPath";
|
||||||
public const string LIST_BACKGROUND_LAYOUT_SETTING = @"ListBackgroundLayout";
|
public const string LIST_BACKGROUND_LAYOUT_SETTING = @"ListBackgroundLayout";
|
||||||
public const string ALWAYS_ADMIN_SETTING = @"RunAsAdministrator";
|
public const string ALWAYS_ADMIN_SETTING = @"RunAsAdministrator";
|
||||||
|
public const string TOGGLE_BALLOON_SETTING = @"ShowNotificationOnHotKey";
|
||||||
|
public static readonly bool ToggleBalloonDefault = Environment.OSVersion.Version.Major < 10;
|
||||||
|
|
||||||
[STAThread]
|
[STAThread]
|
||||||
public static void Main(string[] args) {
|
public static void Main(string[] args) {
|
||||||
|
@ -60,6 +62,9 @@ namespace TopMostFriend {
|
||||||
|
|
||||||
Settings.SetDefault(FOREGROUND_HOTKEY_SETTING, 0);
|
Settings.SetDefault(FOREGROUND_HOTKEY_SETTING, 0);
|
||||||
Settings.SetDefault(ALWAYS_ADMIN_SETTING, false);
|
Settings.SetDefault(ALWAYS_ADMIN_SETTING, false);
|
||||||
|
// Defaulting to false on Windows 10 because it uses the stupid, annoying and intrusive new Android style notification system
|
||||||
|
// This would fucking piledrive the notification history and also just be annoying in general because intrusive
|
||||||
|
Settings.SetDefault(TOGGLE_BALLOON_SETTING, ToggleBalloonDefault);
|
||||||
|
|
||||||
if (Settings.Get<bool>(ALWAYS_ADMIN_SETTING) && !IsElevated()) {
|
if (Settings.Get<bool>(ALWAYS_ADMIN_SETTING) && !IsElevated()) {
|
||||||
Elevate();
|
Elevate();
|
||||||
|
@ -205,7 +210,7 @@ namespace TopMostFriend {
|
||||||
return (flags.ToInt32() & Win32.WS_EX_TOPMOST) > 0;
|
return (flags.ToInt32() & Win32.WS_EX_TOPMOST) > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void SetTopMost(IntPtr hWnd, bool state) {
|
public static bool SetTopMost(IntPtr hWnd, bool state) {
|
||||||
Win32.SetWindowPos(
|
Win32.SetWindowPos(
|
||||||
hWnd, new IntPtr(state ? Win32.HWND_TOPMOST : Win32.HWND_NOTOPMOST),
|
hWnd, new IntPtr(state ? Win32.HWND_TOPMOST : Win32.HWND_NOTOPMOST),
|
||||||
0, 0, 0, 0, Win32.SWP_NOMOVE | Win32.SWP_NOSIZE | Win32.SWP_SHOWWINDOW
|
0, 0, 0, 0, Win32.SWP_NOMOVE | Win32.SWP_NOSIZE | Win32.SWP_SHOWWINDOW
|
||||||
|
@ -225,19 +230,34 @@ namespace TopMostFriend {
|
||||||
|
|
||||||
if (result == DialogResult.Yes)
|
if (result == DialogResult.Yes)
|
||||||
Elevate($@"--hwnd={hWnd}");
|
Elevate($@"--hwnd={hWnd}");
|
||||||
return;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (state)
|
if (state)
|
||||||
Win32.SwitchToThisWindow(hWnd, false);
|
Win32.SwitchToThisWindow(hWnd, false);
|
||||||
|
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void ToggleForegroundWindow() {
|
public static void ToggleForegroundWindow() {
|
||||||
ToggleWindow(Win32.GetForegroundWindow());
|
IntPtr hWnd = Win32.GetForegroundWindow();
|
||||||
|
|
||||||
|
if (ToggleWindow(hWnd)) {
|
||||||
|
if (Settings.Get(TOGGLE_BALLOON_SETTING, false)) {
|
||||||
|
string title = Win32.GetWindowTextString(hWnd);
|
||||||
|
|
||||||
|
SysIcon.ShowBalloonTip(
|
||||||
|
500,
|
||||||
|
IsTopMost(hWnd) ? @"Always on top" : @"No longer always on top",
|
||||||
|
string.IsNullOrEmpty(title) ? @"Window has no title." : title,
|
||||||
|
ToolTipIcon.Info
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void ToggleWindow(IntPtr hWnd) {
|
public static bool ToggleWindow(IntPtr hWnd) {
|
||||||
SetTopMost(hWnd, !IsTopMost(hWnd));
|
return SetTopMost(hWnd, !IsTopMost(hWnd));
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Icon GetWindowIcon(IntPtr hWnd) {
|
private static Icon GetWindowIcon(IntPtr hWnd) {
|
||||||
|
@ -291,9 +311,6 @@ namespace TopMostFriend {
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void SysIcon_MouseDown(object sender, MouseEventArgs e) {
|
private static void SysIcon_MouseDown(object sender, MouseEventArgs e) {
|
||||||
if (e.Button.HasFlag(MouseButtons.Left))
|
|
||||||
ToggleForegroundWindow();
|
|
||||||
|
|
||||||
if (e.Button.HasFlag(MouseButtons.Right))
|
if (e.Button.HasFlag(MouseButtons.Right))
|
||||||
RefreshWindowList();
|
RefreshWindowList();
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,7 +9,7 @@ using System.Runtime.InteropServices;
|
||||||
[assembly: AssemblyDescription("Provides a dingus that lets you make anything topmost.")]
|
[assembly: AssemblyDescription("Provides a dingus that lets you make anything topmost.")]
|
||||||
[assembly: AssemblyConfiguration("")]
|
[assembly: AssemblyConfiguration("")]
|
||||||
[assembly: AssemblyCompany("flashwave")]
|
[assembly: AssemblyCompany("flashwave")]
|
||||||
[assembly: AssemblyProduct("TopMostFriend.Properties")]
|
[assembly: AssemblyProduct("TopMostFriend")]
|
||||||
[assembly: AssemblyCopyright("flashwave 2020")]
|
[assembly: AssemblyCopyright("flashwave 2020")]
|
||||||
[assembly: AssemblyTrademark("")]
|
[assembly: AssemblyTrademark("")]
|
||||||
[assembly: AssemblyCulture("")]
|
[assembly: AssemblyCulture("")]
|
||||||
|
@ -29,5 +29,5 @@ using System.Runtime.InteropServices;
|
||||||
// Build Number
|
// Build Number
|
||||||
// Revision
|
// Revision
|
||||||
//
|
//
|
||||||
[assembly: AssemblyVersion("1.2.0.0")]
|
[assembly: AssemblyVersion("1.3.0.0")]
|
||||||
[assembly: AssemblyFileVersion("1.2.0.0")]
|
[assembly: AssemblyFileVersion("1.3.0.0")]
|
||||||
|
|
|
@ -1,9 +1,5 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
using System.Linq;
|
|
||||||
using System.Runtime.InteropServices;
|
|
||||||
using System.Text;
|
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
|
|
||||||
namespace TopMostFriend {
|
namespace TopMostFriend {
|
||||||
|
@ -28,6 +24,7 @@ namespace TopMostFriend {
|
||||||
public readonly CheckBox FgModShift;
|
public readonly CheckBox FgModShift;
|
||||||
|
|
||||||
public readonly CheckBox FlAlwaysAdmin;
|
public readonly CheckBox FlAlwaysAdmin;
|
||||||
|
public readonly CheckBox FlToggleNotification;
|
||||||
|
|
||||||
public SettingsWindow() {
|
public SettingsWindow() {
|
||||||
Text = @"Top Most Friend Settings";
|
Text = @"Top Most Friend Settings";
|
||||||
|
@ -35,7 +32,7 @@ namespace TopMostFriend {
|
||||||
StartPosition = FormStartPosition.CenterScreen;
|
StartPosition = FormStartPosition.CenterScreen;
|
||||||
FormBorderStyle = FormBorderStyle.FixedSingle;
|
FormBorderStyle = FormBorderStyle.FixedSingle;
|
||||||
AutoScaleMode = AutoScaleMode.Dpi;
|
AutoScaleMode = AutoScaleMode.Dpi;
|
||||||
ClientSize = new Size(410, 163);
|
ClientSize = new Size(410, 183);
|
||||||
MinimizeBox = MaximizeBox = false;
|
MinimizeBox = MaximizeBox = false;
|
||||||
MinimumSize = MaximumSize = Size;
|
MinimumSize = MaximumSize = Size;
|
||||||
|
|
||||||
|
@ -72,7 +69,7 @@ namespace TopMostFriend {
|
||||||
GroupBox flagsGroup = new GroupBox {
|
GroupBox flagsGroup = new GroupBox {
|
||||||
Text = @"Flags",
|
Text = @"Flags",
|
||||||
Location = new Point(6, 76),
|
Location = new Point(6, 76),
|
||||||
Size = new Size(Width - 18, 50),
|
Size = new Size(Width - 18, 70),
|
||||||
};
|
};
|
||||||
|
|
||||||
Controls.AddRange(new Control[] {
|
Controls.AddRange(new Control[] {
|
||||||
|
@ -140,8 +137,14 @@ namespace TopMostFriend {
|
||||||
Checked = Settings.Get(Program.ALWAYS_ADMIN_SETTING, false),
|
Checked = Settings.Get(Program.ALWAYS_ADMIN_SETTING, false),
|
||||||
AutoSize = true,
|
AutoSize = true,
|
||||||
};
|
};
|
||||||
|
FlToggleNotification = new CheckBox {
|
||||||
|
Text = @"Show notification when using toggle hotkey",
|
||||||
|
Location = new Point(10, 40),
|
||||||
|
Checked = Settings.Get(Program.TOGGLE_BALLOON_SETTING, Program.ToggleBalloonDefault),
|
||||||
|
AutoSize = true,
|
||||||
|
};
|
||||||
|
|
||||||
flagsGroup.Controls.Add(FlAlwaysAdmin);
|
flagsGroup.Controls.AddRange(new[] { FlAlwaysAdmin, FlToggleNotification });
|
||||||
}
|
}
|
||||||
|
|
||||||
private void FgReset_Click(object sender, EventArgs e) {
|
private void FgReset_Click(object sender, EventArgs e) {
|
||||||
|
|
Loading…
Reference in a new issue