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

C++

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

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

20.04.2011, 22:48. Просмотров 1589. Ответов 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).


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

заранее спасибо)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.04.2011, 22:48     Запуск программ по расписанию
Посмотрите здесь:

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

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

Запуск программ через программу - C++
Мне стало интересно, как запустить другую программу через свою. Т.е., например, терминал спрашивает что запустить выбираю и запускается...

Запуск программ из другой программы - C++
Подскажите пожалуйста, что делаю не так. Задача следующая: Есть несколько программ, которые нужно поочерёдно запускать и выполнять в них...

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

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

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

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

skreggi
0 / 0 / 0
Регистрация: 25.11.2010
Сообщений: 16
11.05.2011, 20:57  [ТС]     Запуск программ по расписанию #5
я знаю что можно через цикл просто не выходило зделать чтоб правильно работало,а так работает!
так чё мозги забивать
accept
4821 / 3241 / 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);
skreggi
0 / 0 / 0
Регистрация: 25.11.2010
Сообщений: 16
12.05.2011, 23:45  [ТС]     Запуск программ по расписанию #7
спасибо за помощь, попробую!
только одно но sprintf функция которая распичатывает какой либо текст, а мне нужно скопировать strcpy в данном случае

Добавлено через 1 час 42 минуты
хотя нет я ошибался!
sprintf тоже работает))
наверн чтот перепутал...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.05.2011, 04:00     Запуск программ по расписанию
Еще ссылки по теме:

Компиляция и запуск программ из mpi - C++ Linux
Не запускается простая mpi-программа sergiy@linux-kczo:~/lab/mpi&gt; mpicc a.c sergiy@linux-kczo:~/lab/mpi&gt; mpirun ./a.out mpiexec...

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

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

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

Запуск программ mpi. Как посмотреть результат работы? - C++
Здравствуйте. Установил MPI, написал &quot;хелоу ворылд&quot;, - все прошло без проблем. А вот посмотреть результат работы не могу- пишет ошибку...


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

Или воспользуйтесь поиском по форуму:
accept
4821 / 3241 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
13.05.2011, 04:00     Запуск программ по расписанию #8
есть семейство функций printf(), там много всяких функций
Yandex
Объявления
13.05.2011, 04:00     Запуск программ по расписанию
Ответ Создать тему
Опции темы

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