Таков вопрос - как убить процесс/закрыть программу, если после нажатия Ctrl+Alt+Delete в колонке "Имя процесса" его имя, например, StreamingMediaPlayer.exe? Собственно суть программы такова - запускается другая программа и через несколько сек. надо ее закрыть. Об API почти ничего не знаю Нашел несколько подходящих функций/процедур, но среди аргументов - типы Cardinal, Classname. Что это такое? Как найти эти данные для моего процесса? Спасибо всем, кто откликнется
if CreateProcess(nil,PChar(frmNewProc.OpenDialog1.FileName), nil, nil, false, CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, nil, nil, lpStartUpInfo, ProcessInformation) then begin end else begin MessageDlg('Выбранный файл "' + frmNewProc.OpenDialog1.FileName+ '" не является приложением Win32', mtInformation, [mbOk], 0);
RESULT := FALSE; end;
//if WaitForSingleObject(ProcessInformation.hProcess, 10000) = WAIT_TIMEOUT then //RESULT := FALSE;
except on E: Exception do begin MessageDlg('Невозможно запустить процесс: ' + E.Message, mtError, [mbCancel], 0);
RESULT := FALSE; end; end; end else RESULT := FALSE; end;
function CloseProcess: Boolean; begin RESULT := TRUE; try TerminateProcess(ProcessInformation.hProcess, 0); CloseHandle(ProcessInformation.hProcess); CloseHandle(ProcessInformation.hThread); except on E: Exception do begin MessageDlg('Невозможно завершить процесс "' + frmNewProc.OpenDialog1.FileName + '" : ', mtWarning, [mbOk], 0); RESULT := FALSE; end; end; end;
//...
--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'