Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/19: Рейтинг темы: голосов - 19, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 10.06.2009
Сообщений: 19

Выполнение по расписанию.

15.08.2009, 19:39. Показов 4130. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Уважаемые, возникла не то, чтобы необходимость, но очень хотелось бы данное действо реализовать.
В общем в определенное время, к примеру 00-10, по системным часам нужно выполнить следующие действа:
разорвать имеющееся подключение, подождать немного, и снова подключить.
Вопрос непосредственно в том, как это сделать именно в 00-10, т.е. с помощью какой процедуры\функции.
В данный момент отключение-подключение выполняется с помощью .cmd и без автоматизьму, но хотелось бы перенести эту функции в свою программу, которая занята всеми остальными нужными мне настройками в системе.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.08.2009, 19:39
Ответы с готовыми решениями:

Запуск программ по расписанию
Нужно реализовать программу на Microsoft Visual C++ которая бы запускала программы по заданному времени. Я её реализовал под Win32...

Выполнение задачи по расписанию
Добрый день! Имеется скрипт который выполняет определенную функцию по расписанию. В данный момент скрипт выполняет функцию по...

Выполнение действие по расписанию
Есть некая программа, которая должна выполнятся 24/7. Мне нужно выполнить некое действие(допустим очеству списка) в определённое время. Как...

15
UNIX-way
 Аватар для Delphin_KKC
712 / 495 / 49
Регистрация: 15.01.2009
Сообщений: 1,720
15.08.2009, 19:48
Например так:
Бросить на форму таймер. Установить интервал например в 1 сек, в событии таймера получать текущее время, и если оно равно требуемому - запускать нужный пакетный файл.
0
 Аватар для Jnis
13 / 13 / 2
Регистрация: 06.01.2009
Сообщений: 70
15.08.2009, 20:09
как на счет того что бы в таймер толкнуть:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include "DateUtils.hpp"
BOOL Work=true;
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
   char HH=HourOf(Now()),
        MM=MinuteOf(Now());
   if(Work && HH==0 && MM==10){
      Work=false;
      /*Отключаем соединения*/
   }else if(!Work && HH==0 && MM==20){
      Work=true;
      /*Запускаем соединение*/
   }
}
Добавлено через 5 минут 37 секунд
Ну эт пример, если тебе интервал меньше минуты нужен, то например SS=SecondOf(Now()); воткни где надо.
1
0 / 0 / 0
Регистрация: 10.06.2009
Сообщений: 19
20.08.2009, 23:43  [ТС]
с char выходит не совсем адекватно, заменил на int.
остался нерешенным вопрос с подключением\разрывом связи. Понятное дело что с помощью ras.h что-то шаманить надо, но вот какие конкретно функции отвечают за разрыв\подключение хотелось бы знать, и как их правильно использовать.

Добавлено через 1 час 27 минут 24 секунды
Хм, подключение всё-таки заработало, благодаря следующему:
C++
1
2
RASDIALDLG rasDlg = {sizeof(RASDIALDLG)};
RasDialDlg(NULL, TEXT("Имя подключения"), NULL, &rasDlg);
При условии необходимости стандартного подключения.

Остаётся лишь вопрос с разрывом. RasHangUp напрочь не могу понять как работает, просьба помочь
0
 Аватар для snake32
3514 / 1697 / 236
Регистрация: 26.02.2009
Сообщений: 8,504
Записей в блоге: 6
21.08.2009, 09:28
Eternal-Thunder, перед вызовом RasHangUp, вы должны определить хэндл. Открываем MSDN и смотрим что там написано:
This is a handle returned from a previous call to RasDial or RasEnumConnections.
То бишь можно воспользоватся одной из следующих ф-ий RasDial или RasEnumConnections.
0
0 / 0 / 0
Регистрация: 10.06.2009
Сообщений: 19
21.08.2009, 14:00  [ТС]
snake32, я и пользуюсь RasEnumConnections, не знаю, может в коде где ошибка, кто сможет - поправьте, пожалуйста.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void __fastcall TForm1::Button1Click(TObject *Sender)
{       HRASCONN hRasConn;
    RASCONN ras[10];
    DWORD  dSize, dCountConn;
 
    ras[0].dwSize = sizeof(RASCONN);
    dSize = sizeof(ras);
    RasEnumConnections(ras, &dSize, &dCountConn);
    for (DWORD i = 0;  i < dCountConn;  i++)
    {
        hRasConn = ras[i].hrasconn;
        RasHangUp(hRasConn);
    }
}
0
 Аватар для snake32
3514 / 1697 / 236
Регистрация: 26.02.2009
Сообщений: 8,504
Записей в блоге: 6
21.08.2009, 15:30
Eternal-Thunder, и у меня не получается, хочь ты тресни

RasEnumConnections возращает ноль, то есть ошибки нет, но и количество соединений тоже пишет ноль ( поледний параметр ф-ии ). Хотя есть соединение я ж в net'е щаз сижу.

Что ж ждёмс более опытных...
0
0 / 0 / 0
Регистрация: 10.06.2009
Сообщений: 19
21.08.2009, 16:53  [ТС]
snake32, беда =\

Просьба к более опытным пользователям помочь
0
 Аватар для Otaka
1857 / 714 / 55
Регистрация: 11.12.2008
Сообщений: 1,019
21.08.2009, 16:59
Я когда-то пытался изучать Shell Api, и для проги USDownloader решил сделать прожку, которая отключит мой ADSL интернет, а потом его включит снова, тем самым сменив IP адрес. Так вот я программно получал менюшку для ярлычка с моим подключением, программно щелкал там "Разъединить", а потом щелкал "Соединить". Когда появлялось окошко Подключение, я все так же програмно клацал на кнопку "Подключение". Пользуюсь до сих пор. А вот с Ras API помочь не могу, так как опыта в этом нету.
0
0 / 0 / 0
Регистрация: 10.06.2009
Сообщений: 19
21.08.2009, 21:50  [ТС]
Otaka, оригинальное решение. исходник можете показать?
0
 Аватар для Otaka
1857 / 714 / 55
Регистрация: 11.12.2008
Сообщений: 1,019
21.08.2009, 22:05
Конечно могу, но он на Visual C++. Там нужно глядеть в файл ifolder.cpp
Предупреждаю сразу, исходник не для слабонервных. Это моя первая программа с COM интерфейсами. Там почти нет никаких обработок ошибок, и освобождения памяти(почему-то всегда там выбивались ошибки, а у меня не было ни времени ни сил разбираться почему).
Там есть такие вот строки:

C++
1
2
3
4
char network_connections[]="Сетевые подключения";
char connection[]="Укртелеком";
char ConnectionDialog[]="Подключение: Укртелеком";
char ConnectionDialogButton[]="Подключение";
network_connections - название элемента "Сетевые подключения" в панели управления
connection - Это название того сетевого подключения которое нужно отключить/включить. У меня это "Укртелеком"
ConnectionDialog - название диалога который выскакивает при попытке создать подключение
ConnectionDialogButton - Кнопка которую нужно нажать, чтобы подключение началось.

Там поблема еще в том, что окошко диалога ищется просто после 2 секунд после попытки создать подключение.
Короче, разберетесь.
Вложения
Тип файла: rar ifolder.rar (24.9 Кб, 18 просмотров)
0
 Аватар для snake32
3514 / 1697 / 236
Регистрация: 26.02.2009
Сообщений: 8,504
Записей в блоге: 6
22.08.2009, 03:05
И всё таки, лично мне бы хотелось посмотреть на рабочий исходник через ф-ию RasEnumConnections.

Или хотябы объяснение почему не работает у нас с Eternal-Thunder.

А может это новая фишка-защита Windows XP SP3? Я просто не знаю что и думать.
0
 Аватар для Jnis
13 / 13 / 2
Регистрация: 06.01.2009
Сообщений: 70
23.08.2009, 12:23
Цитата Сообщение от Eternal-Thunder Посмотреть сообщение
с char выходит не совсем адекватно, заменил на int.
Ты на Char смотри как на целое число в диапазоне [-127;+128] и все будет адекватным, тк тебе нужно всего лишь [0;59]. Char занимает 1 байт, int 4 байта, зачем платить больше?
ЗЫ: в маленьких проектах данная проблема будет не очень заметна, но в крупных это ведет к ненужной потере памяти.
0
0 / 0 / 0
Регистрация: 10.06.2009
Сообщений: 19
23.08.2009, 13:57  [ТС]
Jnis, при выводе чара таким образом выводило крокозябру и многоточкозапяточие, а инт показывает чиселки. проект маленький, так что 6 лишних байт, надеюсь не много изменят.

И всё таки, лично мне бы хотелось посмотреть на рабочий исходник через ф-ию RasEnumConnections.
Это точно, мне бы тоже очень хотелось.

А может это новая фишка-защита Windows XP SP3? Я просто не знаю что и думать.
у меня вроде бы SP2.
0
 Аватар для Jnis
13 / 13 / 2
Регистрация: 06.01.2009
Сообщений: 70
24.08.2009, 01:23
Может уже немного не в тему, но в далекое будущее..
Цитата Сообщение от Eternal-Thunder Посмотреть сообщение
Jnis, при выводе чара таким образом выводило крокозябру и многоточкозапяточие, а инт показывает чиселки. проект маленький, так что 6 лишних байт, надеюсь не много изменят.
Особенность типа char такова, что при запихивании в строковые типы, без явных тому указательств, число считается как символ и не конвертируется в цифры.
От крокозябры можно избавится двумя способами:
1) заменить char на unsigned char ; разница не велика, просто диапазон [0;255], но это уже не char, он считается числовым типом.
2) явно указать что мы хотим от числа, да и вообще от машины, как бы она вела себя по отношению к данным:
C++
1
2
3
Label1->Caption=(String) (unsigned char)MM + " : " + (int)SS;
//(String) говорит что все что правее будет рассматриватся как строка, иначе машина начнет пытаться  как-то сложить все, а потом еще и вывести
//(unsigned char) и (int) для явного указания в каком виде мы эти числа хотим видеть(можно оба int, разные взял для наглядности). Можно хоть long или даже BOOL(не bool)
0
0 / 0 / 0
Регистрация: 10.06.2009
Сообщений: 19
24.08.2009, 20:33  [ТС]
Jnis, спасибо, приму к сведению, но в данный момент это не столь принципиально, как разорвать соединение, с помощью RasHangUp
На счёт "далекого" особенно порадовали, ещё раз спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.08.2009, 20:33
Помогаю со студенческими работами здесь

Выполнение скрипта по расписанию
Добрый день. Помогите решить проблему, необходимо каждый день, вечером, запускать определённый скрипт на сайте. Как это можно реализовать,...

Выполнение действий по расписанию
В моей программе пользователь может добавлять различные события и устанавливать время для них. Данные, записанные пользователем, заносятся...

Выполнение кода по расписанию
Подскажите пожалуйста, как реализовать такие задержки, к примеру я хочу чтобы определенный метод вызывался спустя каждые 2 часа. Без...

Выполнение списка заданий по расписанию
Имеется список задач требующих выполнения. Каждая задача выполняется через определенные промежутки времени. Вопрос - как лучше програмно...

Выполнение действий по расписанию, в определенное время
как сделать что бы прога отслеживала время и если наступило к примеру 21:00 выполнила какие-то действия? Бесконечным циклом запустить?...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru