Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.05.26;
Скачать: CL | DM;

Вниз

Переименование у адление каталога. Запрет!   Найти похожие ветки 

 
Шоломицкий ©   (2003-03-07 18:53) [0]

Нужно запретить переименование и удаление каталога.
Я думаю что надо предусмотреть два случая:
1)Закрытия контекстного меню для выбранной папки(запрет к пунктам "Переименовать" и "Удалить"
2)Запред нажатию Del , F2 на выбранной папке
Помогите осощуствить плиз


 
Song ©   (2003-03-07 20:13) [1]

Бесполезно этим заниматься.


 
Шоломицкий ©   (2003-03-07 20:16) [2]

Почему?
Надо как-то определить handle меню папки хотя бы


 
Song ©   (2003-03-07 20:18) [3]

В разных ОС будет всё по-разному.


 
IContextMenu   (2003-03-08 02:45) [4]

ICopyHook


 
Pat ©   (2003-03-08 11:28) [5]

Свой драйвер писать


 
Шоломицкий ©   (2003-03-08 15:29) [6]

Мда....круто


 
volk ©   (2003-03-09 13:20) [7]

Все намного проще, нужно написать shell extensions (расширение оболочки виндовс) в виде COM-сервера:

unit CopyMain;

interface

uses Windows, ComObj, ShlObj;

type
TCopyHook = class(TComObject, ICopyHook)
protected
function CopyCallback(Wnd: HWND; wFunc, wFlags: UINT; pszSrcFile: PAnsiChar;
dwSrcAttribs: DWORD; pszDestFile: PAnsiChar; dwDestAttribs: DWORD): UINT; stdcall;
end;

TCopyHookFactory = class(TComObjectFactory)
protected
function GetProgID: string; override;
procedure ApproveShellExtension(Register: Boolean; const ClsID: string);
virtual;
public
procedure UpdateRegistry(Register: Boolean); override;
end;

implementation

uses ComServ, SysUtils, Registry;

{ TCopyHook }

// This is the method which is called by the shell for folder operations
function TCopyHook.CopyCallback(Wnd: HWND; wFunc, wFlags: UINT;
pszSrcFile: PAnsiChar; dwSrcAttribs: DWORD; pszDestFile: PAnsiChar;
dwDestAttribs: DWORD): UINT;
const
MyMessage: string = "Are you sure you want to mess with "%s"?";
begin
// confirm operation
Result := MessageBox(Wnd, PChar(Format(MyMessage, [pszSrcFile])),
"D4DG Shell Extension", MB_YESNO);
end;

{ TCopyHookFactory }

function TCopyHookFactory.GetProgID: string;
begin
// ProgID not needed for shell extension
Result := "";
end;

procedure TCopyHookFactory.UpdateRegistry(Register: Boolean);
var
ClsID: string;
begin
ClsID := GUIDToString(ClassID);
inherited UpdateRegistry(Register);
ApproveShellExtension(Register, ClsID);
if Register then
// add shell extension clsid to CopyHookHandlers reg entry
CreateRegKey("directory\shellex\CopyHookHandlers\" + ClassName, "",
ClsID)
else
DeleteRegKey("directory\shellex\CopyHookHandlers\" + ClassName);
end;

procedure TCopyHookFactory.ApproveShellExtension(Register: Boolean;
const ClsID: string);
// This registry entry is required in order for the extension to
// operate correctly under Windows NT.
const
SApproveKey = "SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Approved";
begin
with TRegistry.Create do
try
RootKey := HKEY_LOCAL_MACHINE;
if not OpenKey(SApproveKey, True) then Exit;
if Register then WriteString(ClsID, Description)
else DeleteValue(ClsID);
finally
Free;
end;
end;

const
CLSID_CopyHook: TGUID = "{66CD5F60-A044-11D0-A9BF-00A024E3867F}";

initialization
TCopyHookFactory.Create(ComServer, TCopyHook, CLSID_CopyHook,
"D4DG_CopyHook", "D4DG Copy Hook Shell Extension Example",
ciMultiInstance, tmApartment);
end.

А вообще есть мощная книга С.Тейксейра и К.Пачеко
Delphi 5 Руководство разработчика.
Очень толково и понятно. Даже денег не жалко
www.williamspublishing.com
там есть все исходники из книги, но без самой книги
трудно понять, что к чему относится.
Удачи.


 
Pat ©   (2003-03-09 16:55) [8]

Хм...а на FAR и другие файловые менеджеры это тоже распространяется?


 
}{enon ©   (2003-03-09 20:54) [9]

Ну, файл от этого защищается открытием (для вывода, но без перезаписи). А поскольку каталог - это тоже своего рода файл, то можно попробовать открыть и его.


 
Александр Спелицин ©   (2003-03-11 12:01) [10]

Поместите в этот каталог какой-либо exe/dll файл и запустите/загрузите его. И пока этот файл будет висеть в памяти, с каталогом Вы ничего не сделаете.


 
Шоломицкий ©   (2003-03-25 19:51) [11]

Александр Спелицин разве?
Заходишь в папку и удаляешь все вайлы кроме запущенного!(


 
Александр Спелицин ©   (2003-03-26 20:38) [12]


> Нужно запретить переименование и удаление каталога

По-моему вопрос был ясно задан. Про файлы в этом каталоге речи не было.



Страницы: 1 вся ветка

Текущий архив: 2003.05.26;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.017 c
3-83355
Antoxa
2003-05-06 03:09
2003.05.26
Подскажите, как программно изменить тип поля в таблице


1-83581
VCV
2003-05-14 07:34
2003.05.26
Подскажите, как реализовать интерфейс


14-83659
Ihor Osov'yak
2003-05-05 01:06
2003.05.26
Ты или Вы


1-83528
cult
2003-05-13 11:49
2003.05.26
Импорт ActiveX-компонента


4-83817
Kron
2003-03-31 12:31
2003.05.26
Как обработать событье максимизации формы?