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 Все, сделал =) уже не надо, но все равно спасибо =) Ссылка на комментарий
NAT Опубликовано 29 января, 2009 Жалоба Поделиться Опубликовано 29 января, 2009 В Delphi World всё это есть Ссылка на комментарий
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 помогли =) Ссылка на комментарий
Рекомендуемые сообщения
Пожалуйста, войдите, чтобы комментировать
Вы сможете оставить комментарий после входа в
Войти