Po$amax@ Опубликовано 29 января, 2009 Жалоба Опубликовано 29 января, 2009 Сабж, помогите сделать, пожалуйста
bayarookie Опубликовано 29 января, 2009 Жалоба Опубликовано 29 января, 2009 TerminateProcess(номер процесса, номер ошибки);а потом опять запустить или чего?
Po$amax@ Опубликовано 29 января, 2009 Автор Жалоба Опубликовано 29 января, 2009 bayarookieможно так попробовать, только как вычислить номер процесса EXPLORER.EXE и потом его запустить, надо срочно
D_Master Опубликовано 29 января, 2009 Жалоба Опубликовано 29 января, 2009 Po$amax@// Для примера возьмем привилегию отладки приложений 'SeDebugPrivilege'// необходимую для завершения ЛЮБЫХ процессов в системе (завершение процесов// созданных текущим пользователем привилегия не нужна.function ProcessTerminate(dwPID:Cardinal):Boolean;varhToken:THandle;SeDebugNameValue:Int64;tkp:TOKEN_PRIVILEGES;ReturnLength:Cardinal;hProcess:THandle;beginResult:=false;// Добавляем привилегию SeDebugPrivilege// Для начала получаем токен нашего процессаif not OpenProcessToken( GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGESor TOKEN_QUERY, hToken ) thenexit;// Получаем LUID привилегииif not LookupPrivilegeValue( nil, 'SeDebugPrivilege', SeDebugNameValue )then beginCloseHandle(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_SUCCESSthen exit;Result:=true;end;// Название добавление/удаление привилгии немного неправильные. Привилегия или// есть в токене процесса или ее нет. Если привилегия есть, то она может быть в// двух состояниях - или включеная или отключеная. И в этом примере мы только// включаем или выключаем необходимую привилегию, а не добавляем ее. // Включение, приминение и отключения привилегии.илиbeginct:=CreateToolhelp32Snapshot(TH32CS_SNAPALL,0); Process32First(ct,p); while Process32Next(ct,p) do begin if p.szExeFile='winamp.exe' then begin th:=OpenProcess(PROCESS_ALL_ACCESS,false,p.th32ProcessID); TerminateProcess(th,0); end; end; {} end;var p:PROCESSENTRY32;ct:cardinal;th:Cardinal;или...function KillTask(ExeFileName:string):integer;constPROCESS_TERMINATE=$0001;varCo:BOOL;FS:THandle;FP:TProcessEntry32;beginresult:=0;FS:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);FP.dwSize:=Sizeof(FP);Co:=Process32First(FS,FP);while integer(Co) <> 0 dobeginif ((UpperCase(ExtractFileName(FP.szExeFile))=UpperCase(ExeFileName)) or(UpperCase(FP.szExeFile)=UpperCase(ExeFileName))) thenResult:=Integer(TerminateProcess(OpenProcess(PROCESS_TERMINATE, BOOL(0),FP.th32ProcessID),0));Co:=Process32Next(FS,FP);end;CloseHandle(FS);end;uses Tlhelp32;ЗЫ Я в Делфи ни бум-бум, так что, если это не то, то не пинать
Po$amax@ Опубликовано 29 января, 2009 Автор Жалоба Опубликовано 29 января, 2009 Как можно создать файл в папке, например some.ini ??или как createfile пользоваться???ДА. Как можно атрибут файлу через дельфи поставить? (мне надо readonly, hidden и system)
D_Master Опубликовано 29 января, 2009 Жалоба Опубликовано 29 января, 2009 Po$amax@имхо легче батник написать @Echo offEcho SomeText>SOME.INIEcho SomeLine>>SOME.INIAttrib +R +S +H C:\SOME.INIExitR - readonly, S - system, H - hidden.
Po$amax@ Опубликовано 29 января, 2009 Автор Жалоба Опубликовано 29 января, 2009 D_Masterнене, надо на Delphi только.Кстати, я чет не могу посредством моей проги сменить значек у папки =( Сколько не пытал
D_Master Опубликовано 29 января, 2009 Жалоба Опубликовано 29 января, 2009 Кстати, я чет не могу посредством моей проги сменить значек у папкиИ какое же расширение ты задавал? Значок папки задается из файла desktop.ini, который лежит в корне папки.Содержимое:[.ShellClassInfo]IconResource=C:\Windows\system32\SHELL32.dll,13
Po$amax@ Опубликовано 29 января, 2009 Автор Жалоба Опубликовано 29 января, 2009 Все, сделал =) уже не надо, но все равно спасибо =)
Po$amax@ Опубликовано 30 января, 2009 Автор Жалоба Опубликовано 30 января, 2009 В Delphi World всё это естьпро Inifile я знаю, что есть, я оттуда и учился давно =)А вот с рестартом я не нашел ниче
D_Master Опубликовано 30 января, 2009 Жалоба Опубликовано 30 января, 2009 А вот с рестартом я не нашел ничеВозьми стороннюю прогу, которая будет перезапускать эксплорер
NAT Опубликовано 30 января, 2009 Жалоба Опубликовано 30 января, 2009 Po$amax@TerminateProcess(номер процесса, номер ошибки);а потом опять запустить или чего?вот так сделать да и всё
Po$amax@ Опубликовано 30 января, 2009 Автор Жалоба Опубликовано 30 января, 2009 D_Masterне, не поняли вы пхд. Уже сделано все =) примеры d_master'a помогли =)
Рекомендуемые сообщения
Пожалуйста, войдите, чтобы комментировать
Вы сможете оставить комментарий после входа в
Войти