├── resume.ico ├── ResumeBoostState.cs ├── ResumeBoost.csproj.user ├── ResumeBoost.csproj ├── ScriptsConstants.cs ├── ResumeBoost.sln ├── README.md ├── Program.cs ├── StartupHelper.cs ├── .gitignore ├── Form1.Designer.cs ├── Form1.cs └── Form1.resx /resume.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Akilaydin/ResumeBoost/HEAD/resume.ico -------------------------------------------------------------------------------- /ResumeBoostState.cs: -------------------------------------------------------------------------------- 1 | namespace OriApps.ResumeBoost 2 | { 3 | public enum ResumeBoostState 4 | { 5 | Initializing, 6 | CheckingAuthorization, 7 | CheckingResumes, 8 | BoostingResumes, 9 | WaitingForNextCycle 10 | } 11 | } -------------------------------------------------------------------------------- /ResumeBoost.csproj.user: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Form 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /ResumeBoost.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | WinExe 5 | net9.0-windows 6 | enable 7 | true 8 | enable 9 | resume.ico 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /ScriptsConstants.cs: -------------------------------------------------------------------------------- 1 | namespace OriApps.ResumeBoost 2 | { 3 | public class ScriptsConstants 4 | { 5 | public const string AuthorizationCheckScript = @"(function check_auth() { return document.querySelectorAll('[data-qa=""mainmenu_profileAndResumes""]').length; })();"; 6 | 7 | public const string FindResumeScript = @"(function check_resumes_col() { return document.querySelectorAll('[data-qa^=""resume-update-button""]').length; })();"; 8 | 9 | public const string UpdateResumeScript = @" (function update_resumes() { 10 | const buttons = document.querySelectorAll('[data-qa^=""resume-update-button""]'); 11 | buttons.forEach(btn => btn.click()); 12 | return buttons.length; 13 | })();"; 14 | } 15 | } -------------------------------------------------------------------------------- /ResumeBoost.sln: -------------------------------------------------------------------------------- 1 | 2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ResumeBoost", "ResumeBoost.csproj", "{9313B0D7-C6AA-4824-85FB-3C5D66C4CB97}" 4 | EndProject 5 | Global 6 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 7 | Debug|Any CPU = Debug|Any CPU 8 | Release|Any CPU = Release|Any CPU 9 | EndGlobalSection 10 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 11 | {9313B0D7-C6AA-4824-85FB-3C5D66C4CB97}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 12 | {9313B0D7-C6AA-4824-85FB-3C5D66C4CB97}.Debug|Any CPU.Build.0 = Debug|Any CPU 13 | {9313B0D7-C6AA-4824-85FB-3C5D66C4CB97}.Release|Any CPU.ActiveCfg = Release|Any CPU 14 | {9313B0D7-C6AA-4824-85FB-3C5D66C4CB97}.Release|Any CPU.Build.0 = Release|Any CPU 15 | EndGlobalSection 16 | EndGlobal 17 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## 📌 **О проекте** 2 | **ResumeBoost** — это приложение для автоматического поднятия резюме на сайте hh.ru. 3 | 4 | Оригинальная версия программы была написана на C++ и находится здесь: 5 | [HH-Resumes-Updater](https://github.com/Alexell/HH-Resumes-Updater) 6 | 7 | Я переписал её на C#, потому что старая версия перестала работать из-за обновлений на сайте hh.ru. 8 | 9 | ## 🚀 **Функции** 10 | ✔ Автоматическое поднятие резюме 11 | ✔ Работа в фоновом режиме (свертывание в трей или полное сокрытие) 12 | ✔ Автозапуск 13 | 14 | ## 🎯 **Как использовать** 15 | 1. Запустите программу. 16 | 2. Авторизуйтесь на hh.ru во встроенном браузере и перейдите на страницу с резюме. 17 | 3. Программа автоматически начнет процесс поднятия резюме. 18 | 19 | ## 📝 **Дополнительно** 20 | - Для работы программы скорее всего будет необходим **WebView2 Runtime** ([скачать](https://developer.microsoft.com/en-us/microsoft-edge/webview2/)). 21 | - Нажатие на сворачивание убирает программу в трей. Нажатие на крестик закрывает программу. 22 | - Чтобы открыть программу заново, можно запустить ее из трея, или заново запустив .exe файл. Это не откроет второй экземпляр приложения, а покажет изначальный. 23 | - Если вы не авторизованы, то программа будет постоянно разворачиваться, чтобы вы авторизовались. 24 | - Файл имеет большой размер, потому что в него включены все необходимые библиотеки и .NET рантайм и он полностью автономен. 25 | -------------------------------------------------------------------------------- /Program.cs: -------------------------------------------------------------------------------- 1 | using System.Runtime.InteropServices; 2 | 3 | namespace OriApps.ResumeBoost; 4 | 5 | static class Program 6 | { 7 | [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Unicode)] 8 | private static extern IntPtr FindWindow(string? lpClassName, string? lpWindowName); 9 | 10 | [DllImport("user32.dll")] 11 | private static extern bool PostMessage(IntPtr hWnd, int Msg, IntPtr wParam, IntPtr lParam); 12 | 13 | private static Mutex? _mutex; 14 | 15 | /// 16 | /// The main entry point for the application. 17 | /// 18 | [STAThread] 19 | static void Main() 20 | { 21 | if (TryPreventSecondInstance()) 22 | { 23 | return; 24 | } 25 | 26 | // To customize application configuration such as set high DPI settings or default font, 27 | // see https://aka.ms/applicationconfiguration. 28 | ApplicationConfiguration.Initialize(); 29 | Application.Run(new MainForm()); 30 | } 31 | 32 | private static bool TryPreventSecondInstance() 33 | { 34 | _mutex = new Mutex(true, "OriApps.ResumeBoost.Mutex", out bool createdNew); 35 | 36 | if (!createdNew) 37 | { 38 | IntPtr hWnd = FindWindow(null, "Resume Boost"); 39 | if (hWnd != IntPtr.Zero) 40 | { 41 | PostMessage(hWnd, MainForm.WM_SHOWMAIN, IntPtr.Zero, IntPtr.Zero); 42 | } 43 | 44 | return true; 45 | } 46 | 47 | return false; 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /StartupHelper.cs: -------------------------------------------------------------------------------- 1 | // ReSharper disable LocalizableElement 2 | namespace OriApps.ResumeBoost 3 | { 4 | using Microsoft.Win32; 5 | 6 | public static class StartupHelper 7 | { 8 | private const string RegistryKey = @"Software\Microsoft\Windows\CurrentVersion\Run"; 9 | private const string AppName = "ResumeBoost"; 10 | 11 | private const string MinimizedRegistryKey = @"Software\" + AppName; 12 | private const string MinimizedValueName = "StartMinimized"; 13 | private const string HideTrayValueName = "HideTray"; 14 | 15 | public static void EnableAutoStart() 16 | { 17 | string exePath = Application.ExecutablePath; 18 | 19 | try 20 | { 21 | using var key = Registry.CurrentUser.OpenSubKey(RegistryKey, true); 22 | 23 | key?.SetValue(AppName, $"\"{exePath}\""); 24 | 25 | } 26 | catch (Exception ex) 27 | { 28 | MessageBox.Show($"Ошибка при добавлении в автозапуск: {ex.Message}", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); 29 | } 30 | } 31 | 32 | public static void DisableAutoStart() 33 | { 34 | try 35 | { 36 | using var key = Registry.CurrentUser.OpenSubKey(RegistryKey, true); 37 | 38 | key?.DeleteValue(AppName, false); 39 | 40 | } 41 | catch (Exception ex) 42 | { 43 | MessageBox.Show($"Ошибка при удалении из автозапуска: {ex.Message}", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); 44 | } 45 | } 46 | 47 | public static bool IsAutoStartEnabled() 48 | { 49 | using var key = Registry.CurrentUser.OpenSubKey(RegistryKey, false); 50 | 51 | return key?.GetValue(AppName) != null; 52 | } 53 | 54 | public static void SetStartMinimized(bool value) 55 | { 56 | using var key = Registry.CurrentUser.CreateSubKey(MinimizedRegistryKey); 57 | 58 | key.SetValue(MinimizedValueName, value ? 1 : 0); 59 | } 60 | 61 | public static bool IsStartMinimizedEnabled() 62 | { 63 | using var key = Registry.CurrentUser.OpenSubKey(MinimizedRegistryKey); 64 | 65 | return key?.GetValue(MinimizedValueName, 0) is 1; 66 | } 67 | 68 | public static void SetTrayIconHidden(bool value) 69 | { 70 | using var key = Registry.CurrentUser.CreateSubKey(MinimizedRegistryKey); 71 | 72 | key.SetValue(HideTrayValueName, value ? 1 : 0); 73 | } 74 | 75 | public static bool IsTrayIconHidden() 76 | { 77 | using var key = Registry.CurrentUser.OpenSubKey(MinimizedRegistryKey); 78 | 79 | return key?.GetValue(HideTrayValueName, 0) is 1; 80 | } 81 | } 82 | } -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # User-specific files 2 | *.suo 3 | *.user 4 | *.userosscache 5 | *.sln.docstates 6 | 7 | # Build results 8 | [Dd]ebug/ 9 | [Rr]elease/ 10 | x64/ 11 | x86/ 12 | [Bb]in/ 13 | [Oo]bj/ 14 | 15 | # Visual Studio cache/options directory 16 | .vs/ 17 | .vscode/ 18 | 19 | # MSTest test results 20 | [Tt]est[Rr]esult*/ 21 | [Bb]uild[Ll]og.* 22 | 23 | # NUNIT 24 | *.VisualState.xml 25 | TestResult.xml 26 | 27 | # Build results of an ATL project 28 | [Dd]ebugPS/ 29 | [Rr]eleasePS/ 30 | dlldata.c 31 | 32 | # Benchmark results 33 | BenchmarkDotNet.Artifacts/ 34 | 35 | # .NET Core 36 | project.lock.json 37 | project.fragment.lock.json 38 | artifacts/ 39 | .dotnet/ 40 | 41 | # StyleCop 42 | StyleCopReport.xml 43 | 44 | # Files built by Visual Studio 45 | *_i.c 46 | *_p.c 47 | *_i.h 48 | *.ilk 49 | *.meta 50 | *.obj 51 | *.iobj 52 | *.pch 53 | *.pdb 54 | *.ipdb 55 | *.pgc 56 | *.pgd 57 | *.rsp 58 | *.sbr 59 | *.tlb 60 | *.tli 61 | *.tlh 62 | *.tmp 63 | *.tmp_proj 64 | *.log 65 | *.vspscc 66 | *.vssscc 67 | .builds 68 | *.pidb 69 | *.svclog 70 | *.scc 71 | 72 | # Chutzpah test files 73 | _Chutzpah* 74 | 75 | # Visual C++ cache files 76 | ipch/ 77 | *.aps 78 | *.ncb 79 | *.opendb 80 | *.opensdf 81 | *.sdf 82 | *.cachefile 83 | *.VC.db 84 | *.VC.VC.opendb 85 | 86 | # Visual Studio profiler 87 | *.psess 88 | *.vsp 89 | *.vspx 90 | *.sap 91 | 92 | # Visual Studio trace files 93 | *.e2e 94 | 95 | # TFS 2012 local workspace 96 | $tf/ 97 | 98 | # Guidance Automation Toolkit 99 | *.gpState 100 | 101 | # ReSharper is a .NET coding add-in 102 | _ReSharper*/ 103 | *.[Rr]e[Ss]harper 104 | *.DotSettings.user 105 | 106 | # JustCode is a .NET coding add-in 107 | .JustCode 108 | 109 | # TeamCity is a build add-in 110 | _TeamCity* 111 | 112 | # DotCover is a code coverage tool 113 | *.dotCover 114 | 115 | # AxoCover is a code coverage tool 116 | .axoCover/* 117 | !.axoCover/settings.json 118 | 119 | # Visual Studio code coverage results 120 | *.coverage 121 | *.coveragexml 122 | 123 | # Visual Studio Code 124 | .vscode/* 125 | !.vscode/settings.json 126 | !.vscode/tasks.json 127 | !.vscode/launch.json 128 | !.vscode/extensions.json 129 | 130 | # NCrunch 131 | _NCrunch_* 132 | .*crunch*.local.xml 133 | nCrunchTemp_* 134 | 135 | # MightyMoose 136 | *.mm.* 137 | AutoTest.Net/ 138 | 139 | # Web workbench (sass) 140 | .sass-cache/ 141 | 142 | # Installshield output folder 143 | [Ee]xpress/ 144 | 145 | # DocProject is a documentation generator add-in 146 | DocProject/buildhelp/ 147 | DocProject/Help/*.HxT 148 | DocProject/Help/*.HxC 149 | DocProject/Help/*.hhc 150 | DocProject/Help/*.hhk 151 | DocProject/Help/*.hhp 152 | DocProject/Help/Html2 153 | DocProject/Help/html 154 | 155 | # Click-Once directory 156 | publish/ 157 | 158 | # Publish web output 159 | *.[Pp]ublish.xml 160 | *.azurePubxml 161 | 162 | # Note: Comment the next line if you want to check in your web deploy settings, 163 | # but database connection strings (with potential passwords) will be unencrypted 164 | *.pubxml 165 | *.publishproj 166 | 167 | # Microsoft Azure Web App publish settings. Comment the next line if you want to 168 | # check in your Azure Web App publish settings, but sensitive information contained 169 | # in these scripts will be unencrypted 170 | PublishScripts/ 171 | 172 | # NuGet packages 173 | *.nupkg 174 | 175 | # The packages folder can be ignored because of Package Restore 176 | **/[Pp]ackages/* 177 | 178 | # Except build/, which is used as an MSBuild target. 179 | !**/[Pp]ackages/build/ 180 | 181 | # Uncomment if necessary; however, generally it will be regenerated when needed 182 | #!**/[Pp]ackages/repositories.config 183 | 184 | # NuGet v3's project.json files produce more ignorable files 185 | *.nuget.props 186 | *.nuget.targets 187 | 188 | # Microsoft Azure build output 189 | csx/ 190 | *.build.csdef 191 | 192 | # Microsoft Azure emulator 193 | ecf/ 194 | rcf/ 195 | 196 | # Windows Store app package directories and files 197 | AppPackages/ 198 | BundleArtifacts/ 199 | Package.StoreAssociation.xml 200 | _pkginfo.txt 201 | *.appx 202 | 203 | # Visual Studio cache files 204 | # Files ending in .cache can be ignored 205 | *.[Cc]ache 206 | 207 | # But keep track of directories ending in .cache 208 | !*.[Cc]ache/ 209 | 210 | # Windows image file caches 211 | **/Thumbs.db 212 | 213 | # Others 214 | ClientBin/ 215 | ~$* 216 | *~ 217 | *.dbmdl 218 | *.dbproj.schemaview 219 | *.jfm 220 | *.pfx 221 | *.publishsettings 222 | orleans.codegen.cs 223 | 224 | # Including strong name files can present a security risk 225 | # (https://github.com/github/gitignore/pull/2483#issue-259490424) 226 | #*.snk 227 | 228 | # Since there are multiple workflows, uncomment the next line to ignore bower_components 229 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) 230 | #bower_components/ 231 | 232 | # RIA/Silverlight projects 233 | Generated_Code/ 234 | 235 | # Backup & report files from converting an old project file 236 | # to a newer Visual Studio version. Backup files are not needed, 237 | # because we have git ;-) 238 | _UpgradeReport_Files/ 239 | Backup*/ 240 | UpgradeLog*.XML 241 | UpgradeLog*.htm 242 | ServiceFabricBackup/ 243 | *.rptproj.bak 244 | 245 | # SQL Server files 246 | *.mdf 247 | *.ldf 248 | *.ndf 249 | 250 | # Business Intelligence projects 251 | *.rdl.data 252 | *.bim.layout 253 | *.bim_*.settings 254 | *.rptproj.rsuser 255 | 256 | # Microsoft Fakes 257 | FakesAssemblies/ 258 | 259 | # GhostDoc plugin setting file 260 | *.GhostDoc.xml 261 | 262 | # Node.js Tools for Visual Studio 263 | .ntvs_analysis.dat 264 | node_modules/ 265 | 266 | # Visual Studio 6 build log 267 | *.plg 268 | 269 | # Visual Studio 6 workspace options file 270 | *.opt 271 | 272 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.) 273 | *.vbw 274 | 275 | # Visual Studio LightSwitch build output 276 | **/*.HTMLClient/GeneratedArtifacts 277 | **/*.DesktopClient/GeneratedArtifacts 278 | **/*.DesktopClient/ModelManifest.xml 279 | **/*.Server/GeneratedArtifacts 280 | **/*.Server/ModelManifest.xml 281 | _Pvt_Extensions 282 | 283 | # Paket dependency manager 284 | .paket/paket.exe 285 | paket-files/ 286 | 287 | # FAKE - F# Make 288 | .fake/ 289 | 290 | # JetBrains Rider 291 | .idea/ 292 | *.sln.iml 293 | 294 | # CodeRush 295 | .cr/ 296 | 297 | # Python Tools for Visual Studio (PTVS) 298 | __pycache__/ 299 | *.pyc 300 | 301 | # Cake - Uncomment if you are using it 302 | # tools/** 303 | # !tools/packages.config 304 | 305 | # Tabs Studio 306 | *.tss 307 | 308 | # Telerik's JustMock 309 | ::contentReference[oaicite:1]{index=1} 310 | 311 | -------------------------------------------------------------------------------- /Form1.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace OriApps.ResumeBoost; 2 | 3 | partial class MainForm 4 | { 5 | /// 6 | /// Required designer variable. 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// Clean up any resources being used. 12 | /// 13 | /// true if managed resources should be disposed; otherwise, false. 14 | protected override void Dispose(bool disposing) 15 | { 16 | if (disposing && (components != null)) 17 | { 18 | components.Dispose(); 19 | } 20 | 21 | base.Dispose(disposing); 22 | } 23 | 24 | #region Windows Form Designer generated code 25 | /// 26 | /// Required method for Designer support - do not modify 27 | /// the contents of this method with the code editor. 28 | /// 29 | private void InitializeComponent() 30 | { 31 | components = new System.ComponentModel.Container(); 32 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm)); 33 | webView = new Microsoft.Web.WebView2.WinForms.WebView2(); 34 | statusStrip = new StatusStrip(); 35 | statusLabel = new ToolStripStatusLabel(); 36 | timerStart = new System.Windows.Forms.Timer(components); 37 | timerMain = new System.Windows.Forms.Timer(components); 38 | timerLong = new System.Windows.Forms.Timer(components); 39 | notifyIcon = new NotifyIcon(components); 40 | menuStrip = new MenuStrip(); 41 | toolStripMenuItem1 = new ToolStripMenuItem(); 42 | autoLaunchToolStripMenuItem = new ToolStripMenuItem(); 43 | startMinimizedToolStripMenuItem = new ToolStripMenuItem(); 44 | hideTrayToolStripMenuItem = new ToolStripMenuItem(); 45 | ((System.ComponentModel.ISupportInitialize)webView).BeginInit(); 46 | statusStrip.SuspendLayout(); 47 | menuStrip.SuspendLayout(); 48 | SuspendLayout(); 49 | // 50 | // webView 51 | // 52 | webView.AllowExternalDrop = true; 53 | webView.CreationProperties = null; 54 | webView.DefaultBackgroundColor = Color.White; 55 | webView.Dock = DockStyle.Fill; 56 | webView.Location = new Point(0, 0); 57 | webView.Name = "webView"; 58 | webView.Size = new Size(1484, 450); 59 | webView.TabIndex = 0; 60 | webView.ZoomFactor = 1D; 61 | // 62 | // statusStrip 63 | // 64 | statusStrip.Items.AddRange(new ToolStripItem[] { statusLabel }); 65 | statusStrip.Location = new Point(0, 428); 66 | statusStrip.Name = "statusStrip"; 67 | statusStrip.Size = new Size(1484, 22); 68 | statusStrip.TabIndex = 1; 69 | statusStrip.Text = "statusStrip1"; 70 | // 71 | // statusLabel 72 | // 73 | statusLabel.Name = "statusLabel"; 74 | statusLabel.Size = new Size(82, 17); 75 | statusLabel.Text = "Current Status"; 76 | // 77 | // timerStart 78 | // 79 | timerStart.Tick += timerStart_Tick; 80 | // 81 | // timerMain 82 | // 83 | timerMain.Tick += timerMain_Tick; 84 | // 85 | // timerLong 86 | // 87 | timerLong.Tick += timerLong_Tick; 88 | // 89 | // notifyIcon 90 | // 91 | notifyIcon.Icon = (Icon)resources.GetObject("notifyIcon.Icon"); 92 | notifyIcon.Text = "Resume Boost"; 93 | notifyIcon.Click += notifyIcon_Click; 94 | // 95 | // menuStrip 96 | // 97 | menuStrip.Items.AddRange(new ToolStripItem[] { toolStripMenuItem1 }); 98 | menuStrip.Location = new Point(0, 0); 99 | menuStrip.Name = "menuStrip"; 100 | menuStrip.Size = new Size(1484, 24); 101 | menuStrip.TabIndex = 2; 102 | menuStrip.Text = "menuStrip1"; 103 | // 104 | // toolStripMenuItem1 105 | // 106 | toolStripMenuItem1.DropDownItems.AddRange(new ToolStripItem[] { autoLaunchToolStripMenuItem, startMinimizedToolStripMenuItem, hideTrayToolStripMenuItem }); 107 | toolStripMenuItem1.Name = "toolStripMenuItem1"; 108 | toolStripMenuItem1.Size = new Size(79, 20); 109 | toolStripMenuItem1.Text = "Настройки"; 110 | // 111 | // autoLaunchToolStripMenuItem 112 | // 113 | autoLaunchToolStripMenuItem.CheckOnClick = true; 114 | autoLaunchToolStripMenuItem.Name = "autoLaunchToolStripMenuItem"; 115 | autoLaunchToolStripMenuItem.Size = new Size(193, 22); 116 | autoLaunchToolStripMenuItem.Text = "Автозапуск"; 117 | autoLaunchToolStripMenuItem.CheckStateChanged += autoLaunchToolStripMenuItem_CheckStateChanged; 118 | // 119 | // startMinimizedToolStripMenuItem 120 | // 121 | startMinimizedToolStripMenuItem.CheckOnClick = true; 122 | startMinimizedToolStripMenuItem.Name = "startMinimizedToolStripMenuItem"; 123 | startMinimizedToolStripMenuItem.Size = new Size(193, 22); 124 | startMinimizedToolStripMenuItem.Text = "Запускать свернутым"; 125 | startMinimizedToolStripMenuItem.CheckStateChanged += startMinimizedToolStripMenuItem_CheckStateChanged; 126 | // 127 | // hideTrayToolStripMenuItem 128 | // 129 | hideTrayToolStripMenuItem.CheckOnClick = true; 130 | hideTrayToolStripMenuItem.Name = "hideTrayToolStripMenuItem"; 131 | hideTrayToolStripMenuItem.Size = new Size(193, 22); 132 | hideTrayToolStripMenuItem.Text = "Не показывать в трее"; 133 | hideTrayToolStripMenuItem.Click += hideTrayToolStripMenuItem_Click; 134 | // 135 | // MainForm 136 | // 137 | AutoScaleDimensions = new SizeF(7F, 15F); 138 | AutoScaleMode = AutoScaleMode.Font; 139 | ClientSize = new Size(1484, 450); 140 | Controls.Add(statusStrip); 141 | Controls.Add(menuStrip); 142 | Controls.Add(webView); 143 | Icon = (Icon)resources.GetObject("$this.Icon"); 144 | MainMenuStrip = menuStrip; 145 | Name = "MainForm"; 146 | StartPosition = FormStartPosition.CenterScreen; 147 | Text = "Resume Boost"; 148 | WindowState = FormWindowState.Maximized; 149 | Load += MainForm_Load; 150 | ((System.ComponentModel.ISupportInitialize)webView).EndInit(); 151 | statusStrip.ResumeLayout(false); 152 | statusStrip.PerformLayout(); 153 | menuStrip.ResumeLayout(false); 154 | menuStrip.PerformLayout(); 155 | ResumeLayout(false); 156 | PerformLayout(); 157 | } 158 | #endregion 159 | 160 | private Microsoft.Web.WebView2.WinForms.WebView2 webView; 161 | private StatusStrip statusStrip; 162 | private System.Windows.Forms.Timer timerStart; 163 | private System.Windows.Forms.Timer timerMain; 164 | private System.Windows.Forms.Timer timerLong; 165 | private NotifyIcon notifyIcon; 166 | private ToolStripStatusLabel statusLabel; 167 | private MenuStrip menuStrip; 168 | private ToolStripMenuItem toolStripMenuItem1; 169 | private ToolStripMenuItem autoLaunchToolStripMenuItem; 170 | private ToolStripMenuItem startMinimizedToolStripMenuItem; 171 | private ToolStripMenuItem hideTrayToolStripMenuItem; 172 | } -------------------------------------------------------------------------------- /Form1.cs: -------------------------------------------------------------------------------- 1 | // ReSharper disable LocalizableElement 2 | namespace OriApps.ResumeBoost 3 | { 4 | using Microsoft.Web.WebView2.Core; 5 | 6 | public partial class MainForm : Form 7 | { 8 | private ResumeBoostState _state = ResumeBoostState.Initializing; 9 | 10 | private string _lastBoostTime = ""; 11 | 12 | private const int WM_USER = 0x0400; 13 | internal const int WM_SHOWMAIN = WM_USER + 1; 14 | 15 | private const string Domain = "https://hh.ru/"; 16 | 17 | public MainForm() 18 | { 19 | InitializeComponent(); 20 | 21 | notifyIcon.Text = Application.ProductName; 22 | notifyIcon.Visible = false; 23 | 24 | timerStart.Interval = 3000; 25 | timerMain.Interval = 3000; 26 | timerLong.Interval = 3600000; 27 | 28 | webView.CoreWebView2InitializationCompleted += WebView_CoreWebView2InitializationCompleted; 29 | 30 | autoLaunchToolStripMenuItem.Checked = StartupHelper.IsAutoStartEnabled(); 31 | startMinimizedToolStripMenuItem.Checked = StartupHelper.IsStartMinimizedEnabled(); 32 | hideTrayToolStripMenuItem.Checked = StartupHelper.IsTrayIconHidden(); 33 | 34 | if (StartupHelper.IsStartMinimizedEnabled()) 35 | { 36 | WindowState = FormWindowState.Minimized; 37 | Hide(); 38 | notifyIcon.Visible = !hideTrayToolStripMenuItem.Checked; 39 | ShowInTaskbar = false; 40 | } 41 | } 42 | 43 | protected override void OnResize(EventArgs e) 44 | { 45 | base.OnResize(e); 46 | 47 | if (WindowState == FormWindowState.Minimized) 48 | { 49 | Hide(); 50 | notifyIcon.Visible = !hideTrayToolStripMenuItem.Checked; 51 | ShowInTaskbar = false; 52 | } 53 | } 54 | 55 | private void ShowMainWindow() 56 | { 57 | Show(); 58 | WindowState = FormWindowState.Normal; 59 | notifyIcon.Visible = false; 60 | ShowInTaskbar = true; 61 | 62 | TopMost = true; 63 | TopMost = false; 64 | } 65 | 66 | protected override void WndProc(ref Message m) 67 | { 68 | if (m.Msg == WM_SHOWMAIN) 69 | { 70 | ShowMainWindow(); 71 | 72 | Activate(); 73 | } 74 | 75 | base.WndProc(ref m); 76 | } 77 | 78 | private void notifyIcon_Click(object sender, EventArgs e) 79 | { 80 | if (e is MouseEventArgs args && args.Button != MouseButtons.Left) 81 | { 82 | return; 83 | } 84 | 85 | ShowMainWindow(); 86 | } 87 | 88 | private async void MainForm_Load(object sender, EventArgs e) 89 | { 90 | await webView.EnsureCoreWebView2Async(null); 91 | statusLabel.Text = "Status: Opening hh.ru ..."; 92 | webView.CoreWebView2.Navigate(Domain + "locale?language=RU"); 93 | timerStart.Start(); 94 | } 95 | 96 | private async void timerStart_Tick(object? sender, EventArgs e) 97 | { 98 | if (await IsUserLoggedIn()) 99 | { 100 | statusLabel.Text = "Status: Authorization successful. Loading resumes..."; 101 | timerStart.Stop(); 102 | StartResumeBoostProcess(); 103 | } 104 | else 105 | { 106 | if (WindowState == FormWindowState.Minimized) 107 | { 108 | ShowMainWindow(); 109 | } 110 | 111 | statusLabel.Text = webView.CoreWebView2.Source.Contains("login") 112 | ? "Status: Waiting for user authorization..." 113 | : "Status: Still waiting for authorization..."; 114 | } 115 | } 116 | 117 | private async void timerMain_Tick(object? sender, EventArgs e) 118 | { 119 | switch (_state) 120 | { 121 | case ResumeBoostState.CheckingAuthorization: 122 | if (await IsUserLoggedIn()) 123 | { 124 | statusLabel.Text = "Status: Authorization verified."; 125 | _state = ResumeBoostState.CheckingResumes; 126 | } 127 | else 128 | { 129 | ShowMainWindow(); 130 | statusLabel.Text = "Status: Authorization required."; 131 | } 132 | break; 133 | 134 | case ResumeBoostState.CheckingResumes: 135 | int availableResumes = await CountAvailableResumes(); 136 | if (availableResumes > 0) 137 | { 138 | statusLabel.Text = $"Status: Can boost {availableResumes} resumes."; 139 | _state = ResumeBoostState.BoostingResumes; 140 | } 141 | else 142 | { 143 | statusLabel.Text = "Status: Boosting not available. Waiting..."; 144 | timerMain.Stop(); 145 | timerLong.Start(); 146 | } 147 | break; 148 | 149 | case ResumeBoostState.BoostingResumes: 150 | await BoostResumes(); 151 | _lastBoostTime = DateTime.Now.ToString("HH:mm"); 152 | statusLabel.Text = $"Status: Resumes boosted at {_lastBoostTime}. Waiting..."; 153 | timerMain.Stop(); 154 | _state = ResumeBoostState.WaitingForNextCycle; 155 | timerLong.Start(); 156 | break; 157 | } 158 | } 159 | 160 | private void timerLong_Tick(object? sender, EventArgs e) 161 | { 162 | timerLong.Stop(); 163 | StartResumeBoostProcess(); 164 | } 165 | 166 | private void WebView_CoreWebView2InitializationCompleted(object? sender, CoreWebView2InitializationCompletedEventArgs e) 167 | { 168 | if (!e.IsSuccess) 169 | { 170 | MessageBox.Show("WebView2 initialization failed: " + e.InitializationException.Message); 171 | } 172 | } 173 | 174 | private void autoLaunchToolStripMenuItem_CheckStateChanged(object sender, EventArgs e) 175 | { 176 | if (autoLaunchToolStripMenuItem.Checked) 177 | { 178 | StartupHelper.EnableAutoStart(); 179 | } 180 | else 181 | { 182 | StartupHelper.DisableAutoStart(); 183 | } 184 | } 185 | 186 | private void startMinimizedToolStripMenuItem_CheckStateChanged(object sender, EventArgs e) 187 | { 188 | StartupHelper.SetStartMinimized(startMinimizedToolStripMenuItem.Checked); 189 | } 190 | 191 | private async Task IsUserLoggedIn() 192 | { 193 | string result = await webView.CoreWebView2.ExecuteScriptAsync(ScriptsConstants.AuthorizationCheckScript); 194 | int count = int.TryParse(result.Replace("\"", ""), out var n) ? n : 0; 195 | return count > 0; 196 | } 197 | 198 | private async Task CountAvailableResumes() 199 | { 200 | string result = await webView.CoreWebView2.ExecuteScriptAsync(ScriptsConstants.FindResumeScript); 201 | return int.TryParse(result.Replace("\"", ""), out var n) ? n : 0; 202 | } 203 | 204 | private async Task BoostResumes() 205 | { 206 | await webView.CoreWebView2.ExecuteScriptAsync(ScriptsConstants.UpdateResumeScript); 207 | } 208 | 209 | private void StartResumeBoostProcess() 210 | { 211 | statusLabel.Text = "Status: Navigating to resumes page..."; 212 | webView.CoreWebView2.Navigate(Domain + "applicant/resumes"); 213 | _state = ResumeBoostState.CheckingAuthorization; 214 | timerMain.Start(); 215 | } 216 | 217 | private void hideTrayToolStripMenuItem_Click(object sender, EventArgs e) 218 | { 219 | StartupHelper.SetTrayIconHidden(hideTrayToolStripMenuItem.Checked); 220 | 221 | notifyIcon.Visible = WindowState == FormWindowState.Minimized && !hideTrayToolStripMenuItem.Checked; 222 | 223 | if (hideTrayToolStripMenuItem.Checked) 224 | { 225 | MessageBox.Show( 226 | "Для повторного отображения окна достаточно заново запустить .exe файл\n" + 227 | "Новый экземпляр не откроется, а активирует существующий.", 228 | "Информация", 229 | MessageBoxButtons.OK, 230 | MessageBoxIcon.Information); 231 | } 232 | } 233 | } 234 | } 235 | -------------------------------------------------------------------------------- /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 | 121 | 17, 17 122 | 123 | 124 | 126, 17 125 | 126 | 127 | 232, 17 128 | 129 | 130 | 341, 17 131 | 132 | 133 | 450, 17 134 | 135 | 136 | 137 | 138 | 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 311 | lVOBMlP9/w8Fkm5eAjIYzwAAAABJRU5ErkJggg== 312 | 313 | 314 | 315 | 558, 17 316 | 317 | 318 | 319 | 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 492 | lVOBMlP9/w8Fkm5eAjIYzwAAAABJRU5ErkJggg== 493 | 494 | 495 | --------------------------------------------------------------------------------