Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > Изменение переменных BIOS. Запуск программ....


Автор: LamerTM 11.3.2006, 13:19
Здравствуйте. У меня в BIOS есть функция Resume on RTC Alarm. Она включает комп в определенное время, которое задается переменными BIOS:
RTC Alarm date
RTC Alarm Hour
RTC Alarm Minute
RTC Alarm Second

Эту функцию я сегодня проверил, она работает.

Я очень много чего не знаю, но мне это очень нужно.

1. Я хочу узнать как менять эти переменные BIOS из программы написанной на делфи (RTC Alarm date, RTC Alarm Hour...)
2. Как запустить программу из другой программы. Есть ли функция которая запускает Exe файл?
3. Как закрыть программу.
4. Как получить список работающих процессов.
5. Как завершить процесс.
6. Как установить соединение с интернет.
7. Как отключить соединение.
8. Как выключить компьтер из программы.

Пункт 2 (запуск другой проги из моей) я нашел на этом форуме, еще не разобрался и не проверил правда.

Для чего все это мне нужно. Мне нужно чтобы компьютер сам включался каждые 30 минут, чтобы загружалась ОС, запускалась программа №1, которая устанавливает соединение с интернет и запускает программу №2.
Программа №2 может глючить и ее возможно надо будет закрыть, а потом открыть снова. Т.к. она сильно глючит, то возможно понадобиться завершить ее процесс (как из диспетчера задач). После того как программа №2 нормально отработает, программа №1 должна закрыть программу №2, отключить соединение с интернет, изменить настройки BIOS чтобы обеспечить следующее включение компа через 30 минут и выключить компьютер.

Еще я не учел что должен быть произведен вход в систему. Скорее всего придется сделать так чтобы система не требовала ввода пароля и входила сразу. Не знаю можно ли так сделать в Windows 2000, сейчас проверю.

Автор: Тьма 11.3.2006, 17:05
ну во-первых: каждому топику свой вопрос

1 я не знаю как НТ-система отреагирует на твое желание напрямую обратится к биосу
2
запуск процесса и ожидание его завершения
Код

var 
 pi : TProcessInformation;  
 si : TStartupInfo;  
  
begin 
 ZeroMemory(@si,sizeof(si));  
 si.cb:=SizeOf(si);  
 if not CreateProcess(  
                                        PChar(lpApplicationName), //pointer to name of executable module  
                                        PChar(lpCommandLine), // Command line.  
                                        nil, // Process handle not inheritable.  
                                        nil, // Thread handle not inheritable.  
                                        False, // Set handle inheritance to FALSE.  
                                        0, // No creation flags.  
                                        nil, // Use parent's environment block.  
                                        nil, // Use parent's starting directory.  
                                        si, // Pointer to STARTUPINFO structure.  
                                        pi ) // Pointer to PROCESS_INFORMATION structure.  
 then begin  
             Result:=false;  
             RaiseLastWin32Error;   
             Exit;  
         end;  
 WaitForSingleObject(pi.hProcess,INFINITE);  
 CloseHandle(pi.hProcess);  
 CloseHandle(pi.hThread);  
 // ... здесь твой код  
end; 

Автор ответа: TAPAKAH


3. LRESULT SendMessage(
HWND hWnd, // handle of destination window
UINT Msg, // message to send
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
);
SendMessage(FindeWindow(nil, 'Заголовок програмы 2'), WM_CLOSE, nil, nil)

4.

5. BOOL TerminateProcess(
HANDLE hProcess, // handle to the process
UINT uExitCode // exit code for the process
);

6.

7.

8.

скачай себе ДРКБ www.drkb.ru там есть ответы на все твои вопросы или смотри ЧАВО http://forum.vingrad.ru/index.php?act=module&module=vingradfaq

Автор: MIX55 11.3.2006, 17:28
Цитата

я не знаю как НТ-система отреагирует на твое желание напрямую обратится к биосу

да никак она не отреагирует в нт системах нельзя напрямую обратится к биос

Автор: LamerTM 12.3.2006, 08:46
Если нельзя менять BIOS то все вопросы кроме 6 и 7 отпадают. Остается только дважды кликнуть на ярлыке подключения и потом отключить соединение. Или установить/отключить соединение другим способом (даже не представляю каким).

Автор: MIX55 12.3.2006, 11:40
Вообще надо воспользоваться поиском такие вопросы уже не раз задавались.
воспользуйся поиском по форуму.
или вотhttp://www.yandex.ru/yandsearch?rpt=rad&text=%F3%F1%F2%E0%ED%EE%E2%E8%F2%FC+%F1%EE%E5%E4%E8%ED%E5%ED%E8%E5+%F1+%E8%ED%F2%E5%F0%ED%E5%F2
можешь почитать также
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=356
скачай себе DRKB там много чего есть

Удачи
З.Ы.

И ВООБЩЕ ОДИН ТОПИК ОДИН ВОПРОС


Автор: LamerTM 13.3.2006, 00:19
Извиняюсь за то что в одном топике задал кучу вопросов. Я не знал таких правил. Поиском уже воспользовался и проблему решил. Делаю все имитацией нажатия кнопки мыши в нужном месте. Не самый лучший способ, но на время сойдет. Потом научусь делать лучше.
Форум хороший у вас.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)