Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

C++

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.83
skreggi
0 / 0 / 0
Регистрация: 25.11.2010
Сообщений: 16
#1

Запуск программ по расписанию - C++

20.04.2011, 22:48. Просмотров 1621. Ответов 7
Метки нет (Все метки)

Нужно реализовать программу на Microsoft Visual C++ которая бы запускала программы по заданному времени. Я её реализовал под Win32 Aplication. Расписание время и путь программ я указывал в файл shedule.reg , который я добавляю в реестр. А в программе я считываю расписания с реестра. Откомпелировалась без ошибок, но в итоге программы не запускаются по расписанию.
---------------------------------------------------------------------
файл shedule.reg

Код
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\shedule]

"1"="21:06 C:\\Windows\\System32\\calc.exe"
"2"="21:05 C:\\Windows\\System32\\cmd.exe"
"3"="21:11 C:\\Windows\\System32\\notepad.exe"
----------------------------------------------------------------------------
Исходник:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
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
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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
// program.cpp : Defines the entry point for the application.
//
 
#include "stdafx.h"
#include "windows.h"
#include "stdlib.h"
#include "winioctl.h"
#include "shellapi.h"
 
 
// Функция проверки расписания в реестре
void CheckShedule(void);
 
char shed[30][3];
 
//оконная функция
LRESULT CALLBACK WindowProc(HWND hWnd, 
                    UINT message,
                    WPARAM wParam,
                    LPARAM lParam);
 
// основная функция
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
// создания и заполнение структуры окна
WNDCLASS wcl;
wcl.style=CS_HREDRAW|CS_VREDRAW;
wcl.lpfnWndProc=WindowProc;
wcl.cbClsExtra=0;
wcl.cbWndExtra=DLGWINDOWEXTRA;
wcl.hInstance=hInstance;
wcl.hIcon=LoadIcon(NULL, IDI_APPLICATION);
wcl.hCursor=LoadCursor(NULL, IDC_ARROW);
wcl.hbrBackground=(HBRUSH)(COLOR_BTNFACE+1);
wcl.lpszMenuName=NULL;
wcl.lpszClassName="WWW";
 
strcpy(shed[0], "1");
strcpy(shed[1], "2");
strcpy(shed[2], "3");
strcpy(shed[3], "4");
strcpy(shed[4], "5");
strcpy(shed[5], "6");
strcpy(shed[6], "7");
strcpy(shed[7], "8");
strcpy(shed[8], "9");
strcpy(shed[9], "10");
strcpy(shed[10], "11");
strcpy(shed[11], "12");
strcpy(shed[12], "13");
strcpy(shed[13], "14");
strcpy(shed[14], "15");
strcpy(shed[15], "16");
strcpy(shed[16], "17");
strcpy(shed[17], "18");
strcpy(shed[18], "19");
strcpy(shed[19], "20");
strcpy(shed[20], "21");
strcpy(shed[21], "22");
strcpy(shed[22], "23");
strcpy(shed[23], "24");
strcpy(shed[24], "25");
strcpy(shed[25], "26");
strcpy(shed[26], "27");
strcpy(shed[27], "28");
strcpy(shed[28], "29");
strcpy(shed[29], "30");
 
// регистрация класса окна
if (!RegisterClass(&wcl)) return 0;
// создания диалогового окна
HWND hWnd=CreateDialogParam(hInstance,"TESTWIN",NULL,NULL,NULL);
// прорисока окна 
ShowWindow(hWnd, nCmdShow);
// обновления окна
UpdateWindow(hWnd);
// установка таймера
SetTimer(hWnd, 1, 60000, NULL);
 
// цикл оброботки сообщений
MSG lpMsg;
while (GetMessage(&lpMsg, NULL, 0 ,0))
{
TranslateMessage(&lpMsg);
DispatchMessage(&lpMsg);
}
return lpMsg.wParam;
}
 
LRESULT CALLBACK WindowProc(HWND hWnd, UINT message,
WPARAM wParam, LPARAM lParam)
{
 
switch(message)
{
case WM_DESTROY: PostQuitMessage(0); break;
 
// если пришло сообщения от таймера, проверка расписания в реестре
case WM_TIMER:
 CheckShedule();
 break;
 
default: return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
 
void CheckShedule(void)
{
 
// обьявления переменных
SYSTEMTIME time;
HKEY hOpen;
 
DWORD datatype, Buffsize;
long opRes;
 
char* szAlloc = "shedule\\";
char hour[3], minute[3], buff[1024];
 hour[2] = minute[2] = 0;
 
// открытия раздела реестра
opRes = RegOpenKey(HKEY_CURRENT_USER,szAlloc,&hOpen);
// если не открылся то сообщение и выход
if(opRes)
{
MessageBox(0, "Cannot open registry key!", "Error", MB_ICONSTOP);
return;
}
 
// получение текущего времени
GetLocalTime(&time);
 
for(int i = 0; i < 30; i++)
{
// чтение строки из реестра с временем и строкой запуска
if (RegQueryValueEx(hOpen,shed[i],NULL,&datatype,(BYTE*)buff,&Buffsize))
// если не прочитано то переход к следующей
continue;
 
// считывание времени запуска
hour[0] = buff[0];
hour[1] = buff[1];
minute[0] = buff[3];
minute[1] = buff[4];
 
// если текущее время равно считанному из реестра
if((atoi(hour) == time.wHour) && (atoi(minute) == time.wMinute))
{
// запуск программы
ShellExecute(0,"open", &buff[6], NULL, NULL, SW_SHOWNORMAL);
}
 
// обнуление буфера
memset(buff, 0, sizeof(buff));
 
 
 
}
 
}


-------------------------------------------------------------------------------

после компиляции пишет :

Loaded 'ntdll.dll', no matching symbolic information found.
Loaded 'C:\Windows\System32\kernel32.dll', no matching symbolic information found.
Loaded 'C:\Windows\System32\KernelBase.dll', no matching symbolic information found.
Loaded 'C:\Windows\System32\user32.dll', no matching symbolic information found.
Loaded 'C:\Windows\System32\gdi32.dll', no matching symbolic information found.
Loaded 'C:\Windows\System32\lpk.dll', no matching symbolic information found.
Loaded 'C:\Windows\System32\usp10.dll', no matching symbolic information found.
Loaded 'C:\Windows\System32\msvcrt.dll', no matching symbolic information found.
Loaded 'C:\Windows\System32\advapi32.dll', no matching symbolic information found.
Loaded 'C:\Windows\System32\sechost.dll', no matching symbolic information found.
Loaded 'C:\Windows\System32\rpcrt4.dll', no matching symbolic information found.
Loaded 'C:\Windows\System32\shell32.dll', no matching symbolic information found.
Loaded 'C:\Windows\System32\shlwapi.dll', no matching symbolic information found.
Loaded 'C:\Windows\System32\imm32.dll', no matching symbolic information found.
Loaded 'C:\Windows\System32\msctf.dll', no matching symbolic information found.
Loaded 'C:\Program Files\Kaspersky Lab\Kaspersky Anti-Virus 2011\mzvkbd3.dll', no matching symbolic information found.
Loaded 'C:\Windows\System32\psapi.dll', no matching symbolic information found.
The thread 0x4DC has exited with code 0 (0x0).


Помогите пожалуйста разобратся!

заранее спасибо)
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.04.2011, 22:48
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Запуск программ по расписанию (C++):

Запуск программ из массива... - C++ Builder
Здравствуйте! Помогите пожалуйста, как выполнять команды на запуск приложения из массива. В самом массиве содержится пути к программам. И...

Запуск программ из другой программы? - C++ Builder
Можно ли как-то написать программу, которая запускает другие программы? К примеру, у меня написан ряд программ, код откомпилированн,...

Запуск программ из системных директорий, (CreateProcess) - C++ Builder
Здравствуйте!!! :) Подскажите пожалуйста, как запустить, допустим &quot;Блокнот&quot; из системной папки Windows? //Директория Windows: char...

Выполнение по расписанию. - C++ Builder
Уважаемые, возникла не то, чтобы необходимость, но очень хотелось бы данное действо реализовать. В общем в определенное время, к примеру...

Копирование-перенос файлов по расписанию - C++ Builder
возникла задача переносить/копировать файлы из указанной папки по расписанию. проблема в том что надо переносить только новые файлы....

Запуск программ - Visual C++
Доброго времени суток! Опять нуждаюсь в помощи форумчан: нужна простенькая программа (мелкий .exe) которая бы умела запускать...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
zinador
2 / 2 / 0
Регистрация: 15.11.2009
Сообщений: 100
10.05.2011, 15:57 #2
делай длл которая будет автоматически загружаться при запуске системы
0
skreggi
0 / 0 / 0
Регистрация: 25.11.2010
Сообщений: 16
10.05.2011, 20:05  [ТС] #3
та вроде бы разобрался!
там не в ДЛЛ дело!
нужно вместо функции CreateDialogParam использовать CreateWindow))
как раз запустилось и всё работает)
но всё равно спасибо за помощь!
0
Kastaneda
11.05.2011, 15:48
  #4

Не по теме:

Цитата Сообщение от skreggi Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
strcpy(shed[0], "1");
strcpy(shed[1], "2");
strcpy(shed[2], "3");
strcpy(shed[3], "4");
strcpy(shed[4], "5");
strcpy(shed[5], "6");
strcpy(shed[6], "7");
strcpy(shed[7], "8");
strcpy(shed[8], "9");
strcpy(shed[9], "10");
strcpy(shed[10], "11");
strcpy(shed[11], "12");
strcpy(shed[12], "13");
strcpy(shed[13], "14");
strcpy(shed[14], "15");
strcpy(shed[15], "16");
strcpy(shed[16], "17");
strcpy(shed[17], "18");
strcpy(shed[18], "19");
strcpy(shed[19], "20");
strcpy(shed[20], "21");
strcpy(shed[21], "22");
strcpy(shed[22], "23");
strcpy(shed[23], "24");
strcpy(shed[24], "25");
strcpy(shed[25], "26");
strcpy(shed[26], "27");
strcpy(shed[27], "28");
strcpy(shed[28], "29");
strcpy(shed[29], "30");
)) а если бы нужно было 1000 строк заполнить? ))

0
skreggi
0 / 0 / 0
Регистрация: 25.11.2010
Сообщений: 16
11.05.2011, 20:57  [ТС] #5
я знаю что можно через цикл просто не выходило зделать чтоб правильно работало,а так работает!
так чё мозги забивать
0
accept
4822 / 3243 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
12.05.2011, 03:07 #6
Цитата Сообщение от skreggi
так чё мозги забивать
C
1
2
3
4
    int i;
 
    for (i = 0; i < 30; i++)
        sprintf(shed[i], "%d", i + 1);
1
skreggi
0 / 0 / 0
Регистрация: 25.11.2010
Сообщений: 16
12.05.2011, 23:45  [ТС] #7
спасибо за помощь, попробую!
только одно но sprintf функция которая распичатывает какой либо текст, а мне нужно скопировать strcpy в данном случае

Добавлено через 1 час 42 минуты
хотя нет я ошибался!
sprintf тоже работает))
наверн чтот перепутал...
0
accept
4822 / 3243 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
13.05.2011, 04:00 #8
есть семейство функций printf(), там много всяких функций
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.05.2011, 04:00
Привет! Вот еще темы с ответами:

Невозможен запуск программ на windows 7 - Visual C++
Всем добрый день! Я сделал одно приложение на Visual c++ 2008 используя Windows form. Так вот все оно отлично работает, но оно не...

Win32API. Запуск программ посредством кнопки - Visual C++
Написал програмку, запускающую DLL. Не могу переделать, чтоб от кнопки запускался EXE, или какой нибудь другой файл... Помогите Плиз! ...

Запуск студией и запуск самой виндой. Разница работы программы - Visual C++
Итак, проблема такова: есть проект, который замечательно работает при нажатии F5 в студии. При компиляции в релиз-режиме и запуске...

Запуск программ в определённое время - C++ WinAPI
Доброго времени суток. Я пишу приложение для запуска программ в определённое время (или через указанное время. Ещё не решил:scratch:) И...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
13.05.2011, 04:00
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru