├── 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 |
--------------------------------------------------------------------------------