diff --git a/DS4Control/Control.cs b/DS4Control/Control.cs index f563109..adb194e 100644 --- a/DS4Control/Control.cs +++ b/DS4Control/Control.cs @@ -356,6 +356,7 @@ namespace DS4Control return "None"; } + private int XINPUT_UNPLUG_SETTLE_TIME = 250; // Inhibit races that occur with the asynchronous teardown of ScpVBus -> X360 driver instance. //Called when DS4 is disconnected or timed out protected virtual void On_DS4Removal(object sender, EventArgs e) @@ -403,7 +404,7 @@ namespace DS4Control if (Global.getHasCustomKeysorButtons(ind)) { - Mapping.MapCustom(ind, cState, MappedState[ind], pState); + Mapping.MapCustom(ind, cState, MappedState[ind]); cState = MappedState[ind]; } @@ -411,7 +412,7 @@ namespace DS4Control DS4LightBar.updateLightBar(device, ind); //DS4LightBar.defualtLight(device, ind); - x360Bus.Parse(cState, processingData[ind].Report, ind); + x360Bus.Parse(MappedState[ind], processingData[ind].Report, ind); // We push the translated Xinput state, and simultaneously we // pull back any possible rumble data coming from Xinput consumers. if (x360Bus.Report(processingData[ind].Report, processingData[ind].Rumble)) @@ -570,5 +571,10 @@ namespace DS4Control { return CurrentState[ind]; } + public DS4State getDS4StateMapped(int ind) + { + return MappedState[ind]; + } + } } diff --git a/DS4Control/DS4Control.csproj b/DS4Control/DS4Control.csproj index 46897b4..6dcf0f5 100644 --- a/DS4Control/DS4Control.csproj +++ b/DS4Control/DS4Control.csproj @@ -9,8 +9,9 @@ Properties DS4Control DS4Control - v4.0 + v4.5 512 + true @@ -20,6 +21,7 @@ DEBUG;TRACE prompt 4 + false pdbonly @@ -28,6 +30,7 @@ TRACE prompt 4 + false diff --git a/DS4Control/Mapping.cs b/DS4Control/Mapping.cs index 2ec6b46..3f60a55 100644 --- a/DS4Control/Mapping.cs +++ b/DS4Control/Mapping.cs @@ -3,6 +3,8 @@ using System.Collections.Generic; using System.Linq; using System.Text; using DS4Library; +using System.Threading.Tasks; +using System.Windows.Forms; namespace DS4Control { public class Mapping @@ -286,8 +288,8 @@ namespace DS4Control SyntheticState deviceState = Mapping.deviceState[device]; string macro = Global.getCustomMacro(device, what); if (macro != "0") - { - DS4KeyType keyType = Global.getCustomKeyType(device, what); + { + /*DS4KeyType keyType = Global.getCustomKeyType(device, what); SyntheticState.KeyPresses kp; string[] skeys = macro.Split('/'); ushort[] keys = new ushort[skeys.Length]; @@ -306,7 +308,7 @@ namespace DS4Control else kp.current.vkCount++; kp.current.repeatCount++; - } + }*/ } else if (Global.getCustomKey(device, what) != 0) { @@ -439,39 +441,135 @@ namespace DS4Control } } } - public static bool[] pressedonce = new bool[261]; + + public static int DS4ControltoInt(DS4Controls ctrl) + { + switch (ctrl) + { + case DS4Controls.Share: return 1; + case DS4Controls.Options: return 2; + case DS4Controls.L1: return 3; + case DS4Controls.R1: return 4; + case DS4Controls.L3: return 5; + case DS4Controls.R3: return 6; + case DS4Controls.DpadUp: return 7; + case DS4Controls.DpadDown: return 8; + case DS4Controls.DpadLeft: return 9; + case DS4Controls.DpadRight: return 10; + case DS4Controls.PS: return 11; + case DS4Controls.Cross: return 12; + case DS4Controls.Square: return 13; + case DS4Controls.Triangle: return 14; + case DS4Controls.Circle: return 15; + case DS4Controls.LXNeg: return 16; + case DS4Controls.LYNeg: return 17; + case DS4Controls.RXNeg: return 18; + case DS4Controls.RYNeg: return 19; + case DS4Controls.LXPos: return 20; + case DS4Controls.LYPos: return 21; + case DS4Controls.RXPos: return 22; + case DS4Controls.RYPos: return 23; + case DS4Controls.L2: return 24; + case DS4Controls.R2: return 25; + case DS4Controls.TouchMulti: return 26; + case DS4Controls.TouchLeft: return 27; + case DS4Controls.TouchRight: return 28; + case DS4Controls.TouchUpper: return 29; + } + return 0; + } + public static bool[] pressedonce = new bool[261], macrodone = new bool[30]; public static int test = 0; /** Map DS4 Buttons/Axes to other DS4 Buttons/Axes (largely the same as Xinput ones) and to keyboard and mouse buttons. */ - public static void MapCustom(int device, DS4State cState, DS4State MappedState, DS4State pState = null) + public static async void MapCustom(int device, DS4State cState, DS4State MappedState) { cState.CopyTo(MappedState); SyntheticState deviceState = Mapping.deviceState[device]; - foreach (KeyValuePair customKey in Global.getCustomMacros(device)) + foreach (KeyValuePair customKey in Global.getCustomMacros(device)) //with delays { DS4KeyType keyType = Global.getCustomKeyType(device, customKey.Key); if (getBoolMapping(customKey.Key, cState)) { + resetToDefaultValue(customKey.Key, MappedState); string[] skeys = customKey.Value.Split('/'); ushort[] keys = new ushort[skeys.Length]; for (int i = 0; i < keys.Length; i++) - { keys[i] = ushort.Parse(skeys[i]); - if (keys[i] == 256) deviceState.currentClicks.leftCount++; //anything above 255 is not a keyvalue - if (keys[i] == 257) deviceState.currentClicks.rightCount++; - if (keys[i] == 258) deviceState.currentClicks.middleCount++; - if (keys[i] == 259) deviceState.currentClicks.fourthCount++; - if (keys[i] == 260) deviceState.currentClicks.fifthCount++; - SyntheticState.KeyPresses kp; - if (!deviceState.keyPresses.TryGetValue(keys[i], out kp)) - deviceState.keyPresses[keys[i]] = kp = new SyntheticState.KeyPresses(); - if (keyType.HasFlag(DS4KeyType.ScanCode)) - kp.current.scanCodeCount++; - else - kp.current.vkCount++; - kp.current.repeatCount++; + bool timedmacro = false; + for (int i = 0; i < keys.Length; i++) + if (keys[i] > 300) + { + timedmacro = true; + break; + } + if (timedmacro && !macrodone[DS4ControltoInt(customKey.Key)]) + { + macrodone[DS4ControltoInt(customKey.Key)] = true; + for (int i = 0; i < keys.Length; i++) + { + if (keys[i] > 300) //ints over 300 used to delay + await Task.Delay(keys[i] - 300); + else if (keys[i] == 256) InputMethods.MouseEvent(InputMethods.MOUSEEVENTF_LEFTDOWN); //anything above 255 is not a keyvalue + else if (keys[i] == 257) InputMethods.MouseEvent(InputMethods.MOUSEEVENTF_RIGHTDOWN); + else if (keys[i] == 258) InputMethods.MouseEvent(InputMethods.MOUSEEVENTF_MIDDLEDOWN); + else if (keys[i] == 259) InputMethods.MouseEvent(InputMethods.MOUSEEVENTF_XBUTTONDOWN, 1); + else if (keys[i] == 260) InputMethods.MouseEvent(InputMethods.MOUSEEVENTF_XBUTTONDOWN, 2); + else + InputMethods.performKeyPress(keys[i]); + } + for (int i = keys.Length - 1; i >= 0; i--) + { + if (keys[i] == 256) InputMethods.MouseEvent(InputMethods.MOUSEEVENTF_LEFTUP); //anything above 255 is not a keyvalue + else if (keys[i] == 257) InputMethods.MouseEvent(InputMethods.MOUSEEVENTF_RIGHTUP); + else if (keys[i] == 258) InputMethods.MouseEvent(InputMethods.MOUSEEVENTF_MIDDLEUP); + else if (keys[i] == 259) InputMethods.MouseEvent(InputMethods.MOUSEEVENTF_XBUTTONUP, 1); + else if (keys[i] == 260) InputMethods.MouseEvent(InputMethods.MOUSEEVENTF_XBUTTONUP, 2); + else if (keys[i] < 300) + InputMethods.performKeyRelease(keys[i]); + } + } + else if (!timedmacro) + { + for (int i = 0; i < keys.Length; i++) + { + if (i > 0 && keys[i - 1] > 300) + { + if (keys[i] == 256) deviceState.currentClicks.leftCount++; //anything above 255 is not a keyvalue + if (keys[i] == 257) deviceState.currentClicks.rightCount++; + if (keys[i] == 258) deviceState.currentClicks.middleCount++; + if (keys[i] == 259) deviceState.currentClicks.fourthCount++; + if (keys[i] == 260) deviceState.currentClicks.fifthCount++; + SyntheticState.KeyPresses kp; + if (!deviceState.keyPresses.TryGetValue(keys[i], out kp)) + deviceState.keyPresses[keys[i]] = kp = new SyntheticState.KeyPresses(); + if (keyType.HasFlag(DS4KeyType.ScanCode)) + kp.current.scanCodeCount++; + else + kp.current.vkCount++; + kp.current.repeatCount++; + } + else if (keys[i] < 261) + { + if (keys[i] == 256) deviceState.currentClicks.leftCount++; //anything above 255 is not a keyvalue + if (keys[i] == 257) deviceState.currentClicks.rightCount++; + if (keys[i] == 258) deviceState.currentClicks.middleCount++; + if (keys[i] == 259) deviceState.currentClicks.fourthCount++; + if (keys[i] == 260) deviceState.currentClicks.fifthCount++; + SyntheticState.KeyPresses kp; + if (!deviceState.keyPresses.TryGetValue(keys[i], out kp)) + deviceState.keyPresses[keys[i]] = kp = new SyntheticState.KeyPresses(); + if (keyType.HasFlag(DS4KeyType.ScanCode)) + kp.current.scanCodeCount++; + else + kp.current.vkCount++; + kp.current.repeatCount++; + } + } } } + else if (!getBoolMapping(customKey.Key, cState)) + macrodone[DS4ControltoInt(customKey.Key)] = false; } foreach (KeyValuePair customKey in Global.getCustomKeys(device)) { @@ -502,7 +600,7 @@ namespace DS4Control } - bool LX = false, LY = false, RX = false, RY = false; + bool LX = false, LY = false, RX = false, RY = false, L2 = false, R2 = false; MappedState.LX = 127; MappedState.LY = 127; MappedState.RX = 127; @@ -668,11 +766,19 @@ namespace DS4Control break; case X360Controls.LT: if (MappedState.L2 == 0) + { MappedState.L2 = getByteMapping(customButton.Key, cState); + L2 = true; + } break; case X360Controls.RT: - if (MappedState.R2 == 0) + if (MappedState.L2 == 0 && MappedState.R2 == 0) + { MappedState.R2 = getByteMapping(customButton.Key, cState); + //if (MappedState.R2 == 255) + //MessageBox.Show("225"); + R2 = true; + } break; case X360Controls.LeftMouse: if (getBoolMapping(customButton.Key, cState)) @@ -705,28 +811,28 @@ namespace DS4Control case X360Controls.MouseUp: if (MouseDeltaY == 0) { - MouseDeltaY = getMouseMapping(device, customButton.Key, cState, pState, 0); + MouseDeltaY = getMouseMapping(device, customButton.Key, cState, 0); MouseDeltaY = -Math.Abs((MouseDeltaY == -2147483648 ? 0 : MouseDeltaY)); } break; case X360Controls.MouseDown: if (MouseDeltaY == 0) { - MouseDeltaY = getMouseMapping(device, customButton.Key, cState, pState, 1); + MouseDeltaY = getMouseMapping(device, customButton.Key, cState, 1); MouseDeltaY = Math.Abs((MouseDeltaY == -2147483648 ? 0 : MouseDeltaY)); } break; case X360Controls.MouseLeft: if (MouseDeltaX == 0) { - MouseDeltaX = getMouseMapping(device, customButton.Key, cState, pState, 2); + MouseDeltaX = getMouseMapping(device, customButton.Key, cState, 2); MouseDeltaX = -Math.Abs((MouseDeltaX == -2147483648 ? 0 : MouseDeltaX)); } break; case X360Controls.MouseRight: if (MouseDeltaX == 0) { - MouseDeltaX = getMouseMapping(device, customButton.Key, cState, pState, 3); + MouseDeltaX = getMouseMapping(device, customButton.Key, cState, 3); MouseDeltaX = Math.Abs((MouseDeltaX == -2147483648 ? 0 : MouseDeltaX)); } break; @@ -741,11 +847,15 @@ namespace DS4Control MappedState.RX = cState.RX; if (!RY) MappedState.RY = cState.RY; + /*if (!L2) + MappedState.L2 = cState.L2; + if (!R2) + MappedState.R2 = cState.R2;//*/ InputMethods.MoveCursorBy(MouseDeltaX, MouseDeltaY); } public static DateTime[] mousenow = { DateTime.UtcNow, DateTime.UtcNow, DateTime.UtcNow, DateTime.UtcNow }; public static double mvalue = 0; - private static int getMouseMapping(int device, DS4Controls control, DS4State cState, DS4State pState, int mnum) + private static int getMouseMapping(int device, DS4Controls control, DS4State cState, int mnum) { int deadzone = 10; diff --git a/DS4Control/ScpUtil.cs b/DS4Control/ScpUtil.cs index 39835d9..224d4ad 100644 --- a/DS4Control/ScpUtil.cs +++ b/DS4Control/ScpUtil.cs @@ -81,8 +81,17 @@ namespace DS4Control { protected static BackingStore m_Config = new BackingStore(); protected static Int32 m_IdleTimeout = 600000; - //public static string appdatapath = Directory.GetParent(Assembly.GetExecutingAssembly().Location).FullName; - public static string appdatapath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\DS4Tool"; + static string exepath = Directory.GetParent(Assembly.GetExecutingAssembly().Location).FullName; + public static string appdatapath; + + public static void SaveWhere() + { + if (!exepath.StartsWith("C:\\Program Files") && !exepath.StartsWith("C:\\Windows")) + appdatapath = Directory.GetParent(Assembly.GetExecutingAssembly().Location).FullName; + else + appdatapath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\DS4Tool"; + m_Config.m_Profile = appdatapath + "\\Profiles.xml"; + } public static event EventHandler ControllerStatusChange; // called when a controller is added/removed/battery or touchpad mode changes/etc. public static void ControllerStatusChanged(object sender) { @@ -534,7 +543,8 @@ namespace DS4Control public class BackingStore { - protected String m_Profile = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\DS4Tool" + "\\Profiles.xml"; + //public String m_Profile = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\DS4Tool" + "\\Profiles.xml"; + public String m_Profile = Directory.GetParent(Assembly.GetExecutingAssembly().Location).FullName + "\\Profiles.xml"; protected XmlDocument m_Xdoc = new XmlDocument(); //fifth value used to for options, not fifth controller public int[] buttonMouseSensitivity = { 25, 25, 25, 25, 25 }; @@ -972,6 +982,7 @@ namespace DS4Control else if (keys[i] == 258) splitter[i] = "Middle Mouse Button"; else if (keys[i] == 259) splitter[i] = "4th Mouse Button"; else if (keys[i] == 260) splitter[i] = "5th Mouse Button"; + else if (keys[i] > 300) splitter[i] = "Wait " + (keys[i] - 300) + "ms"; } button.Text = string.Join(", ", splitter); button.Tag = keys; diff --git a/DS4Library/DS4Library.csproj b/DS4Library/DS4Library.csproj index 3c6074e..157489c 100644 --- a/DS4Library/DS4Library.csproj +++ b/DS4Library/DS4Library.csproj @@ -9,8 +9,9 @@ Properties DS4Library DS4Library - v4.0 + v4.5 512 + true @@ -20,6 +21,7 @@ DEBUG;TRACE prompt 4 + false pdbonly @@ -29,6 +31,7 @@ prompt 4 AllRules.ruleset + false diff --git a/DS4Service/DS4Service.csproj b/DS4Service/DS4Service.csproj index fe489fa..d1c4aa0 100644 --- a/DS4Service/DS4Service.csproj +++ b/DS4Service/DS4Service.csproj @@ -9,8 +9,9 @@ Properties DS4Service DS4Service - v4.0 + v4.5 512 + AnyCPU @@ -21,6 +22,7 @@ DEBUG;TRACE prompt 4 + false AnyCPU @@ -30,6 +32,7 @@ TRACE prompt 4 + false @@ -73,6 +76,9 @@ ProjectInstaller.cs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/DS4Tool/DS4Tool.csproj b/DS4Tool/DS4Tool.csproj index 515976b..827e7b0 100644 --- a/DS4Tool/DS4Tool.csproj +++ b/DS4Tool/DS4Tool.csproj @@ -90,6 +90,12 @@ + + Form + + + Alreadyrunning.cs + Form @@ -145,6 +151,9 @@ WinProgs.cs + + Alreadyrunning.cs + Hotkeys.cs diff --git a/DS4Tool/KBM360.Designer.cs b/DS4Tool/KBM360.Designer.cs index 95c4f6a..db9a425 100644 --- a/DS4Tool/KBM360.Designer.cs +++ b/DS4Tool/KBM360.Designer.cs @@ -184,8 +184,14 @@ this.KBMlabel = new System.Windows.Forms.Label(); this.cBMacro = new System.Windows.Forms.CheckBox(); this.lBMacroOrder = new System.Windows.Forms.Label(); + this.pnLDelay = new System.Windows.Forms.Panel(); + this.lBDelay = new System.Windows.Forms.Label(); + this.nUDDelay = new System.Windows.Forms.NumericUpDown(); + this.lBms = new System.Windows.Forms.Label(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); + this.pnLDelay.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.nUDDelay)).BeginInit(); this.SuspendLayout(); // // lBTip @@ -1720,7 +1726,7 @@ // X360Label // this.X360Label.AutoSize = true; - this.X360Label.Location = new System.Drawing.Point(394, 210); + this.X360Label.Location = new System.Drawing.Point(393, 202); this.X360Label.Name = "X360Label"; this.X360Label.Size = new System.Drawing.Size(73, 13); this.X360Label.TabIndex = 318; @@ -1757,11 +1763,54 @@ this.lBMacroOrder.Text = "Macro Order: "; this.lBMacroOrder.Visible = false; // + // pnLDelay + // + this.pnLDelay.Controls.Add(this.nUDDelay); + this.pnLDelay.Controls.Add(this.lBms); + this.pnLDelay.Controls.Add(this.lBDelay); + this.pnLDelay.Location = new System.Drawing.Point(12, 200); + this.pnLDelay.Name = "pnLDelay"; + this.pnLDelay.Size = new System.Drawing.Size(183, 23); + this.pnLDelay.TabIndex = 320; + this.pnLDelay.Visible = false; + // + // lBDelay + // + this.lBDelay.AutoSize = true; + this.lBDelay.Location = new System.Drawing.Point(3, 2); + this.lBDelay.Name = "lBDelay"; + this.lBDelay.Size = new System.Drawing.Size(56, 13); + this.lBDelay.TabIndex = 0; + this.lBDelay.Text = "Add Delay"; + // + // nUDDelay + // + this.nUDDelay.Location = new System.Drawing.Point(65, 0); + this.nUDDelay.Maximum = new decimal(new int[] { + 60000, + 0, + 0, + 0}); + this.nUDDelay.Name = "nUDDelay"; + this.nUDDelay.Size = new System.Drawing.Size(77, 20); + this.nUDDelay.TabIndex = 1; + this.nUDDelay.ValueChanged += new System.EventHandler(this.nUDDelay_ValueChanged); + // + // lBms + // + this.lBms.AutoSize = true; + this.lBms.Location = new System.Drawing.Point(148, 2); + this.lBms.Name = "lBms"; + this.lBms.Size = new System.Drawing.Size(20, 13); + this.lBms.TabIndex = 0; + this.lBms.Text = "ms"; + // // KBM360 // this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; this.ClientSize = new System.Drawing.Size(854, 403); + this.Controls.Add(this.pnLDelay); this.Controls.Add(this.lBMacroOrder); this.Controls.Add(this.KBMlabel); this.Controls.Add(this.X360Label); @@ -1928,6 +1977,9 @@ this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.Key_Down_Action); ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); + this.pnLDelay.ResumeLayout(false); + this.pnLDelay.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.nUDDelay)).EndInit(); this.ResumeLayout(false); this.PerformLayout(); @@ -2091,6 +2143,10 @@ private System.Windows.Forms.Label KBMlabel; private System.Windows.Forms.CheckBox cBMacro; private System.Windows.Forms.Label lBMacroOrder; + private System.Windows.Forms.Panel pnLDelay; + private System.Windows.Forms.NumericUpDown nUDDelay; + private System.Windows.Forms.Label lBms; + private System.Windows.Forms.Label lBDelay; } } \ No newline at end of file diff --git a/DS4Tool/KBM360.cs b/DS4Tool/KBM360.cs index 1a11bfd..de9e40d 100644 --- a/DS4Tool/KBM360.cs +++ b/DS4Tool/KBM360.cs @@ -82,6 +82,11 @@ namespace ScpServer if (!bn.Font.Bold && bn.Tag.ToString() != "X360" && macrostag.Count < 5 && (bn.Text.Contains("Mouse") ^ !bn.Text.Contains("Button"))) //end is xor to remove mouse movement and wheel from macro { bn.Font = new Font(bn.Font, FontStyle.Bold); + if (nUDDelay.Value >= 1) + { + macros.Add("Wait " + (int)nUDDelay.Value + "ms"); + macrostag.Add(300 + (int)nUDDelay.Value); + } macros.Add(keyname); int value; if (int.TryParse(bn.Tag.ToString(), out value)) @@ -98,10 +103,18 @@ namespace ScpServer else if (bn.Tag.ToString() != "X360") { bn.Font = new Font(bn.Font, FontStyle.Regular); - macros.Remove(keyname); int value; if (int.TryParse(bn.Tag.ToString(), out value)) + { + int previ = macrostag.IndexOf(value) - 1; + if (previ > -1 && macrostag[previ] > 300) + { + macros.RemoveAt(previ); + macrostag.RemoveAt(previ); + } macrostag.Remove(value); + macros.Remove(keyname); + } else { if (bn.Text == "Left Mouse Button") macrostag.Remove(256); @@ -111,6 +124,11 @@ namespace ScpServer if (bn.Text == "5th Mouse Button") macrostag.Remove(260); } } + nUDDelay.Value = 0; + if (macrostag.Count >= 4) + pnLDelay.Enabled = false; + else + pnLDelay.Enabled = true; string macro = string.Join(", ", macros.ToArray()); lBMacroOrder.Text = "Macro Order: " + macro; } @@ -129,13 +147,17 @@ namespace ScpServer private void Key_Down_Action(object sender, KeyEventArgs e) { - ops.ChangeButtonText(e.KeyCode.ToString(), e.KeyValue); - this.Close(); + if (!cBMacro.Checked) + { + ops.ChangeButtonText(e.KeyCode.ToString(), e.KeyValue); + this.Close(); + } } private void cBMacro_CheckedChanged(object sender, EventArgs e) { lBMacroOrder.Visible = cBMacro.Checked; + pnLDelay.Visible = cBMacro.Checked; if (cBMacro.Checked) cbToggle.Checked = false; } @@ -146,5 +168,10 @@ namespace ScpServer cBMacro.Checked = false; } + private void nUDDelay_ValueChanged(object sender, EventArgs e) + { + + } + } } diff --git a/DS4Tool/Options.Designer.cs b/DS4Tool/Options.Designer.cs index f2916ea..d92ca50 100644 --- a/DS4Tool/Options.Designer.cs +++ b/DS4Tool/Options.Designer.cs @@ -700,7 +700,7 @@ this.pBSticks.Location = new System.Drawing.Point(0, 1); this.pBSticks.Name = "pBSticks"; this.pBSticks.Size = new System.Drawing.Size(245, 132); - this.pBSticks.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage; + this.pBSticks.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; this.pBSticks.TabIndex = 161; this.pBSticks.TabStop = false; // diff --git a/DS4Tool/Program.cs b/DS4Tool/Program.cs index df7bbca..0e5f85a 100644 --- a/DS4Tool/Program.cs +++ b/DS4Tool/Program.cs @@ -1,10 +1,21 @@ using System; using System.Windows.Forms; +using System.Threading; +using System.Runtime.InteropServices; +using System.Diagnostics; -namespace ScpServer + +namespace ScpServer { - static class Program + static class Program { + [DllImport("user32.dll")] + [return: MarshalAs(UnmanagedType.Bool)] + static extern bool SetForegroundWindow(IntPtr hWnd); + + [DllImport("user32.dll")] + private static extern IntPtr GetForegroundWindow(); + /// /// The main entry point for the application. /// @@ -20,9 +31,34 @@ namespace ScpServer { // Ignore problems raising the priority. } - Application.EnableVisualStyles(); - Application.SetCompatibleTextRenderingDefault(false); - Application.Run(new ScpForm()); + bool createdNew = true; + using (Mutex mutex = new Mutex(true, "MyApplicationName", out createdNew)) + { + if (createdNew) + { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new ScpForm()); + } + else + { + Process current = Process.GetCurrentProcess(); + foreach (Process process in Process.GetProcessesByName(current.ProcessName)) + { + if (process.Id != current.Id) + { + SetForegroundWindow(process.MainWindowHandle); + if (GetForegroundWindow() != process.MainWindowHandle) + { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new Alreadyrunning()); + } + break; + } + } + } + } } } } diff --git a/DS4Tool/ScpForm.Designer.cs b/DS4Tool/ScpForm.Designer.cs index 1ec39c6..aee0b61 100644 --- a/DS4Tool/ScpForm.Designer.cs +++ b/DS4Tool/ScpForm.Designer.cs @@ -120,8 +120,9 @@ this.linkProfiles = new System.Windows.Forms.LinkLabel(); this.lLBUpdate = new System.Windows.Forms.LinkLabel(); this.linkUninstall = new System.Windows.Forms.LinkLabel(); - this.saveProfiles = new System.Windows.Forms.SaveFileDialog(); this.lLSetup = new System.Windows.Forms.LinkLabel(); + this.saveProfiles = new System.Windows.Forms.SaveFileDialog(); + this.lLAppDataDelete = new System.Windows.Forms.LinkLabel(); this.pnlButton.SuspendLayout(); this.cMTaskbar.SuspendLayout(); this.tabMain.SuspendLayout(); @@ -179,6 +180,7 @@ this.pnlButton.Controls.Add(this.lBTest); this.pnlButton.Controls.Add(this.btnStartStop); this.pnlButton.Controls.Add(this.lbLastMessage); + this.pnlButton.Controls.Add(this.llbHelp); this.pnlButton.Dock = System.Windows.Forms.DockStyle.Bottom; this.pnlButton.Location = new System.Drawing.Point(0, 339); this.pnlButton.Name = "pnlButton"; @@ -189,7 +191,7 @@ // this.lBTest.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); this.lBTest.AutoSize = true; - this.lBTest.Location = new System.Drawing.Point(625, 9); + this.lBTest.Location = new System.Drawing.Point(291, 9); this.lBTest.Name = "lBTest"; this.lBTest.Size = new System.Drawing.Size(98, 13); this.lBTest.TabIndex = 46; @@ -214,14 +216,14 @@ this.lbLastMessage.ForeColor = System.Drawing.SystemColors.GrayText; this.lbLastMessage.Location = new System.Drawing.Point(4, 9); this.lbLastMessage.Name = "lbLastMessage"; - this.lbLastMessage.Size = new System.Drawing.Size(724, 18); + this.lbLastMessage.Size = new System.Drawing.Size(634, 18); this.lbLastMessage.TabIndex = 41; // // llbHelp // - this.llbHelp.Anchor = System.Windows.Forms.AnchorStyles.None; + this.llbHelp.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); this.llbHelp.AutoSize = true; - this.llbHelp.Location = new System.Drawing.Point(198, 30); + this.llbHelp.Location = new System.Drawing.Point(644, 9); this.llbHelp.Name = "llbHelp"; this.llbHelp.Size = new System.Drawing.Size(79, 13); this.llbHelp.TabIndex = 13; @@ -233,12 +235,12 @@ // this.lnkControllers.Anchor = System.Windows.Forms.AnchorStyles.None; this.lnkControllers.AutoSize = true; - this.lnkControllers.Location = new System.Drawing.Point(383, 30); + this.lnkControllers.Location = new System.Drawing.Point(269, 30); this.lnkControllers.Name = "lnkControllers"; - this.lnkControllers.Size = new System.Drawing.Size(122, 13); + this.lnkControllers.Size = new System.Drawing.Size(73, 13); this.lnkControllers.TabIndex = 11; this.lnkControllers.TabStop = true; - this.lnkControllers.Text = "Control Panel Controllers"; + this.lnkControllers.Text = "CP Controllers"; this.lnkControllers.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.lnkControllers_LinkClicked); // // StartWindowsCheckBox @@ -408,7 +410,7 @@ this.tLPControllers.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 23.34039F)); this.tLPControllers.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25.31077F)); this.tLPControllers.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 117F)); - this.tLPControllers.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 47F)); + this.tLPControllers.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 50F)); this.tLPControllers.Controls.Add(this.pBStatus1, 1, 1); this.tLPControllers.Controls.Add(this.lbPad1, 0, 1); this.tLPControllers.Controls.Add(this.lbPad2, 0, 2); @@ -450,7 +452,7 @@ this.pBStatus1.Anchor = System.Windows.Forms.AnchorStyles.None; this.pBStatus1.Image = ((System.Drawing.Image)(resources.GetObject("pBStatus1.Image"))); this.pBStatus1.InitialImage = global::ScpServer.Properties.Resources.BT; - this.pBStatus1.Location = new System.Drawing.Point(372, 19); + this.pBStatus1.Location = new System.Drawing.Point(369, 19); this.pBStatus1.Name = "pBStatus1"; this.pBStatus1.Size = new System.Drawing.Size(39, 20); this.pBStatus1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; @@ -482,7 +484,7 @@ // bnEditC3 // this.bnEditC3.Anchor = System.Windows.Forms.AnchorStyles.Left; - this.bnEditC3.Location = new System.Drawing.Point(741, 76); + this.bnEditC3.Location = new System.Drawing.Point(737, 76); this.bnEditC3.Name = "bnEditC3"; this.bnEditC3.Size = new System.Drawing.Size(40, 23); this.bnEditC3.TabIndex = 43; @@ -494,7 +496,7 @@ // bnEditC4 // this.bnEditC4.Anchor = System.Windows.Forms.AnchorStyles.Left; - this.bnEditC4.Location = new System.Drawing.Point(741, 105); + this.bnEditC4.Location = new System.Drawing.Point(737, 105); this.bnEditC4.Name = "bnEditC4"; this.bnEditC4.Size = new System.Drawing.Size(40, 23); this.bnEditC4.TabIndex = 43; @@ -530,7 +532,7 @@ this.cBController1.Anchor = System.Windows.Forms.AnchorStyles.Left; this.cBController1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.cBController1.FormattingEnabled = true; - this.cBController1.Location = new System.Drawing.Point(624, 19); + this.cBController1.Location = new System.Drawing.Point(620, 19); this.cBController1.Name = "cBController1"; this.cBController1.Size = new System.Drawing.Size(111, 21); this.cBController1.TabIndex = 42; @@ -540,7 +542,7 @@ // bnEditC2 // this.bnEditC2.Anchor = System.Windows.Forms.AnchorStyles.Left; - this.bnEditC2.Location = new System.Drawing.Point(741, 47); + this.bnEditC2.Location = new System.Drawing.Point(737, 47); this.bnEditC2.Name = "bnEditC2"; this.bnEditC2.Size = new System.Drawing.Size(40, 23); this.bnEditC2.TabIndex = 43; @@ -554,7 +556,7 @@ this.cBController2.Anchor = System.Windows.Forms.AnchorStyles.Left; this.cBController2.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.cBController2.FormattingEnabled = true; - this.cBController2.Location = new System.Drawing.Point(624, 48); + this.cBController2.Location = new System.Drawing.Point(620, 48); this.cBController2.Name = "cBController2"; this.cBController2.Size = new System.Drawing.Size(111, 21); this.cBController2.TabIndex = 42; @@ -566,7 +568,7 @@ this.cBController3.Anchor = System.Windows.Forms.AnchorStyles.Left; this.cBController3.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.cBController3.FormattingEnabled = true; - this.cBController3.Location = new System.Drawing.Point(624, 77); + this.cBController3.Location = new System.Drawing.Point(620, 77); this.cBController3.Name = "cBController3"; this.cBController3.Size = new System.Drawing.Size(111, 21); this.cBController3.TabIndex = 42; @@ -576,7 +578,7 @@ // bnEditC1 // this.bnEditC1.Anchor = System.Windows.Forms.AnchorStyles.Left; - this.bnEditC1.Location = new System.Drawing.Point(741, 18); + this.bnEditC1.Location = new System.Drawing.Point(737, 18); this.bnEditC1.Name = "bnEditC1"; this.bnEditC1.Size = new System.Drawing.Size(40, 23); this.bnEditC1.TabIndex = 43; @@ -590,7 +592,7 @@ this.cBController4.Anchor = System.Windows.Forms.AnchorStyles.Left; this.cBController4.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.cBController4.FormattingEnabled = true; - this.cBController4.Location = new System.Drawing.Point(624, 106); + this.cBController4.Location = new System.Drawing.Point(620, 106); this.cBController4.Name = "cBController4"; this.cBController4.Size = new System.Drawing.Size(111, 21); this.cBController4.TabIndex = 42; @@ -602,7 +604,7 @@ this.lBSelectedProfile.Anchor = System.Windows.Forms.AnchorStyles.None; this.lBSelectedProfile.AutoSize = true; this.lBSelectedProfile.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.lBSelectedProfile.Location = new System.Drawing.Point(625, 0); + this.lBSelectedProfile.Location = new System.Drawing.Point(621, 0); this.lBSelectedProfile.Name = "lBSelectedProfile"; this.lBSelectedProfile.Size = new System.Drawing.Size(109, 15); this.lBSelectedProfile.TabIndex = 45; @@ -624,7 +626,7 @@ this.lBStatus.Anchor = System.Windows.Forms.AnchorStyles.None; this.lBStatus.AutoSize = true; this.lBStatus.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.lBStatus.Location = new System.Drawing.Point(368, 0); + this.lBStatus.Location = new System.Drawing.Point(365, 0); this.lBStatus.Name = "lBStatus"; this.lBStatus.Size = new System.Drawing.Size(47, 15); this.lBStatus.TabIndex = 45; @@ -635,7 +637,7 @@ this.lBBattery.Anchor = System.Windows.Forms.AnchorStyles.None; this.lBBattery.AutoSize = true; this.lBBattery.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.lBBattery.Location = new System.Drawing.Point(517, 0); + this.lBBattery.Location = new System.Drawing.Point(513, 0); this.lBBattery.Name = "lBBattery"; this.lBBattery.Size = new System.Drawing.Size(51, 15); this.lBBattery.TabIndex = 45; @@ -646,7 +648,7 @@ this.lBBatt1.Anchor = System.Windows.Forms.AnchorStyles.None; this.lBBatt1.AutoSize = true; this.lBBatt1.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.lBBatt1.Location = new System.Drawing.Point(523, 22); + this.lBBatt1.Location = new System.Drawing.Point(519, 22); this.lBBatt1.Name = "lBBatt1"; this.lBBatt1.Size = new System.Drawing.Size(39, 15); this.lBBatt1.TabIndex = 44; @@ -657,7 +659,7 @@ this.lBBatt2.Anchor = System.Windows.Forms.AnchorStyles.None; this.lBBatt2.AutoSize = true; this.lBBatt2.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.lBBatt2.Location = new System.Drawing.Point(523, 51); + this.lBBatt2.Location = new System.Drawing.Point(519, 51); this.lBBatt2.Name = "lBBatt2"; this.lBBatt2.Size = new System.Drawing.Size(39, 15); this.lBBatt2.TabIndex = 44; @@ -668,7 +670,7 @@ this.lBBatt3.Anchor = System.Windows.Forms.AnchorStyles.None; this.lBBatt3.AutoSize = true; this.lBBatt3.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.lBBatt3.Location = new System.Drawing.Point(523, 80); + this.lBBatt3.Location = new System.Drawing.Point(519, 80); this.lBBatt3.Name = "lBBatt3"; this.lBBatt3.Size = new System.Drawing.Size(39, 15); this.lBBatt3.TabIndex = 44; @@ -679,7 +681,7 @@ this.lBBatt4.Anchor = System.Windows.Forms.AnchorStyles.None; this.lBBatt4.AutoSize = true; this.lBBatt4.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.lBBatt4.Location = new System.Drawing.Point(523, 109); + this.lBBatt4.Location = new System.Drawing.Point(519, 109); this.lBBatt4.Name = "lBBatt4"; this.lBBatt4.Size = new System.Drawing.Size(39, 15); this.lBBatt4.TabIndex = 44; @@ -690,7 +692,7 @@ this.pBStatus2.Anchor = System.Windows.Forms.AnchorStyles.None; this.pBStatus2.Image = ((System.Drawing.Image)(resources.GetObject("pBStatus2.Image"))); this.pBStatus2.InitialImage = global::ScpServer.Properties.Resources.BT; - this.pBStatus2.Location = new System.Drawing.Point(372, 48); + this.pBStatus2.Location = new System.Drawing.Point(369, 48); this.pBStatus2.Name = "pBStatus2"; this.pBStatus2.Size = new System.Drawing.Size(39, 20); this.pBStatus2.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; @@ -702,7 +704,7 @@ this.pBStatus3.Anchor = System.Windows.Forms.AnchorStyles.None; this.pBStatus3.Image = ((System.Drawing.Image)(resources.GetObject("pBStatus3.Image"))); this.pBStatus3.InitialImage = global::ScpServer.Properties.Resources.BT; - this.pBStatus3.Location = new System.Drawing.Point(372, 77); + this.pBStatus3.Location = new System.Drawing.Point(369, 77); this.pBStatus3.Name = "pBStatus3"; this.pBStatus3.Size = new System.Drawing.Size(39, 20); this.pBStatus3.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; @@ -714,7 +716,7 @@ this.pBStatus4.Anchor = System.Windows.Forms.AnchorStyles.None; this.pBStatus4.Image = ((System.Drawing.Image)(resources.GetObject("pBStatus4.Image"))); this.pBStatus4.InitialImage = global::ScpServer.Properties.Resources.BT; - this.pBStatus4.Location = new System.Drawing.Point(372, 106); + this.pBStatus4.Location = new System.Drawing.Point(369, 106); this.pBStatus4.Name = "pBStatus4"; this.pBStatus4.Size = new System.Drawing.Size(39, 20); this.pBStatus4.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; @@ -1011,12 +1013,12 @@ this.flowLayoutPanel1.Controls.Add(this.cBNotifications); this.flowLayoutPanel1.Controls.Add(this.cBUpdate); this.flowLayoutPanel1.Controls.Add(this.pNUpdate); - this.flowLayoutPanel1.Controls.Add(this.llbHelp); this.flowLayoutPanel1.Controls.Add(this.linkProfiles); this.flowLayoutPanel1.Controls.Add(this.lnkControllers); this.flowLayoutPanel1.Controls.Add(this.lLBUpdate); this.flowLayoutPanel1.Controls.Add(this.linkUninstall); this.flowLayoutPanel1.Controls.Add(this.lLSetup); + this.flowLayoutPanel1.Controls.Add(this.lLAppDataDelete); this.flowLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill; this.flowLayoutPanel1.Location = new System.Drawing.Point(3, 3); this.flowLayoutPanel1.Name = "flowLayoutPanel1"; @@ -1098,18 +1100,18 @@ // this.linkProfiles.Anchor = System.Windows.Forms.AnchorStyles.None; this.linkProfiles.AutoSize = true; - this.linkProfiles.Location = new System.Drawing.Point(283, 30); + this.linkProfiles.Location = new System.Drawing.Point(198, 30); this.linkProfiles.Name = "linkProfiles"; - this.linkProfiles.Size = new System.Drawing.Size(94, 13); + this.linkProfiles.Size = new System.Drawing.Size(65, 13); this.linkProfiles.TabIndex = 50; this.linkProfiles.TabStop = true; - this.linkProfiles.Text = "Open Profile folder"; + this.linkProfiles.Text = "Profile folder"; this.linkProfiles.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkProfiles_LinkClicked); // // lLBUpdate // this.lLBUpdate.Anchor = System.Windows.Forms.AnchorStyles.None; - this.lLBUpdate.Location = new System.Drawing.Point(511, 25); + this.lLBUpdate.Location = new System.Drawing.Point(348, 25); this.lLBUpdate.Name = "lLBUpdate"; this.lLBUpdate.Size = new System.Drawing.Size(116, 23); this.lLBUpdate.TabIndex = 49; @@ -1121,7 +1123,7 @@ // linkUninstall // this.linkUninstall.Anchor = System.Windows.Forms.AnchorStyles.None; - this.linkUninstall.Location = new System.Drawing.Point(633, 25); + this.linkUninstall.Location = new System.Drawing.Point(470, 25); this.linkUninstall.Name = "linkUninstall"; this.linkUninstall.Size = new System.Drawing.Size(106, 23); this.linkUninstall.TabIndex = 44; @@ -1130,15 +1132,11 @@ this.linkUninstall.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; this.linkUninstall.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkUninstall_LinkClicked); // - // saveProfiles - // - this.saveProfiles.Filter = "XML Files (*.xml)|*.xml"; - // // lLSetup // this.lLSetup.Anchor = System.Windows.Forms.AnchorStyles.None; this.lLSetup.AutoSize = true; - this.lLSetup.Location = new System.Drawing.Point(3, 51); + this.lLSetup.Location = new System.Drawing.Point(582, 30); this.lLSetup.Name = "lLSetup"; this.lLSetup.Size = new System.Drawing.Size(82, 13); this.lLSetup.TabIndex = 52; @@ -1146,6 +1144,22 @@ this.lLSetup.Text = "Controller Setup"; this.lLSetup.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.lLSetup_LinkClicked); // + // saveProfiles + // + this.saveProfiles.Filter = "XML Files (*.xml)|*.xml"; + // + // lLAppDataDelete + // + this.lLAppDataDelete.AutoSize = true; + this.lLAppDataDelete.Location = new System.Drawing.Point(3, 51); + this.lLAppDataDelete.Name = "lLAppDataDelete"; + this.lLAppDataDelete.Size = new System.Drawing.Size(127, 13); + this.lLAppDataDelete.TabIndex = 53; + this.lLAppDataDelete.TabStop = true; + this.lLAppDataDelete.Text = "Delete Old Settings folder"; + this.lLAppDataDelete.Visible = false; + this.lLAppDataDelete.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.lLAppDataDelete_LinkClicked); + // // ScpForm // this.AllowDrop = true; @@ -1155,9 +1169,10 @@ this.ClientSize = new System.Drawing.Size(794, 369); this.Controls.Add(this.tabMain); this.Controls.Add(this.pnlButton); - this.MinimumSize = new System.Drawing.Size(420, 137); + this.MinimumSize = new System.Drawing.Size(420, 231); this.Name = "ScpForm"; this.Text = "DS4Windows"; + this.Activated += new System.EventHandler(this.ScpForm_Activated); this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Form_Close); this.Load += new System.EventHandler(this.Form_Load); this.DragDrop += new System.Windows.Forms.DragEventHandler(this.ScpForm_DragDrop); @@ -1286,6 +1301,7 @@ private System.Windows.Forms.LinkLabel linkProfiles; private System.Windows.Forms.CheckBox cBNotifications; private System.Windows.Forms.LinkLabel lLSetup; + private System.Windows.Forms.LinkLabel lLAppDataDelete; //private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem2; } } diff --git a/DS4Tool/ScpForm.cs b/DS4Tool/ScpForm.cs index 7082650..cc46607 100644 --- a/DS4Tool/ScpForm.cs +++ b/DS4Tool/ScpForm.cs @@ -17,7 +17,7 @@ namespace ScpServer { public partial class ScpForm : Form { - double version = 10; + double version = 10.2; private DS4Control.Control rootHub; delegate void LogDebugDelegate(DateTime Time, String Data); @@ -30,7 +30,6 @@ namespace ScpServer Timer test = new Timer(), hotkeystimer = new Timer(); string exepath = Directory.GetParent(Assembly.GetExecutingAssembly().Location).FullName; float dpix, dpiy; - string filename; DateTime oldnow = DateTime.UtcNow; string tempprofile = "null"; List profilenames= new List(); @@ -64,32 +63,15 @@ namespace ScpServer [DllImport("user32.dll")] private static extern uint GetWindowThreadProcessId(IntPtr hWnd, out uint lpdwProcessId); - //HANDLE WINAPI OpenProcess( - // __in DWORD dwDesiredAccess, - // __in BOOL bInheritHandle, - // __in DWORD dwProcessId - //); [DllImport("kernel32.dll")] private static extern IntPtr OpenProcess(uint dwDesiredAccess, bool bInheritHandle, uint dwProcessId); [DllImport("kernel32.dll")] private static extern bool CloseHandle(IntPtr handle); - // DWORD WINAPI GetModuleBaseName( - // __in HANDLE hProcess, - // __in_opt HMODULE hModule, - // __out LPTSTR lpBaseName, - // __in DWORD nSize - // ); [DllImport("psapi.dll")] private static extern uint GetModuleBaseName(IntPtr hWnd, IntPtr hModule, StringBuilder lpFileName, int nSize); - // DWORD WINAPI GetModuleFileNameEx( - // __in HANDLE hProcess, - // __in_opt HMODULE hModule, - // __out LPTSTR lpFilename, - // __in DWORD nSize - // ); [DllImport("psapi.dll")] private static extern uint GetModuleFileNameEx(IntPtr hWnd, IntPtr hModule, StringBuilder lpFileName, int nSize); @@ -105,9 +87,7 @@ namespace ScpServer LoadP(); ToolTip tt = new ToolTip(); tt.SetToolTip(linkUninstall, "To fully remove DS4Windows, You can delete the profiles by the link to the other side"); - if (!System.IO.Directory.Exists(Global.appdatapath + "\\Virtual Bus Driver")) - linkUninstall.Visible = false; - //MessageBox.Show(Path.GetFileNameWithoutExtension(GetTopWindowName())); + tt.SetToolTip(lLAppDataDelete, @"Delete Appdata\DS4Tool folder as it's no longer in use"); } public static string GetTopWindowName() @@ -144,6 +124,17 @@ namespace ScpServer protected void Form_Load(object sender, EventArgs e) { SetupArrays(); + if (!exepath.StartsWith("C:\\Program Files") && !exepath.StartsWith("C:\\Windows")) + { + if (!File.Exists("Profiles.xml") && + File.Exists(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @"\DS4Tool\Profiles.xml")) + File.Copy(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @"\DS4Tool\Profiles.xml", + "Profiles.xml", false); + if (!File.Exists("Auto Profiles.xml") && + File.Exists(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @"\DS4Tool\Auto Profiles.xml")) + File.Copy(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @"\DS4Tool\Auto Profiles.xml", + "Auto Profiles.xml", false); + } Graphics g = this.CreateGraphics(); try @@ -162,10 +153,16 @@ namespace ScpServer Log.GuiLog += On_Debug; Log.TrayIconLog += ShowNotification; // tmrUpdate.Enabled = true; TODO remove tmrUpdate and leave tick() + Global.SaveWhere(); + if (!File.Exists(Global.appdatapath + @"\Profiles.xml")) + { + WelcomeDialog wd = new WelcomeDialog(); + wd.ShowDialog(); + } + Directory.CreateDirectory(Global.appdatapath); Global.Load(); Global.setVersion(version); Global.Save(); - foreach (ToolStripMenuItem t in shortcuts) t.DropDownItemClicked += Profile_Changed_Menu; hideDS4CheckBox.CheckedChanged -= hideDS4CheckBox_CheckedChanged; @@ -190,6 +187,7 @@ namespace ScpServer RefreshProfiles(); for (int i = 0; i < 4; i++) Global.LoadProfile(i); + Global.ControllerStatusChange += ControllerStatusChange; ControllerStatusChanged(); if (btnStartStop.Enabled) @@ -208,12 +206,8 @@ namespace ScpServer nUDUpdateTime.Value = checkwhen; } Uri url = new Uri("https://dl.dropboxusercontent.com/u/16364552/DS4Tool/newest%20version.txt"); //Sorry other devs, gonna have to find your own server - if (!Directory.Exists(Global.appdatapath)) - { - WelcomeDialog wd = new WelcomeDialog(); - wd.ShowDialog(); - } - Directory.CreateDirectory(Global.appdatapath); + + if (checkwhen > 0 && DateTime.Now >= Global.getLastChecked() + TimeSpan.FromHours(checkwhen)) { wc.DownloadFileAsync(url, Global.appdatapath + "\\version.txt"); @@ -230,12 +224,18 @@ namespace ScpServer hotkeystimer.Start(); hotkeystimer.Tick += Hotkeys; test.Tick += test_Tick; + if (Global.appdatapath == Directory.GetParent(Assembly.GetExecutingAssembly().Location).FullName + && Directory.Exists(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\DS4Tool")) + lLAppDataDelete.Visible = true; + if (!System.IO.Directory.Exists(Global.appdatapath + "\\Virtual Bus Driver")) + linkUninstall.Visible = false; } private void test_Tick(object sender, EventArgs e) { lBTest.Visible = true; - lBTest.Text = filename; + lBTest.Text = Mapping.getByteMapping(DS4Controls.R1, rootHub.getDS4State(0)).ToString() + " " + rootHub.getDS4StateMapped(0).R2.ToString(); + //lBTest.Text = rootHub.getDS4StateMapped(0).L2.ToString(); } void Hotkeys(object sender, EventArgs e) { @@ -260,24 +260,31 @@ namespace ScpServer if (tempprofile == "null") for (int i = 0; i < programpaths.Count; i++) { - string name = Path.GetFileNameWithoutExtension(programpaths[i]); - if (programpaths[i].ToLower() == GetTopWindowName().ToLower()) + string name = programpaths[i].ToLower().Replace('/', '\\'); + if (name == GetTopWindowName().ToLower().Replace('/', '\\')) { for (int j = 0; j < 4; j++) if (proprofiles[j][i] != "(none)") Global.LoadTempProfile(j, proprofiles[j][i]); //j is controller index, i is filename - tempprofile = programpaths[i].ToLower(); + tempprofile = name; } } else { - if (tempprofile != GetTopWindowName().ToLower()) + if (tempprofile != GetTopWindowName().ToLower().Replace('/', '\\')) { tempprofile = "null"; for (int j = 0; j < 4; j++) Global.LoadProfile(j); } } + if (Process.GetProcessesByName("DS4Tool").Length + Process.GetProcessesByName("DS4Windows").Length > 1) + {//The second process closes and this one comes in focus + Show(); + WindowState = FormWindowState.Normal; + ShowInTaskbar = true; + Focus(); + } #region Old Process check /*DateTime now = DateTime.UtcNow; if (now >= oldnow + TimeSpan.FromSeconds(2)) @@ -429,14 +436,29 @@ namespace ScpServer } catch (DirectoryNotFoundException) { - if (Directory.Exists(Directory.GetParent(Assembly.GetExecutingAssembly().Location).FullName + @"\Profiles\")) - MessageBox.Show("Please import or make a profile", "Profile Folder Moved"); - Directory.CreateDirectory(Global.appdatapath + @"\Profiles\"); - for (int i = 0; i < 4; i++) + if (Global.appdatapath == Directory.GetParent(Assembly.GetExecutingAssembly().Location).FullName) { - cbs[i].Text = "(No Profile Loaded)"; - shortcuts[i].Text = "Make Profile for Controller " + (i + 1); - ebns[i].Text = "New"; + if (Directory.Exists(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\DS4Tool" + @"\Profiles\")) + MessageBox.Show("Please import or make a profile", "Profile Folder Moved to program folder"); + Directory.CreateDirectory(Global.appdatapath + @"\Profiles\"); + for (int i = 0; i < 4; i++) + { + cbs[i].Text = "(No Profile Loaded)"; + shortcuts[i].Text = "Make Profile for Controller " + (i + 1); + ebns[i].Text = "New"; + } + } + else + { + if (Directory.Exists(Directory.GetParent(Assembly.GetExecutingAssembly().Location).FullName + @"\Profiles\")) + MessageBox.Show("Please import or make a profile", "Profile Folder Moved"); + Directory.CreateDirectory(Global.appdatapath + @"\Profiles\"); + for (int i = 0; i < 4; i++) + { + cbs[i].Text = "(No Profile Loaded)"; + shortcuts[i].Text = "Make Profile for Controller " + (i + 1); + ebns[i].Text = "New"; + } } } finally @@ -517,7 +539,6 @@ namespace ScpServer this.Show(); this.ShowInTaskbar = true; } - //Added last message alternative if (this.Height > 220) @@ -602,7 +623,7 @@ namespace ScpServer if (Pads[Index].Text != "Connecting...") { Enable_Controls(Index, true); - MinimumSize = new Size(MinimumSize.Width, 137 + 29 * Index); + //MinimumSize = new Size(MinimumSize.Width, 137 + 29 * Index); } } else @@ -732,7 +753,10 @@ namespace ScpServer private void tSBImportProfile_Click(object sender, EventArgs e) { - openProfiles.InitialDirectory = Directory.GetParent(Assembly.GetExecutingAssembly().Location).FullName + @"\Profiles\"; + if (Global.appdatapath == Directory.GetParent(Assembly.GetExecutingAssembly().Location).FullName) + openProfiles.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\DS4Tool" + @"\Profiles\"; + else + openProfiles.InitialDirectory = Directory.GetParent(Assembly.GetExecutingAssembly().Location).FullName + @"\Profiles\"; if (openProfiles.ShowDialog() == System.Windows.Forms.DialogResult.OK) { string[] files = openProfiles.FileNames; @@ -951,34 +975,6 @@ namespace ScpServer private void tabMain_SelectedIndexChanged(object sender, EventArgs e) { lbLastMessage.Visible = tabMain.SelectedIndex != 2; - if (tabMain.SelectedIndex == 3 && opt == null) - { - if (dpix == 120) - { - if (this.Size.Width < 930 || this.Size.Height < 392) - oldsize = Size; - if (this.Size.Height < 415) - this.Size = new System.Drawing.Size(this.Size.Width, 392); - if (this.Size.Width < 930) - this.Size = new System.Drawing.Size(930, this.Size.Height); - } - else - { - if (this.Size.Width < 755 || this.Size.Height < 316) - oldsize = Size; - if (this.Size.Height < 316) - this.Size = new System.Drawing.Size(this.Size.Width, 316); - if (this.Size.Width < 755) - this.Size = new System.Drawing.Size(755, this.Size.Height); - } - - } - else if (oldsize != new System.Drawing.Size(0, 0) && opt == null) - { - Size = oldsize; - oldsize = new System.Drawing.Size(0, 0); - } - } private void lBProfiles_MouseDown(object sender, MouseEventArgs e) @@ -1137,6 +1133,22 @@ namespace ScpServer Global.setCheckWhen((int)nUDUpdateTime.Value * 24); if (nUDUpdateTime.Value < 1) cBUpdate.Checked = false; + if (nUDUpdateTime.Value == 1) + { + int index = cBUpdateTime.SelectedIndex; + cBUpdateTime.Items.Clear(); + cBUpdateTime.Items.Add("hour"); + cBUpdateTime.Items.Add("day"); + cBUpdateTime.SelectedIndex = index; + } + else if (cBUpdateTime.Items[0].ToString() == "hour") + { + int index = cBUpdateTime.SelectedIndex; + cBUpdateTime.Items.Clear(); + cBUpdateTime.Items.Add("hours"); + cBUpdateTime.Items.Add("days"); + cBUpdateTime.SelectedIndex = index; + } } private void cBUpdateTime_SelectedIndexChanged(object sender, EventArgs e) @@ -1213,6 +1225,26 @@ namespace ScpServer WelcomeDialog wd = new WelcomeDialog(); wd.ShowDialog(); } + + private void ScpForm_Activated(object sender, EventArgs e) + { + if (!this.ShowInTaskbar) + { + this.Show(); + this.ShowInTaskbar = true; + } + } + + private void lLAppDataDelete_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) + { + try { Directory.Delete(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\DS4Tool", true); } + catch{} + finally + { + MessageBox.Show("Old Settings Deleted"); + lLAppDataDelete.Visible = false; + } + } } public class ThemeUtil diff --git a/DS4Tool/WelcomeDialog.cs b/DS4Tool/WelcomeDialog.cs index f591c92..e2ddd38 100644 --- a/DS4Tool/WelcomeDialog.cs +++ b/DS4Tool/WelcomeDialog.cs @@ -111,6 +111,7 @@ namespace ScpServer } catch { } File.Delete(Global.appdatapath + "\\VBus.zip"); + ((Timer)sender).Stop(); } } else @@ -122,6 +123,7 @@ namespace ScpServer { bnStep1.Text = "Install Complete"; File.Delete(Global.appdatapath + "\\VBus.zip"); + ((Timer)sender).Stop(); } } } diff --git a/DS4Tool/WinProgs.Designer.cs b/DS4Tool/WinProgs.Designer.cs index f41fae6..b11d9b7 100644 --- a/DS4Tool/WinProgs.Designer.cs +++ b/DS4Tool/WinProgs.Designer.cs @@ -40,14 +40,12 @@ this.lBController2 = new System.Windows.Forms.Label(); this.lBController3 = new System.Windows.Forms.Label(); this.lBController4 = new System.Windows.Forms.Label(); - this.lBBeta = new System.Windows.Forms.Label(); this.openProgram = new System.Windows.Forms.OpenFileDialog(); this.bnDelete = new System.Windows.Forms.Button(); this.iLIcons = new System.Windows.Forms.ImageList(this.components); this.lVPrograms = new System.Windows.Forms.ListView(); this.nameHeader = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.PathHeader = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); - this.lBTip = new System.Windows.Forms.Label(); this.pBProfilesTip = new System.Windows.Forms.Label(); this.bnHideUnchecked = new System.Windows.Forms.Button(); this.cMSPrograms = new System.Windows.Forms.ContextMenuStrip(this.components); @@ -60,10 +58,9 @@ // // bnAddPrograms // - this.bnAddPrograms.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.bnAddPrograms.Location = new System.Drawing.Point(516, 195); + this.bnAddPrograms.Location = new System.Drawing.Point(5, 2); this.bnAddPrograms.Name = "bnAddPrograms"; - this.bnAddPrograms.Size = new System.Drawing.Size(114, 23); + this.bnAddPrograms.Size = new System.Drawing.Size(88, 23); this.bnAddPrograms.TabIndex = 2; this.bnAddPrograms.Text = "Add programs"; this.bnAddPrograms.UseVisualStyleBackColor = true; @@ -72,9 +69,9 @@ // lBProgramPath // this.lBProgramPath.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.lBProgramPath.Location = new System.Drawing.Point(602, 131); + this.lBProgramPath.Location = new System.Drawing.Point(519, 195); this.lBProgramPath.Name = "lBProgramPath"; - this.lBProgramPath.Size = new System.Drawing.Size(47, 18); + this.lBProgramPath.Size = new System.Drawing.Size(205, 18); this.lBProgramPath.TabIndex = 3; this.lBProgramPath.Visible = false; this.lBProgramPath.TextChanged += new System.EventHandler(this.lBProgramPath_TextChanged); @@ -84,7 +81,7 @@ this.cBProfile1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.cBProfile1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.cBProfile1.FormattingEnabled = true; - this.cBProfile1.Location = new System.Drawing.Point(609, 18); + this.cBProfile1.Location = new System.Drawing.Point(609, 28); this.cBProfile1.Name = "cBProfile1"; this.cBProfile1.Size = new System.Drawing.Size(121, 21); this.cBProfile1.TabIndex = 6; @@ -95,7 +92,7 @@ this.cBProfile2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.cBProfile2.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.cBProfile2.FormattingEnabled = true; - this.cBProfile2.Location = new System.Drawing.Point(609, 45); + this.cBProfile2.Location = new System.Drawing.Point(609, 55); this.cBProfile2.Name = "cBProfile2"; this.cBProfile2.Size = new System.Drawing.Size(121, 21); this.cBProfile2.TabIndex = 6; @@ -106,7 +103,7 @@ this.cBProfile3.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.cBProfile3.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.cBProfile3.FormattingEnabled = true; - this.cBProfile3.Location = new System.Drawing.Point(609, 72); + this.cBProfile3.Location = new System.Drawing.Point(609, 82); this.cBProfile3.Name = "cBProfile3"; this.cBProfile3.Size = new System.Drawing.Size(121, 21); this.cBProfile3.TabIndex = 6; @@ -117,7 +114,7 @@ this.cBProfile4.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.cBProfile4.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.cBProfile4.FormattingEnabled = true; - this.cBProfile4.Location = new System.Drawing.Point(609, 99); + this.cBProfile4.Location = new System.Drawing.Point(609, 109); this.cBProfile4.Name = "cBProfile4"; this.cBProfile4.Size = new System.Drawing.Size(121, 21); this.cBProfile4.TabIndex = 6; @@ -127,7 +124,7 @@ // this.bnSave.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.bnSave.Enabled = false; - this.bnSave.Location = new System.Drawing.Point(663, 126); + this.bnSave.Location = new System.Drawing.Point(663, 2); this.bnSave.Name = "bnSave"; this.bnSave.Size = new System.Drawing.Size(67, 23); this.bnSave.TabIndex = 2; @@ -139,7 +136,7 @@ // this.lBController1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.lBController1.AutoSize = true; - this.lBController1.Location = new System.Drawing.Point(516, 21); + this.lBController1.Location = new System.Drawing.Point(516, 31); this.lBController1.Name = "lBController1"; this.lBController1.Size = new System.Drawing.Size(60, 13); this.lBController1.TabIndex = 7; @@ -149,7 +146,7 @@ // this.lBController2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.lBController2.AutoSize = true; - this.lBController2.Location = new System.Drawing.Point(516, 48); + this.lBController2.Location = new System.Drawing.Point(516, 58); this.lBController2.Name = "lBController2"; this.lBController2.Size = new System.Drawing.Size(60, 13); this.lBController2.TabIndex = 7; @@ -159,7 +156,7 @@ // this.lBController3.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.lBController3.AutoSize = true; - this.lBController3.Location = new System.Drawing.Point(516, 75); + this.lBController3.Location = new System.Drawing.Point(516, 85); this.lBController3.Name = "lBController3"; this.lBController3.Size = new System.Drawing.Size(60, 13); this.lBController3.TabIndex = 7; @@ -169,26 +166,12 @@ // this.lBController4.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.lBController4.AutoSize = true; - this.lBController4.Location = new System.Drawing.Point(516, 102); + this.lBController4.Location = new System.Drawing.Point(516, 112); this.lBController4.Name = "lBController4"; this.lBController4.Size = new System.Drawing.Size(60, 13); this.lBController4.TabIndex = 7; this.lBController4.Text = "Controller 4"; // - // lBBeta - // - this.lBBeta.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.lBBeta.AutoSize = true; - this.lBBeta.BackColor = System.Drawing.Color.Transparent; - this.lBBeta.Font = new System.Drawing.Font("Microsoft Sans Serif", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.lBBeta.ForeColor = System.Drawing.SystemColors.GrayText; - this.lBBeta.Location = new System.Drawing.Point(606, 175); - this.lBBeta.Name = "lBBeta"; - this.lBBeta.Size = new System.Drawing.Size(38, 18); - this.lBBeta.TabIndex = 8; - this.lBBeta.Text = "Beta"; - this.lBBeta.Visible = false; - // // openProgram // this.openProgram.FileName = "openFileDialog1"; @@ -197,7 +180,7 @@ // bnDelete // this.bnDelete.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.bnDelete.Location = new System.Drawing.Point(519, 126); + this.bnDelete.Location = new System.Drawing.Point(590, 2); this.bnDelete.Name = "bnDelete"; this.bnDelete.Size = new System.Drawing.Size(67, 23); this.bnDelete.TabIndex = 2; @@ -222,10 +205,11 @@ this.PathHeader}); this.lVPrograms.FullRowSelect = true; this.lVPrograms.LargeImageList = this.iLIcons; - this.lVPrograms.Location = new System.Drawing.Point(5, 6); + this.lVPrograms.Location = new System.Drawing.Point(5, 28); this.lVPrograms.MultiSelect = false; this.lVPrograms.Name = "lVPrograms"; - this.lVPrograms.Size = new System.Drawing.Size(505, 212); + this.lVPrograms.ShowItemToolTips = true; + this.lVPrograms.Size = new System.Drawing.Size(505, 190); this.lVPrograms.SmallImageList = this.iLIcons; this.lVPrograms.TabIndex = 12; this.lVPrograms.UseCompatibleStateImageBehavior = false; @@ -243,26 +227,13 @@ this.PathHeader.Text = "Path"; this.PathHeader.Width = 358; // - // lBTip - // - this.lBTip.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.lBTip.AutoSize = true; - this.lBTip.BackColor = System.Drawing.Color.Transparent; - this.lBTip.ForeColor = System.Drawing.SystemColors.GrayText; - this.lBTip.Location = new System.Drawing.Point(529, 152); - this.lBTip.Name = "lBTip"; - this.lBTip.Size = new System.Drawing.Size(191, 13); - this.lBTip.TabIndex = 8; - this.lBTip.Text = "Pick a program, then profiles, and save"; - this.lBTip.Visible = false; - // // pBProfilesTip // this.pBProfilesTip.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.pBProfilesTip.AutoSize = true; this.pBProfilesTip.BackColor = System.Drawing.Color.Transparent; this.pBProfilesTip.ForeColor = System.Drawing.SystemColors.GrayText; - this.pBProfilesTip.Location = new System.Drawing.Point(620, 2); + this.pBProfilesTip.Location = new System.Drawing.Point(622, 136); this.pBProfilesTip.Name = "pBProfilesTip"; this.pBProfilesTip.Size = new System.Drawing.Size(89, 13); this.pBProfilesTip.TabIndex = 8; @@ -270,8 +241,7 @@ // // bnHideUnchecked // - this.bnHideUnchecked.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.bnHideUnchecked.Location = new System.Drawing.Point(636, 195); + this.bnHideUnchecked.Location = new System.Drawing.Point(99, 2); this.bnHideUnchecked.Name = "bnHideUnchecked"; this.bnHideUnchecked.Size = new System.Drawing.Size(94, 23); this.bnHideUnchecked.TabIndex = 2; @@ -324,6 +294,7 @@ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.BackColor = System.Drawing.Color.White; this.ClientSize = new System.Drawing.Size(736, 222); + this.Controls.Add(this.pBProfilesTip); this.Controls.Add(this.bnHideUnchecked); this.Controls.Add(this.bnAddPrograms); this.Controls.Add(this.lVPrograms); @@ -338,9 +309,6 @@ this.Controls.Add(this.lBProgramPath); this.Controls.Add(this.bnDelete); this.Controls.Add(this.bnSave); - this.Controls.Add(this.pBProfilesTip); - this.Controls.Add(this.lBTip); - this.Controls.Add(this.lBBeta); this.Name = "WinProgs"; this.Text = "Auto-Profiles"; this.cMSPrograms.ResumeLayout(false); @@ -362,14 +330,12 @@ private System.Windows.Forms.Label lBController2; private System.Windows.Forms.Label lBController3; private System.Windows.Forms.Label lBController4; - private System.Windows.Forms.Label lBBeta; private System.Windows.Forms.OpenFileDialog openProgram; private System.Windows.Forms.Button bnDelete; private System.Windows.Forms.ImageList iLIcons; private System.Windows.Forms.ListView lVPrograms; private System.Windows.Forms.ColumnHeader nameHeader; private System.Windows.Forms.ColumnHeader PathHeader; - private System.Windows.Forms.Label lBTip; private System.Windows.Forms.Label pBProfilesTip; private System.Windows.Forms.Button bnHideUnchecked; private System.Windows.Forms.ContextMenuStrip cMSPrograms; diff --git a/DS4Tool/WinProgs.cs b/DS4Tool/WinProgs.cs index 82e1998..99fdf70 100644 --- a/DS4Tool/WinProgs.cs +++ b/DS4Tool/WinProgs.cs @@ -46,10 +46,14 @@ namespace ScpServer Create(); LoadP(); - RegistryKey regKey = Registry.CurrentUser; + /*RegistryKey regKey = Registry.CurrentUser; regKey = regKey.OpenSubKey(@"Software\Valve\Steam"); - if (regKey != null) - steamgamesdir = regKey.GetValue("SteamPath").ToString() + @"\steamapps\common"; + + if (regKey != null)*/ + if (Directory.Exists(@"C:\Program Files (x86)\Steam\steamapps\common")) + steamgamesdir = @"C:\Program Files (x86)\Steam\steamapps\common"; + else if (Directory.Exists(@"C:\Program Files\Steam\steamapps\common")) + steamgamesdir = @"C:\Program Files\Steam\steamapps\common"; else cMSPrograms.Items.Remove(addSteamGamesToolStripMenuItem); @@ -106,6 +110,7 @@ namespace ScpServer ListViewItem lvi = new ListViewItem(Path.GetFileNameWithoutExtension(st), index); lvi.SubItems.Add(st); lvi.Checked = true; + lvi.ToolTipText = st; lVPrograms.Items.Add(lvi); } } @@ -156,6 +161,7 @@ namespace ScpServer iLIcons.Images.Add(Icon.ExtractAssociatedIcon(st)); ListViewItem lvi = new ListViewItem(Path.GetFileNameWithoutExtension(st), iLIcons.Images.Count + index); lvi.SubItems.Add(st); + lvi.ToolTipText = st; lVPrograms.Items.Add(lvi); } } diff --git a/HidLibrary/HidLibrary.csproj b/HidLibrary/HidLibrary.csproj index d030bc8..718f125 100644 --- a/HidLibrary/HidLibrary.csproj +++ b/HidLibrary/HidLibrary.csproj @@ -10,7 +10,7 @@ Properties HidLibrary HidLibrary - v4.0 + v4.5 512