Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.02.2008, 22:24   #1
ZhekON
Форумчанин
 
Аватар для ZhekON
 
Регистрация: 24.01.2007
Сообщений: 323
Восклицание Проводник.......

Люди хелп ми плиз....
Кароче такая штука....
всё что мне требуетсо ето :
1) увидеть открит ли проводник
2) проверить путь которий введён в строке АДРЕС
3) если путь начинаетсо с диска С:\ то закрить проводник(тоесть само окно);

вобщем идея етой проги чтоби невозможно било через проводник лазить по диску С:\ вот и всё

Всё что я незнаю:
1) как узнать открит ли проводник и какой АДРЕС в строке
2) как закрить проводник


нужно очень бистро ето сделать, такчто подойдут любые идеи)
Зарание спасибо)
Всё проще чем вы думаете, нужно только правильно подойти к тому или иному вопросу?

Последний раз редактировалось ZhekON; 08.02.2008 в 22:26.
ZhekON вне форума Ответить с цитированием
Старый 08.02.2008, 22:39   #2
Карась
Участник клуба
 
Аватар для Карась
 
Регистрация: 26.10.2007
Сообщений: 1,244
По умолчанию

Например у меня нету строки с адресом... да и зачем она если у меня стоит тотал.

Может быть просто искать окно "Мой компьютер"\"С:\" и закрывать его?
Умом Россию не понять, пока не выпито ноль пять,
А если выпито ноль пять всё делом кажется не хитрым,
Попытка глубже понимать уже попахивает литром...
Карась вне форума Ответить с цитированием
Старый 08.02.2008, 22:43   #3
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

На самом деле мне кажется это тупняк искать проводник и строку которая в нем. Помню интерисовался этой идеей... Помню кажется система информирует о изменениях все приложения, но не полностью...

нашел статью в D*e*p*i w*r*d Мониторинг каталогов

Цитата:
...

Для проверки состояния объектов используется несколько похожих функций. В нашем приложении мы будем использовать функцию WaitForSingleObject.

Рассмотрим подробнее функции
FindFirstChangeNotification
FindNextChangeNotification
FindCloseChangeNotification
WaitForSingleObject

HANDLE FindFirstChangeNotification
Создает сигнализирующий объект find change notification object для сканирования каталога.

Параметры:

LPCTSTR lpPathName, - Указатель на строку, которая содержит путь к проверяемому каталогу.
BOOL bWatchSubtree, - Флаг, указывающий, нужно ли проверять подкаталоги.
DWORD dwNotifyFilter - О каких изменениях в каталоге сигнализировать.

dwNotifyFilter
Определяет, о каких типах изменений будет сигнализировать объект
Возможные значения:

FILE_NOTIFY_CHANGE_FILE_NAME
Сигнализировать о создании, удалении и переименовании файла.
FILE_NOTIFY_CHANGE_DIR_NAME
Сигнализировать о создании, удалении, переименовании подкаталогов.
FILE_NOTIFY_CHANGE_ATTRIBUTES
Сигнализировать об изменении атрибутов файлов или подкаталогов.
FILE_NOTIFY_CHANGE_SIZE
Сигнализировать об изменении размеров файлов. Операционная система определяет, что размер файла изменился, только если он закрыт.
FILE_NOTIFY_CHANGE_LAST_WRITE
Сигнализировать о смене даты последнего изменения файла. Операционная система определяет, что дата изменения файла сменилась, только если он закрыт.
FILE_NOTIFY_CHANGE_SECURITY
Сигнализировать об изменениях дескриптора защиты.

В случае успешного выполнения функция возвращает Handle созданного сигнализирующего объекта.

BOOL FindNextChangeNotification
Функция запрашивает операционную систему, изменилось ли состояние сигнализирующего объекта.

Параметры:
HANDLE hChangeHandle // Handle сигнализирующего объекта

BOOL FindCloseChangeNotification
Удаляет сигнализирующий объект.

DWORD WaitForSingleObject
Функция завершается в том случае, если при проверке состояния сигнализирующего объекта происходит одно из событий:
· Состояние объекта изменилось на «Включен»
· Время ожидания, определенного при вызове функции, истекло.

Параметры:
HANDLE hHandle, // Handle сигнализирующего объекта
DWORD dwMilliseconds // Время ожидания в миллисекундах

dwMilliseconds
Может принимать следующие значения:
- время ожидания в миллисекундах
- INFINITE, в этом случае время ожидания не ограничено.

Функция WaitForSingleObject возвращает следующие значения:
WAIT_OBJECT_0 – Состояние объекта изменилось на «Включен»
WAIT_TIMEOUT - Истекло время ожидания.
Если при выполнении функции возникли ошибки, WaitForSingleObject возвращает код WAIT_FAILED. Если состояние объекта изменяется до истечения времени dwMilliseconds, то функция завершает работу немедленно с кодом WAIT_OBJECT_0.

-------------
Примечание: При возникновении ошибки во время выполнения этих функций
код ошибки можно получить, вызвав функцию GetLastError.
-------------
За более подробной информацией по этим и другим функциям обращайтесь к
Windows SDK.
-------------

...
Думаю то что надо
BOBAH13 вне форума Ответить с цитированием
Старый 09.02.2008, 00:28   #4
ZhekON
Форумчанин
 
Аватар для ZhekON
 
Регистрация: 24.01.2007
Сообщений: 323
По умолчанию

BOBAH13 бла бла бла... я ничё не понял из того всего текста))) можеш хоть чтото именно обяснить как оно должно искать путь)
Всё проще чем вы думаете, нужно только правильно подойти к тому или иному вопросу?
ZhekON вне форума Ответить с цитированием
Старый 09.02.2008, 00:54   #5
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

ZhekON, так ведь дело в том, что Ваша реализация уж очень... мммм.. наивная. Ну можно, конечно, через EnumWindows, GetWindowThreadProcessId и GetProcessImageFileName найти все експлореры, можно даже проще, через класс окна, можно найти в них тот комбобокс, в котором текущий каталог прописан, можно даже, скажем, через SendMessage(****, WM_SYSCOMMAND, SC_CLOSE, 0) их позакрывать..... но это как-то несерьезно..
B_N вне форума Ответить с цитированием
Старый 09.02.2008, 01:00   #6
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Цитата:
Сообщение от ZhekON Посмотреть сообщение
BOBAH13 бла бла бла... я ничё не понял из того всего текста))) можеш хоть чтото именно обяснить как оно должно искать путь)
рас для Вам этот текст только "бла бла бла..." то идите путем FindWindow, NextWindow... я думаю вы догадываитесь о чем я ? + Выше B_N Вам кучу способов привел, но их стабильность желает лучшего как и было сказано
BOBAH13 вне форума Ответить с цитированием
Старый 09.02.2008, 16:09   #7
ZhekON
Форумчанин
 
Аватар для ZhekON
 
Регистрация: 24.01.2007
Сообщений: 323
По умолчанию

BOBAH13 в том тексте я плохо понял как мне в строку типа стринг бросить с помощю LPCTSTR lpPathName адрес каталога и проверить начинаетсо ли он с С:\ и вообще я непонимаю как оно определяет открит ли каталог???

Если можно приведи пример... ((
Всё проще чем вы думаете, нужно только правильно подойти к тому или иному вопросу?
ZhekON вне форума Ответить с цитированием
Старый 09.02.2008, 18:50   #8
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,281
По умолчанию

Мой компьютер - Диск С - Свойства - Безопасность
Удалить из списка групп и пользователей группы "Пользователи" и "Все". Далее создаем нового пользователя в группе "Пользователи". А пользователей с правами админа паролим. Новый пользователь будет в системе на птичьих правах. Все ПО для этого пользователя устанавливаем на диск D и выводим ярлычки на рабочий стол.
Sibedir вне форума Ответить с цитированием
Старый 09.02.2008, 23:02   #9
ZhekON
Форумчанин
 
Аватар для ZhekON
 
Регистрация: 24.01.2007
Сообщений: 323
По умолчанию

Sibedir ты про ВИНДОВС ХР говориш? потомучто у мну такого нету)
вобщем дело не в том чтоби именно запретить доступ... нужно создать прогу которая будет запрещать доступ)
Всё проще чем вы думаете, нужно только правильно подойти к тому или иному вопросу?
ZhekON вне форума Ответить с цитированием
Старый 10.02.2008, 11:10   #10
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,281
По умолчанию

ZhekON, такое можно сделать в любой ОС. Есть специальное ПО.
Цитата:
вобщем дело не в том чтоби именно запретить доступ... нужно создать прогу которая будет запрещать доступ
Sibedir вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск