├── .gitignore ├── GGXrdWakeupDPUtil.Library ├── Enums │ └── Buttons.cs ├── GGXrdWakeupDPUtil.Library.csproj ├── NameWakeupData.cs ├── Properties │ └── AssemblyInfo.cs ├── ReversalTool.cs ├── ReversalType.cs ├── SlotInput.cs └── packages.config ├── GGXrdWakeupDPUtil.Test ├── App.config ├── Form1.Designer.cs ├── Form1.cs ├── Form1.resx ├── GGXrdWakeupDPUtil.Test.csproj ├── Program.cs └── Properties │ ├── AssemblyInfo.cs │ ├── Resources.Designer.cs │ ├── Resources.resx │ ├── Settings.Designer.cs │ └── Settings.settings ├── GGXrdWakeupDPUtil.UnitTests ├── GGXrdWakeupDPUtil.UnitTests.csproj ├── Properties │ └── AssemblyInfo.cs ├── ReversalToolTests.cs └── packages.config ├── GGXrdWakeupDPUtil.sln ├── GGXrdWakeupDPUtil ├── App.config ├── App.xaml ├── App.xaml.cs ├── GGXrdWakeupDPUtil.csproj ├── Properties │ ├── AssemblyInfo.cs │ ├── Resources.Designer.cs │ ├── Resources.resx │ ├── Settings.Designer.cs │ └── Settings.settings ├── Window1.xaml ├── Window1.xaml.cs └── haehead_Jpy_icon.ico └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | ## Ignore Visual Studio temporary files, build results, and 2 | ## files generated by popular Visual Studio add-ons. 3 | ## 4 | ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore 5 | 6 | # User-specific files 7 | *.suo 8 | *.user 9 | *.userosscache 10 | *.sln.docstates 11 | 12 | # User-specific files (MonoDevelop/Xamarin Studio) 13 | *.userprefs 14 | 15 | # Build results 16 | [Dd]ebug/ 17 | [Dd]ebugPublic/ 18 | [Rr]elease/ 19 | [Rr]eleases/ 20 | x64/ 21 | x86/ 22 | bld/ 23 | [Bb]in/ 24 | [Oo]bj/ 25 | [Ll]og/ 26 | 27 | # Visual Studio 2015 cache/options directory 28 | .vs/ 29 | # Uncomment if you have tasks that create the project's static files in wwwroot 30 | #wwwroot/ 31 | 32 | # MSTest test Results 33 | [Tt]est[Rr]esult*/ 34 | [Bb]uild[Ll]og.* 35 | 36 | # NUNIT 37 | *.VisualState.xml 38 | TestResult.xml 39 | 40 | # Build Results of an ATL Project 41 | [Dd]ebugPS/ 42 | [Rr]eleasePS/ 43 | dlldata.c 44 | 45 | # .NET Core 46 | project.lock.json 47 | project.fragment.lock.json 48 | artifacts/ 49 | **/Properties/launchSettings.json 50 | 51 | *_i.c 52 | *_p.c 53 | *_i.h 54 | *.ilk 55 | *.meta 56 | *.obj 57 | *.pch 58 | *.pdb 59 | *.pgc 60 | *.pgd 61 | *.rsp 62 | *.sbr 63 | *.tlb 64 | *.tli 65 | *.tlh 66 | *.tmp 67 | *.tmp_proj 68 | *.log 69 | *.vspscc 70 | *.vssscc 71 | .builds 72 | *.pidb 73 | *.svclog 74 | *.scc 75 | 76 | # Chutzpah Test files 77 | _Chutzpah* 78 | 79 | # Visual C++ cache files 80 | ipch/ 81 | *.aps 82 | *.ncb 83 | *.opendb 84 | *.opensdf 85 | *.sdf 86 | *.cachefile 87 | *.VC.db 88 | *.VC.VC.opendb 89 | 90 | # Visual Studio profiler 91 | *.psess 92 | *.vsp 93 | *.vspx 94 | *.sap 95 | 96 | # TFS 2012 Local Workspace 97 | $tf/ 98 | 99 | # Guidance Automation Toolkit 100 | *.gpState 101 | 102 | # ReSharper is a .NET coding add-in 103 | _ReSharper*/ 104 | *.[Rr]e[Ss]harper 105 | *.DotSettings.user 106 | 107 | # JustCode is a .NET coding add-in 108 | .JustCode 109 | 110 | # TeamCity is a build add-in 111 | _TeamCity* 112 | 113 | # DotCover is a Code Coverage Tool 114 | *.dotCover 115 | 116 | # Visual Studio code coverage results 117 | *.coverage 118 | *.coveragexml 119 | 120 | # NCrunch 121 | _NCrunch_* 122 | .*crunch*.local.xml 123 | nCrunchTemp_* 124 | 125 | # MightyMoose 126 | *.mm.* 127 | AutoTest.Net/ 128 | 129 | # Web workbench (sass) 130 | .sass-cache/ 131 | 132 | # Installshield output folder 133 | [Ee]xpress/ 134 | 135 | # DocProject is a documentation generator add-in 136 | DocProject/buildhelp/ 137 | DocProject/Help/*.HxT 138 | DocProject/Help/*.HxC 139 | DocProject/Help/*.hhc 140 | DocProject/Help/*.hhk 141 | DocProject/Help/*.hhp 142 | DocProject/Help/Html2 143 | DocProject/Help/html 144 | 145 | # Click-Once directory 146 | publish/ 147 | 148 | # Publish Web Output 149 | *.[Pp]ublish.xml 150 | *.azurePubxml 151 | # TODO: Comment the next line if you want to checkin your web deploy settings 152 | # but database connection strings (with potential passwords) will be unencrypted 153 | *.pubxml 154 | *.publishproj 155 | 156 | # Microsoft Azure Web App publish settings. Comment the next line if you want to 157 | # checkin your Azure Web App publish settings, but sensitive information contained 158 | # in these scripts will be unencrypted 159 | PublishScripts/ 160 | 161 | # NuGet Packages 162 | *.nupkg 163 | # The packages folder can be ignored because of Package Restore 164 | **/packages/* 165 | # except build/, which is used as an MSBuild target. 166 | !**/packages/build/ 167 | # Uncomment if necessary however generally it will be regenerated when needed 168 | #!**/packages/repositories.config 169 | # NuGet v3's project.json files produces more ignorable files 170 | *.nuget.props 171 | *.nuget.targets 172 | 173 | # Microsoft Azure Build Output 174 | csx/ 175 | *.build.csdef 176 | 177 | # Microsoft Azure Emulator 178 | ecf/ 179 | rcf/ 180 | 181 | # Windows Store app package directories and files 182 | AppPackages/ 183 | BundleArtifacts/ 184 | Package.StoreAssociation.xml 185 | _pkginfo.txt 186 | 187 | # Visual Studio cache files 188 | # files ending in .cache can be ignored 189 | *.[Cc]ache 190 | # but keep track of directories ending in .cache 191 | !*.[Cc]ache/ 192 | 193 | # Others 194 | ClientBin/ 195 | ~$* 196 | *~ 197 | *.dbmdl 198 | *.dbproj.schemaview 199 | *.jfm 200 | *.pfx 201 | *.publishsettings 202 | orleans.codegen.cs 203 | 204 | # Since there are multiple workflows, uncomment next line to ignore bower_components 205 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) 206 | #bower_components/ 207 | 208 | # RIA/Silverlight projects 209 | Generated_Code/ 210 | 211 | # Backup & report files from converting an old project file 212 | # to a newer Visual Studio version. Backup files are not needed, 213 | # because we have git ;-) 214 | _UpgradeReport_Files/ 215 | Backup*/ 216 | UpgradeLog*.XML 217 | UpgradeLog*.htm 218 | 219 | # SQL Server files 220 | *.mdf 221 | *.ldf 222 | *.ndf 223 | 224 | # Business Intelligence projects 225 | *.rdl.data 226 | *.bim.layout 227 | *.bim_*.settings 228 | 229 | # Microsoft Fakes 230 | FakesAssemblies/ 231 | 232 | # GhostDoc plugin setting file 233 | *.GhostDoc.xml 234 | 235 | # Node.js Tools for Visual Studio 236 | .ntvs_analysis.dat 237 | node_modules/ 238 | 239 | # Typescript v1 declaration files 240 | typings/ 241 | 242 | # Visual Studio 6 build log 243 | *.plg 244 | 245 | # Visual Studio 6 workspace options file 246 | *.opt 247 | 248 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.) 249 | *.vbw 250 | 251 | # Visual Studio LightSwitch build output 252 | **/*.HTMLClient/GeneratedArtifacts 253 | **/*.DesktopClient/GeneratedArtifacts 254 | **/*.DesktopClient/ModelManifest.xml 255 | **/*.Server/GeneratedArtifacts 256 | **/*.Server/ModelManifest.xml 257 | _Pvt_Extensions 258 | 259 | # Paket dependency manager 260 | .paket/paket.exe 261 | paket-files/ 262 | 263 | # FAKE - F# Make 264 | .fake/ 265 | 266 | # JetBrains Rider 267 | .idea/ 268 | *.sln.iml 269 | 270 | # CodeRush 271 | .cr/ 272 | 273 | # Python Tools for Visual Studio (PTVS) 274 | __pycache__/ 275 | *.pyc 276 | 277 | # Cake - Uncomment if you are using it 278 | # tools/** 279 | # !tools/packages.config 280 | 281 | # Telerik's JustMock configuration file 282 | *.jmconfig 283 | 284 | # BizTalk build output 285 | *.btp.cs 286 | *.btm.cs 287 | *.odx.cs 288 | *.xsd.cs 289 | -------------------------------------------------------------------------------- /GGXrdWakeupDPUtil.Library/Enums/Buttons.cs: -------------------------------------------------------------------------------- 1 | namespace GGXrdWakeupDPUtil.Library.Enums 2 | { 3 | public enum Buttons 4 | { 5 | P = 0x10, 6 | K = 0x20, 7 | S = 0x40, 8 | H = 0x80, 9 | D = 0x100 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /GGXrdWakeupDPUtil.Library/GGXrdWakeupDPUtil.Library.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {A917CB67-743A-4E26-9C38-0EDEEE57D4CF} 8 | Library 9 | Properties 10 | GGXrdWakeupDPUtil.Library 11 | GGXrdWakeupDPUtil.Library 12 | v4.5.2 13 | 512 14 | 15 | 16 | true 17 | full 18 | false 19 | bin\Debug\ 20 | DEBUG;TRACE 21 | prompt 22 | 4 23 | x86 24 | 25 | 26 | pdbonly 27 | true 28 | bin\Release\ 29 | TRACE 30 | prompt 31 | 4 32 | x86 33 | 34 | 35 | 36 | ..\packages\Fasm.NET.1.70.03.2\lib\Fasm.NET.dll 37 | 38 | 39 | ..\packages\MemorySharp.1.2.0\lib\MemorySharp.dll 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 | -------------------------------------------------------------------------------- /GGXrdWakeupDPUtil.Library/NameWakeupData.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace GGXrdWakeupDPUtil.Library 4 | { 5 | public class NameWakeupData : IEquatable 6 | { 7 | public String CharName { get; } 8 | public int FaceUpFrames { get; } 9 | public int FaceDownFrames { get; } 10 | 11 | public NameWakeupData(string charName, int faceUpFrames, int faceDownFrames) 12 | { 13 | CharName = charName; 14 | FaceUpFrames = faceUpFrames; 15 | FaceDownFrames = faceDownFrames; 16 | } 17 | 18 | public bool Equals(NameWakeupData other) 19 | { 20 | if (ReferenceEquals(null, other)) 21 | { 22 | return false; 23 | } 24 | if (ReferenceEquals(this, other)) 25 | { 26 | return true; 27 | } 28 | return string.Equals(CharName, other.CharName) && 29 | FaceUpFrames == other.FaceUpFrames && 30 | FaceDownFrames == other.FaceDownFrames; 31 | } 32 | 33 | public override bool Equals(object obj) 34 | { 35 | if (ReferenceEquals(null, obj)) 36 | { 37 | return false; 38 | } 39 | if (ReferenceEquals(this, obj)) 40 | { 41 | return true; 42 | } 43 | if (obj.GetType() != GetType()) 44 | { 45 | return false; 46 | } 47 | return Equals((NameWakeupData)obj); 48 | } 49 | 50 | public override int GetHashCode() 51 | { 52 | unchecked 53 | { 54 | var hashCode = (CharName != null ? CharName.GetHashCode() : 0); 55 | hashCode = (hashCode * 397) ^ FaceUpFrames; 56 | hashCode = (hashCode * 397) ^ FaceDownFrames; 57 | return hashCode; 58 | } 59 | } 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /GGXrdWakeupDPUtil.Library/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // Les informations générales relatives à un assembly dépendent de 6 | // l'ensemble d'attributs suivant. Changez les valeurs de ces attributs pour modifier les informations 7 | // associées à un assembly. 8 | [assembly: AssemblyTitle("GGXrdWakeupDPUtil.Library")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("GGXrdWakeupDPUtil.Library")] 13 | [assembly: AssemblyCopyright("Copyright © 2018")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // L'affectation de la valeur false à ComVisible rend les types invisibles dans cet assembly 18 | // aux composants COM. Si vous devez accéder à un type dans cet assembly à partir de 19 | // COM, affectez la valeur true à l'attribut ComVisible sur ce type. 20 | [assembly: ComVisible(false)] 21 | 22 | // Le GUID suivant est pour l'ID de la typelib si ce projet est exposé à COM 23 | [assembly: Guid("a917cb67-743a-4e26-9c38-0edeee57d4cf")] 24 | 25 | // Les informations de version pour un assembly se composent des quatre valeurs suivantes : 26 | // 27 | // Version principale 28 | // Version secondaire 29 | // Numéro de build 30 | // Révision 31 | // 32 | // Vous pouvez spécifier toutes les valeurs ou indiquer les numéros de build et de révision par défaut 33 | // en utilisant '*', comme indiqué ci-dessous : 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /GGXrdWakeupDPUtil.Library/ReversalTool.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.ComponentModel; 4 | using System.Configuration; 5 | using System.Diagnostics; 6 | using System.Linq; 7 | using System.Text.RegularExpressions; 8 | using System.Threading; 9 | using System.Windows.Threading; 10 | using Binarysharp.MemoryManagement; 11 | using GGXrdWakeupDPUtil.Library.Enums; 12 | 13 | namespace GGXrdWakeupDPUtil.Library 14 | { 15 | public class ReversalTool : IDisposable 16 | { 17 | private readonly string _ggprocname = ConfigurationManager.AppSettings.Get("GGProcessName"); 18 | 19 | 20 | private readonly List _nameWakeupDataList = new List 21 | { 22 | new NameWakeupData("Sol", 25, 21), 23 | new NameWakeupData("Ky", 23, 21), 24 | new NameWakeupData("May", 25, 22), 25 | new NameWakeupData("Millia", 25, 23), 26 | new NameWakeupData("Zato", 25, 22), 27 | new NameWakeupData("Potemkin", 24, 22), 28 | new NameWakeupData("Chipp", 30, 24), 29 | new NameWakeupData("Faust", 25, 29), 30 | new NameWakeupData("Axl", 25, 21), 31 | new NameWakeupData("Venom", 21, 26), 32 | new NameWakeupData("Slayer", 26, 20), 33 | new NameWakeupData("I-No", 24, 20), 34 | new NameWakeupData("Bedman", 24, 30), 35 | new NameWakeupData("Ramlethal", 25, 23), 36 | new NameWakeupData("Sin", 30, 21), 37 | new NameWakeupData("Elphelt", 27, 27), 38 | new NameWakeupData("Leo", 28, 26), 39 | new NameWakeupData("Johnny", 25, 24), 40 | new NameWakeupData("Jack-O'", 25, 23), 41 | new NameWakeupData("Jam", 26, 25), 42 | new NameWakeupData("Haehyun", 25, 27), 43 | new NameWakeupData("Raven", 25, 24), 44 | new NameWakeupData("Dizzy", 25, 24), 45 | new NameWakeupData("Baiken", 22, 21), 46 | new NameWakeupData("Answer", 24, 24) 47 | }; 48 | 49 | private char FrameDelimiter = ','; 50 | private char WakeUpFrameDelimiter = '!'; 51 | const int WakeupFrameMask = 0x200; 52 | 53 | #region Offsets 54 | private readonly IntPtr _p2IdOffset = new IntPtr(Convert.ToInt32(ConfigurationManager.AppSettings.Get("P2IdOffset"), 16)); 55 | private readonly IntPtr _recordingSlotPtr = new IntPtr(Convert.ToInt32(ConfigurationManager.AppSettings.Get("RecordingSlotPtr"), 16)); 56 | private readonly IntPtr _p1AnimStringPtr = new IntPtr(Convert.ToInt32(ConfigurationManager.AppSettings.Get("P1AnimStringPtr"), 16)); 57 | private readonly int _p1AnimStringPtrOffset = Convert.ToInt32(ConfigurationManager.AppSettings.Get("P1AnimStringPtrOffset"), 16); 58 | private readonly IntPtr _p2AnimStringPtr = new IntPtr(Convert.ToInt32(ConfigurationManager.AppSettings.Get("P2AnimStringPtr"), 16)); 59 | private readonly int _p2AnimStringPtrOffset = Convert.ToInt32(ConfigurationManager.AppSettings.Get("P2AnimStringPtrOffset"), 16); 60 | private readonly IntPtr _frameCountOffset = new IntPtr(Convert.ToInt32(ConfigurationManager.AppSettings.Get("FrameCountOffset"), 16)); 61 | private readonly IntPtr _scriptOffset = new IntPtr(Convert.ToInt32(ConfigurationManager.AppSettings.Get("ScriptOffset"), 16)); 62 | #endregion 63 | 64 | private readonly string FaceDownAnimation = "CmnActFDown2Stand"; 65 | private readonly string FaceUpAnimation = "CmnActBDown2Stand"; 66 | 67 | private const int RecordingSlotSize = 4808; 68 | private byte[] _remoteCodeAOB; 69 | private MemorySharp _memorySharp; 70 | private Binarysharp.MemoryManagement.Memory.RemoteAllocation _newmem; 71 | private Binarysharp.MemoryManagement.Memory.RemoteAllocation _flagmem; 72 | private IntPtr _newmembase; 73 | private IntPtr _flagmembase; 74 | private static bool _runReversalThread; 75 | private static readonly object RunReversalThreadLock = new object(); 76 | private IntPtr _nonRelativeScriptOffset; 77 | private static bool _written = false; 78 | #region Constructors 79 | #endregion 80 | 81 | 82 | 83 | public void AttachToProcess() 84 | { 85 | var process = Process.GetProcessesByName(_ggprocname).FirstOrDefault(); 86 | 87 | if (process == null) 88 | { 89 | throw new Exception("GG process not found!"); 90 | } 91 | 92 | _memorySharp = new MemorySharp(process); 93 | _nonRelativeScriptOffset = IntPtr.Add(_memorySharp.Modules.MainModule.BaseAddress, (int)_scriptOffset); 94 | _newmem = _memorySharp.Memory.Allocate(128); 95 | _newmembase = _newmem.Information.AllocationBase; 96 | _flagmem = _memorySharp.Memory.Allocate(128); 97 | _flagmembase = _flagmem.Information.AllocationBase; 98 | var remoteASMstring = String.Format("mov ebp,[eax+0x40]\n" + "mov ebp,[ebp+0x0C]\n" + "cmp edi,3\n" + "jne 0x{0}\n" + "cmp BYTE [0x{2}], 1\n" + "je 0x{3}\n" + 99 | "mov DWORD [0x{4}], 0x200\n" + "and DWORD [0x{4}], eax\n" + "cmp DWORD [0x{4}], 0x200\n" + "jne 0x{0}\n" + "mov DWORD [0x{4}], eax\n" + "mov BYTE [0x{2}], 1\n" + "jmp 0x{0}\n" + 100 | "cmp DWORD [0x{4}], eax\n" + "jne 0x{0}\n" + "cmp BYTE [0x{1}],0\n" + "jne 0x{0}\n" + "mov ebp,[edx]\n" + "mov BYTE [0x{1}], 1\n" + "jmp 0x{0}", 101 | (_nonRelativeScriptOffset.ToInt32() + 6).ToString("X8"), _flagmembase.ToString("X8"), IntPtr.Add(_flagmembase,1).ToString("X8"), IntPtr.Add(_newmembase, 0x49).ToString("X8"), IntPtr.Add(_flagmembase,4).ToString("X8")); 102 | _remoteCodeAOB = _memorySharp.Assembly.Assembler.Assemble(remoteASMstring, _newmembase); 103 | _memorySharp.Write(_newmembase, _remoteCodeAOB, false); 104 | } 105 | 106 | public NameWakeupData GetDummy() 107 | { 108 | var index = _memorySharp.Read(_p2IdOffset); 109 | 110 | var result = _nameWakeupDataList[index]; 111 | 112 | return result; 113 | 114 | } 115 | 116 | public SlotInput SetInputInSlot(int slotNumber, string input) 117 | { 118 | List inputList = GetInputList(input); 119 | int wakeupFrameIndex = inputList.FindLastIndex(x => x.StartsWith(WakeUpFrameDelimiter.ToString())); 120 | 121 | if (wakeupFrameIndex < 0) 122 | { 123 | throw new Exception("No ! frame specified. See the readme for more information."); 124 | } 125 | 126 | IEnumerable inputShorts = GetInputShorts(inputList); 127 | 128 | var enumerable = inputShorts as short[] ?? inputShorts.ToArray(); 129 | OverwriteSlot(slotNumber, enumerable); 130 | 131 | return new SlotInput(input, enumerable, wakeupFrameIndex); 132 | } 133 | public void waitAndReversal(SlotInput slotInput, int wakeupTiming) 134 | { 135 | int fc = FrameCount(); 136 | var frames = wakeupTiming - slotInput.WakeupFrameIndex - 1; 137 | while (FrameCount() < fc + frames) 138 | { 139 | } 140 | lock (_memorySharp) 141 | { 142 | #if DEBUG 143 | Console.WriteLine("Reversal!"); 144 | #endif 145 | _memorySharp.Write(_flagmembase, 0, false); 146 | Thread.Sleep(320); //20 frames, approximately, it's actually 333.333333333 ms. Nobody should be able to be knocked down and get up in this time, causing the code to execute again. 147 | #if DEBUG 148 | Console.WriteLine("Reversal Wait Finished!"); 149 | #endif 150 | } 151 | } 152 | public void StartReversalLoop(SlotInput slotInput, Action errorAction = null) 153 | { 154 | lock (RunReversalThreadLock) 155 | { 156 | _runReversalThread = true; 157 | } 158 | 159 | Thread reversalThread = new Thread(() => 160 | { 161 | var currentDummy = GetDummy(); 162 | bool localRunReversalThread = true; 163 | _memorySharp.Write(_flagmembase, 1, false); 164 | _written = false; 165 | _memorySharp.Assembly.Inject(String.Format("jmp 0x{0}\nnop", _newmembase.ToString("X8")), _nonRelativeScriptOffset); 166 | while (localRunReversalThread) 167 | { 168 | try 169 | { 170 | int wakeupTiming = GetWakeupTiming(currentDummy); 171 | 172 | 173 | if (wakeupTiming != 0 && !_written) 174 | { 175 | waitAndReversal(slotInput, wakeupTiming); 176 | } 177 | } 178 | catch (Win32Exception) 179 | { 180 | errorAction?.Invoke(); 181 | } 182 | 183 | lock (RunReversalThreadLock) 184 | { 185 | localRunReversalThread = _runReversalThread; 186 | } 187 | 188 | Thread.Sleep(1); 189 | } 190 | 191 | #if DEBUG 192 | Console.WriteLine("reversalThread ended"); 193 | #endif 194 | }) 195 | { Name = "reversalThread" }; 196 | 197 | reversalThread.Start(); 198 | 199 | _memorySharp.Windows.MainWindow.Activate(); 200 | } 201 | 202 | public void StopReversalLoop() 203 | { 204 | lock (RunReversalThreadLock) 205 | { 206 | _runReversalThread = false; 207 | _memorySharp.Assembly.Inject(new string[] { "mov ebp,[eax+0x40]" , "mov ebp,[ebp+0x0C]" }, _nonRelativeScriptOffset); 208 | } 209 | } 210 | 211 | public bool CheckValidInput(string input) 212 | { 213 | if (string.IsNullOrEmpty(input)) 214 | { 215 | return false; 216 | } 217 | 218 | var inputList = GetInputList(input); 219 | 220 | 221 | 222 | return inputList.All(x => 223 | { 224 | Regex regex = new Regex(@"^!{0,1}[1-9][PKSHDpksdh]*(?:,|$)"); 225 | 226 | return regex.IsMatch(x); 227 | }) 228 | && inputList.Where(x => 229 | { 230 | Regex regex = new Regex(@"^!{1}[1-9][PKSHDpksdh]*(?:,|$)"); 231 | return regex.IsMatch(x); 232 | }).Count() == 1 233 | ; 234 | } 235 | 236 | #region Private 237 | private List GetInputList(string input) 238 | { 239 | Regex whitespaceregex = new Regex(@"\s+"); 240 | 241 | var text = whitespaceregex.Replace(input, ""); 242 | 243 | string[] splittext = text.Split(FrameDelimiter); 244 | 245 | return splittext.ToList(); 246 | } 247 | 248 | private IEnumerable GetInputShorts(List inputList) 249 | { 250 | List result = inputList.Select(x => 251 | { 252 | var value = SingleInputParse(x); 253 | 254 | if (value < 0) 255 | { 256 | throw new Exception("Invalid input with input '" + value + "'. Read the README for formatting information."); 257 | } 258 | 259 | return value; 260 | }).ToList(); 261 | 262 | int wakeupFrameIndex = inputList.FindLastIndex(x => x.StartsWith(WakeUpFrameDelimiter.ToString())); 263 | 264 | result[wakeupFrameIndex] -= WakeupFrameMask; 265 | 266 | return result; 267 | } 268 | 269 | private short SingleInputParse(string input) 270 | { 271 | Regex inputregex = new Regex(WakeUpFrameDelimiter + @"?[1-9]{1}[PKSHD]{0,5}"); 272 | 273 | int[] directions = { 0b0110, 0b0010, 0b1010, 0b0100, 0b0000, 0b1000, 0b0101, 0b0001, 0b1001 }; 274 | 275 | if (inputregex.IsMatch(input)) 276 | { 277 | var result = 0; 278 | if (input[0] == WakeUpFrameDelimiter) 279 | { 280 | result += WakeupFrameMask; 281 | input = input.Substring(1); 282 | } 283 | var direction = Int32.Parse(input.Substring(0, 1)); 284 | result |= directions[direction - 1]; 285 | if (input.Length == 1) 286 | { 287 | return (short)result; 288 | } 289 | var buttons = input.Substring(1).ToCharArray(); 290 | foreach (char button in buttons) 291 | { 292 | switch (button) 293 | { 294 | case 'P': 295 | case 'p': 296 | result |= (int)Buttons.P; 297 | break; 298 | case 'K': 299 | case 'k': 300 | result |= (int)Buttons.K; 301 | break; 302 | case 'S': 303 | case 's': 304 | result |= (int)Buttons.S; 305 | break; 306 | case 'H': 307 | case 'h': 308 | result |= (int)Buttons.H; 309 | break; 310 | case 'D': 311 | case 'd': 312 | result |= (int)Buttons.D; 313 | break; 314 | } 315 | } 316 | return (short)result; 317 | } 318 | else 319 | { 320 | return -1; 321 | } 322 | } 323 | 324 | private void OverwriteSlot(int slotNumber, IEnumerable inputs) 325 | { 326 | var ptr = _memorySharp[_recordingSlotPtr].Read(); 327 | 328 | 329 | var slotAddr = ptr + RecordingSlotSize * (slotNumber - 1); 330 | 331 | 332 | var inputList2 = inputs as short[] ?? inputs.ToArray(); 333 | var header2 = new List { 0, 0, (short)inputList2.Length, 0 }; 334 | 335 | _memorySharp.Write(slotAddr, header2.Concat(inputList2).ToArray(), false); 336 | 337 | } 338 | 339 | private string ReadAnimationString(int player) 340 | { 341 | if (player == 1) 342 | { 343 | var ptr = _memorySharp[_p1AnimStringPtr].Read(); 344 | 345 | return _memorySharp.ReadString(ptr + _p1AnimStringPtrOffset, false, 32); 346 | } 347 | 348 | if (player == 2) 349 | { 350 | var ptr = _memorySharp[_p2AnimStringPtr].Read(); 351 | 352 | return _memorySharp.ReadString(ptr + _p2AnimStringPtrOffset, false, 32); 353 | } 354 | 355 | return string.Empty; 356 | } 357 | 358 | private int FrameCount() 359 | { 360 | return _memorySharp.Read(_frameCountOffset); 361 | } 362 | private int GetWakeupTiming(NameWakeupData currentDummy) 363 | { 364 | var animationString = ReadAnimationString(2); 365 | 366 | if (animationString == FaceDownAnimation) 367 | { 368 | return currentDummy.FaceDownFrames; 369 | } 370 | if (animationString == FaceUpAnimation) 371 | { 372 | return currentDummy.FaceUpFrames; 373 | } 374 | 375 | return 0; 376 | 377 | } 378 | #endregion 379 | 380 | #region Dispose Members 381 | public void Dispose() 382 | { 383 | StopReversalLoop(); 384 | _memorySharp?.Dispose(); 385 | } 386 | #endregion 387 | 388 | 389 | } 390 | } 391 | -------------------------------------------------------------------------------- /GGXrdWakeupDPUtil.Library/ReversalType.cs: -------------------------------------------------------------------------------- 1 | namespace GGXrdWakeupDPUtil.Library 2 | { 3 | public enum ReversalType 4 | { 5 | WakeUp, 6 | BlockStun 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /GGXrdWakeupDPUtil.Library/SlotInput.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace GGXrdWakeupDPUtil.Library 4 | { 5 | public class SlotInput 6 | { 7 | public SlotInput(string input, IEnumerable inputShorts, int wakeupFrameIndex) 8 | { 9 | Input = input; 10 | InputList = inputShorts; 11 | WakeupFrameIndex = wakeupFrameIndex; 12 | } 13 | 14 | public string Input { get; set; } 15 | public IEnumerable InputList { get; set; } 16 | public int WakeupFrameIndex { get; set; } 17 | 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /GGXrdWakeupDPUtil.Library/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /GGXrdWakeupDPUtil.Test/App.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /GGXrdWakeupDPUtil.Test/Form1.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace GGXrdWakeupDPUtil.Test 2 | { 3 | partial class Form1 4 | { 5 | /// 6 | /// Variable nécessaire au concepteur. 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// Nettoyage des ressources utilisées. 12 | /// 13 | /// true si les ressources managées doivent être supprimées ; sinon, false. 14 | protected override void Dispose(bool disposing) 15 | { 16 | if (disposing && (components != null)) 17 | { 18 | components.Dispose(); 19 | } 20 | base.Dispose(disposing); 21 | } 22 | 23 | #region Code généré par le Concepteur Windows Form 24 | 25 | /// 26 | /// Méthode requise pour la prise en charge du concepteur - ne modifiez pas 27 | /// le contenu de cette méthode avec l'éditeur de code. 28 | /// 29 | private void InitializeComponent() 30 | { 31 | this.button1 = new System.Windows.Forms.Button(); 32 | this.button2 = new System.Windows.Forms.Button(); 33 | this.button3 = new System.Windows.Forms.Button(); 34 | this.button4 = new System.Windows.Forms.Button(); 35 | this.button5 = new System.Windows.Forms.Button(); 36 | this.button6 = new System.Windows.Forms.Button(); 37 | this.button7 = new System.Windows.Forms.Button(); 38 | this.textBox1 = new System.Windows.Forms.TextBox(); 39 | this.SuspendLayout(); 40 | // 41 | // button1 42 | // 43 | this.button1.Location = new System.Drawing.Point(28, 38); 44 | this.button1.Name = "button1"; 45 | this.button1.Size = new System.Drawing.Size(75, 23); 46 | this.button1.TabIndex = 0; 47 | this.button1.Text = "Get Dummy"; 48 | this.button1.UseVisualStyleBackColor = true; 49 | this.button1.Click += new System.EventHandler(this.button1_Click); 50 | // 51 | // button2 52 | // 53 | this.button2.Location = new System.Drawing.Point(137, 38); 54 | this.button2.Name = "button2"; 55 | this.button2.Size = new System.Drawing.Size(140, 23); 56 | this.button2.TabIndex = 1; 57 | this.button2.Text = "Add inputs in slot1"; 58 | this.button2.UseVisualStyleBackColor = true; 59 | this.button2.Click += new System.EventHandler(this.button2_Click); 60 | // 61 | // button3 62 | // 63 | this.button3.Location = new System.Drawing.Point(28, 86); 64 | this.button3.Name = "button3"; 65 | this.button3.Size = new System.Drawing.Size(75, 23); 66 | this.button3.TabIndex = 2; 67 | this.button3.Text = "Replay"; 68 | this.button3.UseVisualStyleBackColor = true; 69 | this.button3.Click += new System.EventHandler(this.button3_Click); 70 | // 71 | // button4 72 | // 73 | this.button4.Location = new System.Drawing.Point(297, 38); 74 | this.button4.Name = "button4"; 75 | this.button4.Size = new System.Drawing.Size(162, 23); 76 | this.button4.TabIndex = 3; 77 | this.button4.Text = "Add inputs in slot2"; 78 | this.button4.UseVisualStyleBackColor = true; 79 | this.button4.Click += new System.EventHandler(this.button4_Click); 80 | // 81 | // button5 82 | // 83 | this.button5.Location = new System.Drawing.Point(488, 38); 84 | this.button5.Name = "button5"; 85 | this.button5.Size = new System.Drawing.Size(132, 23); 86 | this.button5.TabIndex = 4; 87 | this.button5.Text = "Add inputs in slot3"; 88 | this.button5.UseVisualStyleBackColor = true; 89 | this.button5.Click += new System.EventHandler(this.button5_Click); 90 | // 91 | // button6 92 | // 93 | this.button6.Location = new System.Drawing.Point(137, 85); 94 | this.button6.Name = "button6"; 95 | this.button6.Size = new System.Drawing.Size(140, 23); 96 | this.button6.TabIndex = 5; 97 | this.button6.Text = "Reversal Loop"; 98 | this.button6.UseVisualStyleBackColor = true; 99 | this.button6.Click += new System.EventHandler(this.button6_Click); 100 | // 101 | // button7 102 | // 103 | this.button7.Enabled = false; 104 | this.button7.Location = new System.Drawing.Point(297, 85); 105 | this.button7.Name = "button7"; 106 | this.button7.Size = new System.Drawing.Size(162, 23); 107 | this.button7.TabIndex = 6; 108 | this.button7.Text = "Stop Reversal"; 109 | this.button7.UseVisualStyleBackColor = true; 110 | this.button7.Click += new System.EventHandler(this.button7_Click); 111 | // 112 | // textBox1 113 | // 114 | this.textBox1.Location = new System.Drawing.Point(174, 148); 115 | this.textBox1.Multiline = true; 116 | this.textBox1.Name = "textBox1"; 117 | this.textBox1.Size = new System.Drawing.Size(266, 73); 118 | this.textBox1.TabIndex = 7; 119 | // 120 | // Form1 121 | // 122 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 123 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 124 | this.ClientSize = new System.Drawing.Size(800, 450); 125 | this.Controls.Add(this.textBox1); 126 | this.Controls.Add(this.button7); 127 | this.Controls.Add(this.button6); 128 | this.Controls.Add(this.button5); 129 | this.Controls.Add(this.button4); 130 | this.Controls.Add(this.button3); 131 | this.Controls.Add(this.button2); 132 | this.Controls.Add(this.button1); 133 | this.Name = "Form1"; 134 | this.Text = "Form1"; 135 | this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.Form1_FormClosed); 136 | this.Load += new System.EventHandler(this.Form1_Load); 137 | this.ResumeLayout(false); 138 | this.PerformLayout(); 139 | 140 | } 141 | 142 | #endregion 143 | 144 | private System.Windows.Forms.Button button1; 145 | private System.Windows.Forms.Button button2; 146 | private System.Windows.Forms.Button button3; 147 | private System.Windows.Forms.Button button4; 148 | private System.Windows.Forms.Button button5; 149 | private System.Windows.Forms.Button button6; 150 | private System.Windows.Forms.Button button7; 151 | private System.Windows.Forms.TextBox textBox1; 152 | } 153 | } 154 | 155 | -------------------------------------------------------------------------------- /GGXrdWakeupDPUtil.Test/Form1.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Windows.Forms; 3 | using System.Windows.Threading; 4 | using GGXrdWakeupDPUtil.Library; 5 | 6 | namespace GGXrdWakeupDPUtil.Test 7 | { 8 | public partial class Form1 : Form 9 | { 10 | public Form1() 11 | { 12 | InitializeComponent(); 13 | } 14 | 15 | private ReversalTool _reversalTool; 16 | 17 | private void button1_Click(object sender, EventArgs e) 18 | { 19 | var dummy = _reversalTool.GetDummy(); 20 | 21 | MessageBox.Show($@"Current Dummy : {dummy.CharName}"); 22 | } 23 | 24 | private void Form1_Load(object sender, EventArgs e) 25 | { 26 | _reversalTool = new ReversalTool(); 27 | 28 | _reversalTool.AttachToProcess(); 29 | } 30 | 31 | private void Form1_FormClosed(object sender, FormClosedEventArgs e) 32 | { 33 | _reversalTool.Dispose(); 34 | } 35 | 36 | private void button3_Click(object sender, EventArgs e) 37 | { 38 | } 39 | 40 | 41 | 42 | private void button2_Click(object sender, EventArgs e) 43 | { 44 | _reversalTool.SetInputInSlot(1, textBox1.Text); 45 | } 46 | 47 | private void button4_Click(object sender, EventArgs e) 48 | { 49 | _reversalTool.SetInputInSlot(2, textBox1.Text); 50 | } 51 | 52 | private void button5_Click(object sender, EventArgs e) 53 | { 54 | _reversalTool.SetInputInSlot(3, textBox1.Text); 55 | } 56 | 57 | private void button6_Click(object sender, EventArgs e) 58 | { 59 | button6.Enabled = false; 60 | button7.Enabled = true; 61 | var slotInput = _reversalTool.SetInputInSlot(1, textBox1.Text); 62 | 63 | _reversalTool.StartReversalLoop(slotInput); 64 | } 65 | 66 | private void button7_Click(object sender, EventArgs e) 67 | { 68 | button6.Enabled = true; 69 | button7.Enabled = false; 70 | _reversalTool.StopReversalLoop(); 71 | } 72 | 73 | 74 | } 75 | } 76 | -------------------------------------------------------------------------------- /GGXrdWakeupDPUtil.Test/Form1.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 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 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | -------------------------------------------------------------------------------- /GGXrdWakeupDPUtil.Test/GGXrdWakeupDPUtil.Test.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {E0E43215-1358-4E08-861F-6E70197A6EE2} 8 | WinExe 9 | GGXrdWakeupDPUtil.Test 10 | GGXrdWakeupDPUtil.Test 11 | v4.5.2 12 | 512 13 | true 14 | 15 | 16 | x86 17 | true 18 | full 19 | false 20 | bin\Debug\ 21 | DEBUG;TRACE 22 | prompt 23 | 4 24 | 25 | 26 | x86 27 | pdbonly 28 | true 29 | bin\Release\ 30 | TRACE 31 | prompt 32 | 4 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | Form 51 | 52 | 53 | Form1.cs 54 | 55 | 56 | 57 | 58 | Form1.cs 59 | 60 | 61 | ResXFileCodeGenerator 62 | Resources.Designer.cs 63 | Designer 64 | 65 | 66 | True 67 | Resources.resx 68 | 69 | 70 | SettingsSingleFileGenerator 71 | Settings.Designer.cs 72 | 73 | 74 | True 75 | Settings.settings 76 | True 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | {A917CB67-743A-4E26-9C38-0EDEEE57D4CF} 85 | GGXrdWakeupDPUtil.Library 86 | 87 | 88 | 89 | -------------------------------------------------------------------------------- /GGXrdWakeupDPUtil.Test/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Windows.Forms; 3 | 4 | namespace GGXrdWakeupDPUtil.Test 5 | { 6 | static class Program 7 | { 8 | /// 9 | /// Point d'entrée principal de l'application. 10 | /// 11 | [STAThread] 12 | static void Main() 13 | { 14 | Application.EnableVisualStyles(); 15 | Application.SetCompatibleTextRenderingDefault(false); 16 | Application.Run(new Form1()); 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /GGXrdWakeupDPUtil.Test/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.InteropServices; 3 | 4 | // Les informations générales relatives à un assembly dépendent de 5 | // l'ensemble d'attributs suivant. Changez les valeurs de ces attributs pour modifier les informations 6 | // associées à un assembly. 7 | [assembly: AssemblyTitle("GGXrdWakeupDPUtil.Test")] 8 | [assembly: AssemblyDescription("")] 9 | [assembly: AssemblyConfiguration("")] 10 | [assembly: AssemblyCompany("")] 11 | [assembly: AssemblyProduct("GGXrdWakeupDPUtil.Test")] 12 | [assembly: AssemblyCopyright("Copyright © 2018")] 13 | [assembly: AssemblyTrademark("")] 14 | [assembly: AssemblyCulture("")] 15 | 16 | // L'affectation de la valeur false à ComVisible rend les types invisibles dans cet assembly 17 | // aux composants COM. Si vous devez accéder à un type dans cet assembly à partir de 18 | // COM, affectez la valeur true à l'attribut ComVisible sur ce type. 19 | [assembly: ComVisible(false)] 20 | 21 | // Le GUID suivant est pour l'ID de la typelib si ce projet est exposé à COM 22 | [assembly: Guid("e0e43215-1358-4e08-861f-6e70197a6ee2")] 23 | 24 | // Les informations de version pour un assembly se composent des quatre valeurs suivantes : 25 | // 26 | // Version principale 27 | // Version secondaire 28 | // Numéro de build 29 | // Révision 30 | // 31 | // Vous pouvez spécifier toutes les valeurs ou indiquer les numéros de build et de révision par défaut 32 | // en utilisant '*', comme indiqué ci-dessous : 33 | // [assembly: AssemblyVersion("1.0.*")] 34 | [assembly: AssemblyVersion("1.0.0.0")] 35 | [assembly: AssemblyFileVersion("1.0.0.0")] 36 | -------------------------------------------------------------------------------- /GGXrdWakeupDPUtil.Test/Properties/Resources.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // Ce code a été généré par un outil. 4 | // Version du runtime :4.0.30319.42000 5 | // 6 | // Les modifications apportées à ce fichier peuvent provoquer un comportement incorrect et seront perdues si 7 | // le code est régénéré. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace GGXrdWakeupDPUtil.Test.Properties 12 | { 13 | 14 | 15 | /// 16 | /// Une classe de ressource fortement typée destinée, entre autres, à la consultation des chaînes localisées. 17 | /// 18 | // Cette classe a été générée automatiquement par la classe StronglyTypedResourceBuilder 19 | // à l'aide d'un outil, tel que ResGen ou Visual Studio. 20 | // Pour ajouter ou supprimer un membre, modifiez votre fichier .ResX, puis réexécutez ResGen 21 | // avec l'option /str ou régénérez votre projet VS. 22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] 23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 25 | internal class Resources 26 | { 27 | 28 | private static global::System.Resources.ResourceManager resourceMan; 29 | 30 | private static global::System.Globalization.CultureInfo resourceCulture; 31 | 32 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 33 | internal Resources() 34 | { 35 | } 36 | 37 | /// 38 | /// Retourne l'instance ResourceManager mise en cache utilisée par cette classe. 39 | /// 40 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 41 | internal static global::System.Resources.ResourceManager ResourceManager 42 | { 43 | get 44 | { 45 | if ((resourceMan == null)) 46 | { 47 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("GGXrdWakeupDPUtil.Test.Properties.Resources", typeof(Resources).Assembly); 48 | resourceMan = temp; 49 | } 50 | return resourceMan; 51 | } 52 | } 53 | 54 | /// 55 | /// Remplace la propriété CurrentUICulture du thread actuel pour toutes 56 | /// les recherches de ressources à l'aide de cette classe de ressource fortement typée. 57 | /// 58 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 59 | internal static global::System.Globalization.CultureInfo Culture 60 | { 61 | get 62 | { 63 | return resourceCulture; 64 | } 65 | set 66 | { 67 | resourceCulture = value; 68 | } 69 | } 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /GGXrdWakeupDPUtil.Test/Properties/Resources.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 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 | text/microsoft-resx 107 | 108 | 109 | 2.0 110 | 111 | 112 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 113 | 114 | 115 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | -------------------------------------------------------------------------------- /GGXrdWakeupDPUtil.Test/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace GGXrdWakeupDPUtil.Test.Properties 12 | { 13 | 14 | 15 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 16 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] 17 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase 18 | { 19 | 20 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 21 | 22 | public static Settings Default 23 | { 24 | get 25 | { 26 | return defaultInstance; 27 | } 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /GGXrdWakeupDPUtil.Test/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /GGXrdWakeupDPUtil.UnitTests/GGXrdWakeupDPUtil.UnitTests.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | Debug 7 | AnyCPU 8 | {C82809DD-084B-4C73-80F4-F3A87EA37382} 9 | Library 10 | Properties 11 | GGXrdWakeupDPUtil.UnitTests 12 | GGXrdWakeupDPUtil.UnitTests 13 | v4.5.2 14 | 512 15 | 16 | 17 | 18 | 19 | true 20 | full 21 | false 22 | bin\Debug\ 23 | DEBUG;TRACE 24 | prompt 25 | 4 26 | 27 | 28 | pdbonly 29 | true 30 | bin\Release\ 31 | TRACE 32 | prompt 33 | 4 34 | 35 | 36 | 37 | ..\packages\NUnit.3.10.1\lib\net45\nunit.framework.dll 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | {a917cb67-743a-4e26-9c38-0edeee57d4cf} 59 | GGXrdWakeupDPUtil.Library 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | Ce projet fait référence à des packages NuGet qui sont manquants sur cet ordinateur. Utilisez l'option de restauration des packages NuGet pour les télécharger. Pour plus d'informations, consultez http://go.microsoft.com/fwlink/?LinkID=322105. Le fichier manquant est : {0}. 69 | 70 | 71 | 72 | -------------------------------------------------------------------------------- /GGXrdWakeupDPUtil.UnitTests/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // Les informations générales relatives à un assembly dépendent de 6 | // l'ensemble d'attributs suivant. Changez les valeurs de ces attributs pour modifier les informations 7 | // associées à un assembly. 8 | [assembly: AssemblyTitle("GGXrdWakeupDPUtil.UnitTests")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("GGXrdWakeupDPUtil.UnitTests")] 13 | [assembly: AssemblyCopyright("Copyright © 2018")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // L'affectation de la valeur false à ComVisible rend les types invisibles dans cet assembly 18 | // aux composants COM. Si vous devez accéder à un type dans cet assembly à partir de 19 | // COM, affectez la valeur true à l'attribut ComVisible sur ce type. 20 | [assembly: ComVisible(false)] 21 | 22 | // Le GUID suivant est pour l'ID de la typelib si ce projet est exposé à COM 23 | [assembly: Guid("c82809dd-084b-4c73-80f4-f3a87ea37382")] 24 | 25 | // Les informations de version pour un assembly se composent des quatre valeurs suivantes : 26 | // 27 | // Version principale 28 | // Version secondaire 29 | // Numéro de build 30 | // Révision 31 | // 32 | // Vous pouvez spécifier toutes les valeurs ou indiquer les numéros de build et de révision par défaut 33 | // en utilisant '*', comme indiqué ci-dessous : 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /GGXrdWakeupDPUtil.UnitTests/ReversalToolTests.cs: -------------------------------------------------------------------------------- 1 | using System.Windows.Threading; 2 | using GGXrdWakeupDPUtil.Library; 3 | using NUnit.Framework; 4 | 5 | namespace GGXrdWakeupDPUtil.UnitTests 6 | { 7 | [TestFixture] 8 | public class ReversalToolTests 9 | { 10 | [TestCase("6,2,!3H", true)] 11 | [TestCase("6,2,!3h", true)] 12 | [TestCase("!6,2,!3H", false)] 13 | [TestCase("6,,!3H", false)] 14 | [TestCase("6,2,!3PKSHD", true)] 15 | [TestCase("6,2,3H", false)] 16 | [TestCase("64,2,!3H", false)] 17 | public void CheckValidInput_Test(string input, bool isValid) 18 | { 19 | //Arrange 20 | ReversalTool reversalTool = new ReversalTool(); 21 | 22 | //Act 23 | var result = reversalTool.CheckValidInput(input); 24 | 25 | //Assert 26 | 27 | Assert.AreEqual(isValid, result); 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /GGXrdWakeupDPUtil.UnitTests/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /GGXrdWakeupDPUtil.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 15 4 | VisualStudioVersion = 15.0.26430.12 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GGXrdWakeupDPUtil", "GGXrdWakeupDPUtil\GGXrdWakeupDPUtil.csproj", "{22A91F28-F083-4E8D-95B4-D084781033C4}" 7 | EndProject 8 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GGXrdWakeupDPUtil.Library", "GGXrdWakeupDPUtil.Library\GGXrdWakeupDPUtil.Library.csproj", "{A917CB67-743A-4E26-9C38-0EDEEE57D4CF}" 9 | EndProject 10 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GGXrdWakeupDPUtil.Test", "GGXrdWakeupDPUtil.Test\GGXrdWakeupDPUtil.Test.csproj", "{E0E43215-1358-4E08-861F-6E70197A6EE2}" 11 | EndProject 12 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GGXrdWakeupDPUtil.UnitTests", "GGXrdWakeupDPUtil.UnitTests\GGXrdWakeupDPUtil.UnitTests.csproj", "{C82809DD-084B-4C73-80F4-F3A87EA37382}" 13 | EndProject 14 | Global 15 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 16 | Debug|Any CPU = Debug|Any CPU 17 | Debug|x64 = Debug|x64 18 | Debug|x86 = Debug|x86 19 | Release|Any CPU = Release|Any CPU 20 | Release|x64 = Release|x64 21 | Release|x86 = Release|x86 22 | EndGlobalSection 23 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 24 | {22A91F28-F083-4E8D-95B4-D084781033C4}.Debug|Any CPU.ActiveCfg = Debug|x86 25 | {22A91F28-F083-4E8D-95B4-D084781033C4}.Debug|Any CPU.Build.0 = Debug|x86 26 | {22A91F28-F083-4E8D-95B4-D084781033C4}.Debug|x64.ActiveCfg = Debug|x64 27 | {22A91F28-F083-4E8D-95B4-D084781033C4}.Debug|x64.Build.0 = Debug|x64 28 | {22A91F28-F083-4E8D-95B4-D084781033C4}.Debug|x86.ActiveCfg = Debug|x86 29 | {22A91F28-F083-4E8D-95B4-D084781033C4}.Debug|x86.Build.0 = Debug|x86 30 | {22A91F28-F083-4E8D-95B4-D084781033C4}.Release|Any CPU.ActiveCfg = Release|Any CPU 31 | {22A91F28-F083-4E8D-95B4-D084781033C4}.Release|Any CPU.Build.0 = Release|Any CPU 32 | {22A91F28-F083-4E8D-95B4-D084781033C4}.Release|x64.ActiveCfg = Release|x64 33 | {22A91F28-F083-4E8D-95B4-D084781033C4}.Release|x64.Build.0 = Release|x64 34 | {22A91F28-F083-4E8D-95B4-D084781033C4}.Release|x86.ActiveCfg = Release|x86 35 | {22A91F28-F083-4E8D-95B4-D084781033C4}.Release|x86.Build.0 = Release|x86 36 | {A917CB67-743A-4E26-9C38-0EDEEE57D4CF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 37 | {A917CB67-743A-4E26-9C38-0EDEEE57D4CF}.Debug|Any CPU.Build.0 = Debug|Any CPU 38 | {A917CB67-743A-4E26-9C38-0EDEEE57D4CF}.Debug|x64.ActiveCfg = Debug|Any CPU 39 | {A917CB67-743A-4E26-9C38-0EDEEE57D4CF}.Debug|x64.Build.0 = Debug|Any CPU 40 | {A917CB67-743A-4E26-9C38-0EDEEE57D4CF}.Debug|x86.ActiveCfg = Debug|Any CPU 41 | {A917CB67-743A-4E26-9C38-0EDEEE57D4CF}.Debug|x86.Build.0 = Debug|Any CPU 42 | {A917CB67-743A-4E26-9C38-0EDEEE57D4CF}.Release|Any CPU.ActiveCfg = Release|Any CPU 43 | {A917CB67-743A-4E26-9C38-0EDEEE57D4CF}.Release|Any CPU.Build.0 = Release|Any CPU 44 | {A917CB67-743A-4E26-9C38-0EDEEE57D4CF}.Release|x64.ActiveCfg = Release|Any CPU 45 | {A917CB67-743A-4E26-9C38-0EDEEE57D4CF}.Release|x64.Build.0 = Release|Any CPU 46 | {A917CB67-743A-4E26-9C38-0EDEEE57D4CF}.Release|x86.ActiveCfg = Release|Any CPU 47 | {A917CB67-743A-4E26-9C38-0EDEEE57D4CF}.Release|x86.Build.0 = Release|Any CPU 48 | {E0E43215-1358-4E08-861F-6E70197A6EE2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 49 | {E0E43215-1358-4E08-861F-6E70197A6EE2}.Debug|Any CPU.Build.0 = Debug|Any CPU 50 | {E0E43215-1358-4E08-861F-6E70197A6EE2}.Debug|x64.ActiveCfg = Debug|Any CPU 51 | {E0E43215-1358-4E08-861F-6E70197A6EE2}.Debug|x64.Build.0 = Debug|Any CPU 52 | {E0E43215-1358-4E08-861F-6E70197A6EE2}.Debug|x86.ActiveCfg = Debug|Any CPU 53 | {E0E43215-1358-4E08-861F-6E70197A6EE2}.Debug|x86.Build.0 = Debug|Any CPU 54 | {E0E43215-1358-4E08-861F-6E70197A6EE2}.Release|Any CPU.ActiveCfg = Release|Any CPU 55 | {E0E43215-1358-4E08-861F-6E70197A6EE2}.Release|Any CPU.Build.0 = Release|Any CPU 56 | {E0E43215-1358-4E08-861F-6E70197A6EE2}.Release|x64.ActiveCfg = Release|Any CPU 57 | {E0E43215-1358-4E08-861F-6E70197A6EE2}.Release|x64.Build.0 = Release|Any CPU 58 | {E0E43215-1358-4E08-861F-6E70197A6EE2}.Release|x86.ActiveCfg = Release|Any CPU 59 | {E0E43215-1358-4E08-861F-6E70197A6EE2}.Release|x86.Build.0 = Release|Any CPU 60 | {C82809DD-084B-4C73-80F4-F3A87EA37382}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 61 | {C82809DD-084B-4C73-80F4-F3A87EA37382}.Debug|Any CPU.Build.0 = Debug|Any CPU 62 | {C82809DD-084B-4C73-80F4-F3A87EA37382}.Debug|x64.ActiveCfg = Debug|Any CPU 63 | {C82809DD-084B-4C73-80F4-F3A87EA37382}.Debug|x64.Build.0 = Debug|Any CPU 64 | {C82809DD-084B-4C73-80F4-F3A87EA37382}.Debug|x86.ActiveCfg = Debug|Any CPU 65 | {C82809DD-084B-4C73-80F4-F3A87EA37382}.Debug|x86.Build.0 = Debug|Any CPU 66 | {C82809DD-084B-4C73-80F4-F3A87EA37382}.Release|Any CPU.ActiveCfg = Release|Any CPU 67 | {C82809DD-084B-4C73-80F4-F3A87EA37382}.Release|Any CPU.Build.0 = Release|Any CPU 68 | {C82809DD-084B-4C73-80F4-F3A87EA37382}.Release|x64.ActiveCfg = Release|Any CPU 69 | {C82809DD-084B-4C73-80F4-F3A87EA37382}.Release|x64.Build.0 = Release|Any CPU 70 | {C82809DD-084B-4C73-80F4-F3A87EA37382}.Release|x86.ActiveCfg = Release|Any CPU 71 | {C82809DD-084B-4C73-80F4-F3A87EA37382}.Release|x86.Build.0 = Release|Any CPU 72 | EndGlobalSection 73 | GlobalSection(SolutionProperties) = preSolution 74 | HideSolutionNode = FALSE 75 | EndGlobalSection 76 | GlobalSection(ExtensibilityGlobals) = postSolution 77 | SolutionGuid = {87F11B8C-F050-49E2-9EFB-75D3E48A3086} 78 | EndGlobalSection 79 | EndGlobal 80 | -------------------------------------------------------------------------------- /GGXrdWakeupDPUtil/App.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /GGXrdWakeupDPUtil/App.xaml: -------------------------------------------------------------------------------- 1 |  5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /GGXrdWakeupDPUtil/App.xaml.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | 3 | namespace GGXrdWakeupDPUtil 4 | { 5 | /// 6 | /// Interaction logic for App.xaml 7 | /// 8 | public partial class App 9 | { 10 | 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /GGXrdWakeupDPUtil/GGXrdWakeupDPUtil.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {22A91F28-F083-4E8D-95B4-D084781033C4} 8 | WinExe 9 | GGXrdWakeupDPUtil 10 | GGXrdWakeupDPUtil 11 | v4.5.2 12 | 512 13 | {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} 14 | 4 15 | true 16 | publish\ 17 | true 18 | Disk 19 | false 20 | Foreground 21 | 7 22 | Days 23 | false 24 | false 25 | true 26 | 0 27 | 1.0.0.%2a 28 | false 29 | false 30 | true 31 | 32 | 33 | x86 34 | true 35 | full 36 | false 37 | bin\Debug\ 38 | DEBUG;TRACE 39 | prompt 40 | 4 41 | 42 | 43 | x86 44 | pdbonly 45 | true 46 | bin\Release\ 47 | TRACE 48 | prompt 49 | 4 50 | 51 | 52 | true 53 | bin\x86\Debug\ 54 | DEBUG;TRACE 55 | full 56 | x86 57 | prompt 58 | MinimumRecommendedRules.ruleset 59 | true 60 | 61 | 62 | bin\x86\Release\ 63 | TRACE 64 | true 65 | pdbonly 66 | x86 67 | prompt 68 | MinimumRecommendedRules.ruleset 69 | true 70 | 71 | 72 | true 73 | bin\x64\Debug\ 74 | DEBUG;TRACE 75 | full 76 | x64 77 | prompt 78 | MinimumRecommendedRules.ruleset 79 | true 80 | 81 | 82 | bin\x64\Release\ 83 | TRACE 84 | true 85 | pdbonly 86 | x64 87 | prompt 88 | MinimumRecommendedRules.ruleset 89 | true 90 | 91 | 92 | haehead_Jpy_icon.ico 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 4.0 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | MSBuild:Compile 114 | Designer 115 | 116 | 117 | Window1.xaml 118 | 119 | 120 | App.xaml 121 | Code 122 | 123 | 124 | Designer 125 | MSBuild:Compile 126 | 127 | 128 | 129 | 130 | Code 131 | 132 | 133 | True 134 | True 135 | Resources.resx 136 | 137 | 138 | True 139 | Settings.settings 140 | True 141 | 142 | 143 | ResXFileCodeGenerator 144 | Resources.Designer.cs 145 | 146 | 147 | SettingsSingleFileGenerator 148 | Settings.Designer.cs 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | False 157 | Microsoft .NET Framework 4.5.2 %28x86 and x64%29 158 | true 159 | 160 | 161 | False 162 | .NET Framework 3.5 SP1 163 | false 164 | 165 | 166 | 167 | 168 | {a917cb67-743a-4e26-9c38-0edeee57d4cf} 169 | GGXrdWakeupDPUtil.Library 170 | 171 | 172 | 173 | 174 | 175 | 176 | -------------------------------------------------------------------------------- /GGXrdWakeupDPUtil/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.InteropServices; 3 | using System.Windows; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("GGXrdWakeupDPUtil")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("GGXrdWakeupDPUtil")] 13 | [assembly: AssemblyCopyright("Copyright © 2017")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | //In order to begin building localizable applications, set 23 | //CultureYouAreCodingWith in your .csproj file 24 | //inside a . For example, if you are using US english 25 | //in your source files, set the to en-US. Then uncomment 26 | //the NeutralResourceLanguage attribute below. Update the "en-US" in 27 | //the line below to match the UICulture setting in the project file. 28 | 29 | //[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)] 30 | 31 | 32 | [assembly: ThemeInfo( 33 | ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located 34 | //(used if a resource is not found in the page, 35 | // or application resource dictionaries) 36 | ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located 37 | //(used if a resource is not found in the page, 38 | // app, or any theme specific resource dictionaries) 39 | )] 40 | 41 | 42 | // Version information for an assembly consists of the following four values: 43 | // 44 | // Major Version 45 | // Minor Version 46 | // Build Number 47 | // Revision 48 | // 49 | // You can specify all the values or you can default the Build and Revision Numbers 50 | // by using the '*' as shown below: 51 | // [assembly: AssemblyVersion("1.0.*")] 52 | [assembly: AssemblyVersion("1.0.0.0")] 53 | [assembly: AssemblyFileVersion("1.0.0.0")] 54 | -------------------------------------------------------------------------------- /GGXrdWakeupDPUtil/Properties/Resources.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace GGXrdWakeupDPUtil.Properties 12 | { 13 | 14 | 15 | /// 16 | /// A strongly-typed resource class, for looking up localized strings, etc. 17 | /// 18 | // This class was auto-generated by the StronglyTypedResourceBuilder 19 | // class via a tool like ResGen or Visual Studio. 20 | // To add or remove a member, edit your .ResX file then rerun ResGen 21 | // with the /str option, or rebuild your VS project. 22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] 23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 25 | internal class Resources 26 | { 27 | 28 | private static global::System.Resources.ResourceManager resourceMan; 29 | 30 | private static global::System.Globalization.CultureInfo resourceCulture; 31 | 32 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 33 | internal Resources() 34 | { 35 | } 36 | 37 | /// 38 | /// Returns the cached ResourceManager instance used by this class. 39 | /// 40 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 41 | internal static global::System.Resources.ResourceManager ResourceManager 42 | { 43 | get 44 | { 45 | if ((resourceMan == null)) 46 | { 47 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("GGXrdWakeupDPUtil.Properties.Resources", typeof(Resources).Assembly); 48 | resourceMan = temp; 49 | } 50 | return resourceMan; 51 | } 52 | } 53 | 54 | /// 55 | /// Overrides the current thread's CurrentUICulture property for all 56 | /// resource lookups using this strongly typed resource class. 57 | /// 58 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 59 | internal static global::System.Globalization.CultureInfo Culture 60 | { 61 | get 62 | { 63 | return resourceCulture; 64 | } 65 | set 66 | { 67 | resourceCulture = value; 68 | } 69 | } 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /GGXrdWakeupDPUtil/Properties/Resources.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 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 | text/microsoft-resx 107 | 108 | 109 | 2.0 110 | 111 | 112 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 113 | 114 | 115 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | -------------------------------------------------------------------------------- /GGXrdWakeupDPUtil/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace GGXrdWakeupDPUtil.Properties 12 | { 13 | 14 | 15 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 16 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] 17 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase 18 | { 19 | 20 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 21 | 22 | public static Settings Default 23 | { 24 | get 25 | { 26 | return defaultInstance; 27 | } 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /GGXrdWakeupDPUtil/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /GGXrdWakeupDPUtil/Window1.xaml: -------------------------------------------------------------------------------- 1 |  8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 |