| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: WinAPI и системное программирование > Замена стандартного копирования Windows |
| Автор: D_soyer 24.4.2007, 23:44 |
| Нужно заменить копирование с помощью вин. метода на свою программу, может кто подскажет, как: - запретить запуск копирования виндой. - получить адреса, для передачи в свою программу. Буду очень благодарен. Заранее спасибо. |
| Автор: D_soyer 25.4.2007, 11:34 |
Честно говоря не нашел толкового описания их, но, по-моему, это все таки не то, что мне нужно. Я понимаю, что нужна ловушка, вот только что ловить? А главное, как получить из обозревателя нужные адреса? |
| Автор: bartram 25.4.2007, 13:53 |
Какие ещё адреса? |
| Автор: D_soyer 25.4.2007, 19:03 |
пример: я делаю ctrl+c и ctrl+v - как только вставляю, нужно отменить копирование виндой и передать пути копирования в мою программу. |
| Автор: bartram 25.4.2007, 21:04 |
| Плохо искал. Вот из MSDN: http://msdn2.microsoft.com/en-us/library/aa363851.aspx Именно их тебе и надо перехватывать |
| Автор: D_soyer 25.4.2007, 22:32 |
| т.е. как я понял мне нужно регистрировать в системе процесс, который будет все время запущен и проверять вышеуказанные действия? Если не сложно, покажи на примере. |
| Автор: bartram 26.4.2007, 10:15 |
| Тебе надо почитать про Перехват Api. Ссылку давал во втором посте |
| Автор: D_soyer 26.4.2007, 23:21 |
| bartram Хорошо, допустим я разобрался с перехватом и перехватил сообщение о копировании. Значит мне нужно зарегистрировать в системе процесс(dll), для постоянного наблюдения, так ведь? Либо можно организовать драг-н-дроп с правой клавиши, уже не трогая копирование виндовс(произодя копирование непосредственно моей программой). Но и первый и второй способ требует регистрации процесса, это для меня прямо тупик, может подкинешь идею? |
| Автор: dumb 27.4.2007, 00:41 |
вот когда разберешься, и появятся конкретные проблемы - тогда и пиши. а на данный момент твои мысли по теме представляют из себя бессмысленный поток слов. |
| Автор: D_soyer 27.4.2007, 12:31 |
| function CopyFileHookProc(lpExistingFileName, lpNewFileName: PChar; bFailIfExists: BOOL): BOOL; stdcall; - хук копирования файла. Мне нужно отлавливать его все время, после установки(даже когда моя программа не запущена). Вопрос: как это реализовать? |
| Автор: bartram 27.4.2007, 13:06 | ||
При запуске системы подгружай ко всем процессам через реестр. |
| Автор: D_soyer 27.4.2007, 14:42 | ||
| bartram Я не знаю, как это сделать. Понимаю принцип, но не техническую часть. Облазил реестр на примере Киллкопи, вот что нашел: - как я понял, это хендлы контекстного меню (HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers\KillCopy\{A5C2457A-87BC-324E-8124-0025DC10AA03}) HKEY_CLASSES_ROOT\*\shellex\DragDropHandlers\KillCopy\{A5C2457A-87BC-324E-8124-0025DC10AA03} - это один из вариантов, которые мне были нужны.
Эти значения: {A5C2457A-87BC-324E-8124-0025DC10AA03} берутся из головы? - далее HKEY_CLASSES_ROOT\Folder - это, наверно, хендлы на драг-н-дроп папки(?) - и по идее сама регистрация Киллкопи: HKEY_CLASSES_ROOT\CLSID\{A5C2457A-87BC-324E-8124-0025DC10AA03}\killcopy.dll |
| Автор: bartram 28.4.2007, 20:44 |
| Код http://forum.vingrad.ru/index.php?showtopic=140242&view=findpost&p=1114521 Что непонятно- спрашивай |