6
6
HINSTANCE hInst;
7
7
static HWND hwndDlg;
8
8
9
- void RestartProgram ()
10
- {
11
- TCHAR szFileName[MAX_PATH];
12
- GetModuleFileName (NULL , szFileName, MAX_PATH);
13
-
14
- // Cerrar el proceso actual
15
- STARTUPINFO si;
16
- PROCESS_INFORMATION pi ;
17
-
18
- ZeroMemory (&si, sizeof (si));
19
- si.cb = sizeof (si);
20
- ZeroMemory (&pi , sizeof (pi ));
21
-
22
- if (!CreateProcess (NULL , szFileName, NULL , NULL , FALSE , 0 , NULL , NULL , &si, &pi ))
23
- {
24
- printf (" Error al reiniciar el programa: %d\n " , GetLastError ());
25
- return ;
26
- }
27
-
28
- CloseHandle (pi .hProcess );
29
- CloseHandle (pi .hThread );
30
-
31
- // Obtener el identificador del proceso actual y cerrarlo
32
- DWORD currentProcessId = GetCurrentProcessId ();
33
- HANDLE currentProcessHandle = OpenProcess (PROCESS_TERMINATE, FALSE , currentProcessId);
34
- TerminateProcess (currentProcessHandle, 0 );
35
- CloseHandle (currentProcessHandle);
36
- }
37
-
38
9
// Leer REG_SZ del registro
39
10
char * RegKeyQueryEx (HKEY hKey, LPCSTR lpSubKey, LPCSTR lpValueName)
40
11
{
@@ -161,15 +132,14 @@ void _SetProcessInformation()
161
132
}
162
133
}
163
134
164
- // buffer LTEXT
165
- char buffer[21 ];
166
-
167
135
BOOL CALLBACK DlgMain (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
168
136
{
169
137
switch (uMsg)
170
138
{
171
139
case WM_INITDIALOG:
172
140
{
141
+
142
+
173
143
// establecer prioridad de segundo plano (low i/o y low mem priority)
174
144
SetPriorityClass (GetCurrentProcess (), PROCESS_MODE_BACKGROUND_BEGIN);
175
145
@@ -198,6 +168,9 @@ BOOL CALLBACK DlgMain(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
198
168
// Llamar a ZwQueryTimerResolution
199
169
_ZwQueryTimerResolution ();
200
170
171
+ // LTEXT
172
+ char buffer[21 ];
173
+
201
174
// Convertir maxRes a cadena
202
175
sprintf (buffer, " Maximun Timer Resolution: %lu ns" , maxRes);
203
176
SetDlgItemText (hwndDlg, _MAX, buffer);
@@ -218,7 +191,7 @@ BOOL CALLBACK DlgMain(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
218
191
if (custom)
219
192
{
220
193
SetDlgItemText (hwndDlg, _CUSTOM, f_custom); // rellenar edit con valor obtenido del registro
221
- ULONG f_res = strtoul (f_custom, NULL , 0 );
194
+ ULONG f_res = strtoul (f_custom, NULL , 10 );
222
195
_ZwSetTimerResolution (f_res);
223
196
// Convertir actRes a cadena
224
197
sprintf (buffer, " Current Timer Resolution: %lu ns" , actRes);
@@ -346,7 +319,7 @@ BOOL CALLBACK DlgMain(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
346
319
{
347
320
// Obtener texto del EDIT para DesiredResolution
348
321
GetDlgItemText (hwndDlg, _CUSTOM, lpbuffer, sizeof (lpbuffer));
349
- ULONG lpres = strtoul (lpbuffer, NULL , 0 );
322
+ ULONG lpres = strtoul (lpbuffer, NULL , 10 );
350
323
351
324
// Call ZwSetTimerResolution
352
325
_ZwSetTimerResolution (lpres);
@@ -355,7 +328,6 @@ BOOL CALLBACK DlgMain(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
355
328
sprintf (buffer, " Current Timer Resolution: %lu ns" , actRes);
356
329
SetDlgItemText (hwndDlg, _CURR, buffer);
357
330
RegKeySetEx (HKEY_CURRENT_USER, " Software\\ ZwSetTimer" , " CustomTimer" , lpbuffer);
358
- RestartProgram ();
359
331
}
360
332
return TRUE ;
361
333
0 commit comments