0 / 0 / 0
Регистрация: 25.11.2010
Сообщений: 16
1

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

20.04.2011, 22:48. Показов 3429. Ответов 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.04.2011, 22:48
Ответы с готовыми решениями:

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

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

Запуск программ из системных директорий, (CreateProcess)
Здравствуйте!!! :) Подскажите пожалуйста, как запустить, допустим &quot;Блокнот&quot; из системной папки...

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

7
2 / 2 / 2
Регистрация: 15.11.2009
Сообщений: 100
10.05.2011, 15:57 2
делай длл которая будет автоматически загружаться при запуске системы
0
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");
:bravo: )) а если бы нужно было 1000 строк заполнить? ))

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

Добавлено через 1 час 42 минуты
хотя нет я ошибался!
sprintf тоже работает))
наверн чтот перепутал...
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
13.05.2011, 04:00 8
есть семейство функций printf(), там много всяких функций
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.05.2011, 04:00
Помогаю со студенческими работами здесь

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

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

Запуск программ из System32
Здравствуйте! Есть непонятная проблема, подскажите, куда копать? Простое приложение Windows...

Запуск программ в определённое время
Доброго времени суток. Я пишу приложение для запуска программ в определённое время (или через...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru