Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.07.2012, 23:26   #11
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Цитата:
Сообщение от mafioziya Посмотреть сообщение
и я не убица
Угу, мафиози вообще люди добрые...


Можно время сравнивать с текущем
Код:
var Hours, Minutes, Seconds, Milliseconds: Word;
...
DecodeTime(GetTime, Hours, Minutes, Seconds, Milliseconds);
Таймер поставить секунд на 40 и в нём проверять
Код:
if (Hours=12) and (Minutes=0) then запуск
if (Hours=12) and (Minutes=30) then убийство
Запуск по CreateProcess, убийство по TerminateProcess
eoln вне форума Ответить с цитированием
Старый 04.07.2012, 03:02   #12
Npwas
Форумчанин
 
Аватар для Npwas
 
Регистрация: 26.09.2011
Сообщений: 158
По умолчанию

Вот так убиваем процесс (программу) по его имени:

Код:
{ОПРЕДЕЛЕНИЕ id Процесса}
FUNCTION SearchPid(processName_fc:string):Cardinal;
 Var
   hSnap:THandle;
   pe:TProcessEntry32;

 BEGIN
   pe.dwSize:=SizeOf(pe);
   hSnap:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
  IF Process32First(hSnap,pe) Then
    While Process32Next(hSnap,pe) Do
      IF ExtractFileName(pe.szExeFile)=processName_fc Then
          Result:=pe.th32ProcessID;
 END;

{ОТКЛЮЧЕНИЕ ПРОЦЕССА}
FUNCTION ProcessTerminate(dwPID:Cardinal):Boolean;
 Var
   hToken:THandle;
   SeDebugNameValue:Int64;
   tkp:TOKEN_PRIVILEGES;
   ReturnLength:Cardinal;
   hProcess:THandle;
 BEGIN
   Result:=false;
   // Добавляем привилегию SeDebugPrivilege
   // Для начала получаем токен нашего процесса
   IF not OpenProcessToken( GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES
        or TOKEN_QUERY, hToken ) Then
    exit;
   // Получаем LUID привилегии
   IF not LookupPrivilegeValue( nil, 'SeDebugPrivilege', SeDebugNameValue )
     Then
       Begin
        CloseHandle(hToken);
        exit;
       End;
   tkp.PrivilegeCount:= 1;
   tkp.Privileges[0].Luid := SeDebugNameValue;
   tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
   // Добавляем привилегию к нашему процессу
   AdjustTokenPrivileges(hToken,false,tkp,SizeOf(tkp)  ,tkp,ReturnLength);
   IF GetLastError()<> ERROR_SUCCESS  Then
          exit;
   // Завершаем процесс. Если у нас есть SeDebugPrivilege, то мы можем
   // завершить и системный процесс
   // Получаем дескриптор процесса для его завершения
   hProcess:=OpenProcess(PROCESS_TERMINATE, FALSE, dwPID);
   IF hProcess =0  Then
             exit;
   // Завершаем процесс
   IF not TerminateProcess(hProcess, DWORD(-1)) Then
        exit;
   CloseHandle( hProcess );
   // Удаляем привилегию
   tkp.Privileges[0].Attributes := 0;
   AdjustTokenPrivileges(hToken, FALSE, tkp, SizeOf(tkp), tkp, ReturnLength);
   IF GetLastError() <>  ERROR_SUCCESS Then
         exit;
   Result:=true;
 END;

{УБИВАЕМ ПРОЦЕСС}
PROCEDURE KillNachChoosenProc;
 BEGIN
   ProcessTerminate(SearchPid('ИМЯ_ПРОЦЕССА.EXE'));
 END;
<----Весы Там.
Npwas вне форума Ответить с цитированием
Старый 04.07.2012, 07:05   #13
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Npwas, это всё лишнее. После запуска по CreateProcess у нас уже будет вся информация.
Код:
var
  h: LongBool = false;
  StartUpInfo: TStartUpInfo;
  ProcInfo: TProcessInformation;
...
  //запуск
  with StartUpInfo do begin
    cb := SizeOf(TStartUpInfo);
    dwFlags := STARTF_USESHOWWINDOW or STARTF_FORCEONFEEDBACK;
    wShowWindow := SW_SHOWNORMAL;
  end;
  h := CreateProcess('C:\Windows\System32\notepad.exe', '', nil, nil, false,
    NORMAL_PRIORITY_CLASS, nil, nil, StartUpInfo, ProcInfo);

  //остановка
  with ProcInfo do begin
    WaitForInputIdle(hProcess, INFINITE);//если завершаем не сразу же можно и не использовать
    TerminateProcess(hProcess, NO_ERROR);
    CloseHandle(hThread);
    CloseHandle(hProcess);
  end;
eoln вне форума Ответить с цитированием
Старый 04.07.2012, 07:47   #14
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
я и обратился за помощью
Я тебе ее предоставил насколько смог.
Цитата:
я не убица
Разве я это про тебя сказал? Я спросил есть ли у тебя в наличии функция, кикающая процессы, всего-то.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.07.2012, 13:36   #15
mafioziya
Новичок
Джуниор
 
Регистрация: 03.07.2012
Сообщений: 5
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Я тебе ее предоставил насколько смог.
.
Спасибо,попробую что то из этого слепить
если что напишу
mafioziya вне форума Ответить с цитированием
Старый 28.10.2014, 18:55   #16
an_private
Пользователь
 
Регистрация: 17.10.2014
Сообщений: 17
По умолчанию

Цитата:
Сообщение от eoln Посмотреть сообщение
Npwas, это всё лишнее. После запуска по CreateProcess у нас уже будет вся информация.
А это точно работает? Запускаю внешнюю программу через CreateProcess. Надо её прервать, делаю как написано - terminateprocess с хендлом процесса. Результат - никакого - программа продолжает выполняться. Причём terminateprocess возвращает ненулевое значение, то есть с его точки зрения всё хорошо. Что это может быть?
an_private вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с таймером fbus Java Мобильная разработка (Android) 5 07.08.2014 08:56
Работа с таймером С# JK0 Помощь студентам 1 31.10.2011 16:25
работа с таймером Kazik Помощь студентам 5 04.06.2010 21:07
работа с таймером Андрей.12 Помощь студентам 3 28.03.2010 22:36
Работа с таймером Alika Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 12.11.2007 19:27