Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2003.05.26;
Скачать: [xml.tar.bz2];

Вниз

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

 
Шоломицкий   (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 вся ветка

Форум: "WinAPI";
Текущий архив: 2003.05.26;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.007 c
14-83677
Карелин Артем
2003-04-30 12:09
2003.05.26
Yaffil, Работа с офисом 97 через OLE, Win 95 и слабый комп.


1-83477
Ancara
2003-05-15 12:02
2003.05.26
завершение работы чужой программы


4-83820
vvhedgehog
2003-03-31 17:17
2003.05.26
Написание своего компонента с отловом сообщений


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


1-83521
$HiC0
2003-05-13 11:22
2003.05.26
2-х цветное изображение... получение, обработка





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский