Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Адрес файла


Автор: BIV 10.12.2012, 21:34
Всем доброе время суток!
Пишу на Visual Studia C++ 2008. Механизм работы таков, выделяю файл или папку, вызываю контекстное меню, через это контекстное меню запускаю мою программу. Как добавлять программу в контекстное меню я узнал http://www.thevista.ru/page.php?id=11625, вопрос в том, как в запущенной программе получить адрес файла или папки из которого вызвал меню?
Эффект должен быть как в свойствах папки или файла во вкладке "Общие" в "Расположение"

Автор: tzirechnoy 10.12.2012, 21:54
Берясь за новую для тебя, но вполне известную человечеству область деятельности -- несколько опрометчиво пытаться изобрести всё самому, без учёта накопленного и доступного опыта. Сборниками такого опыта обычно являются учебники.
И C++ и программирование -- это именно такая, новая для тебя, область деятельности.

Возьми, наконец, учебник, и пройди его (не прочитай дажэ, а прочитай и прорешай задачи)!
Поможэт хотя бы с термнологией.

Автор: BIV 10.12.2012, 22:01
Ничего себе ответ. Я уже прочел книги Рихтера, Румянцева и Майкла Дж.Янга. Находил как получить адреса если файл открыть обычным способом, но через контекстное меню ни разу не встречал. Прошу внимательно прочесть мой вопрос

Автор: tzirechnoy 10.12.2012, 22:28
И чем жэ ты читал эти книги, если до сих пор считаешь, что файл в windows идэнтифицыруется адресом?

Автор: BIV 10.12.2012, 22:40
Имел бы смысл это писать если потом будет пояснение что я понимаю не так и как можно решить эту поставленную задачу

Автор: volatile 10.12.2012, 23:38
Цитата(BIV @  10.12.2012,  21:34 Найти цитируемый пост)
вызываю контекстное меню, через это контекстное меню запускаю мою программу. 

Цитата(BIV @  10.12.2012,  21:34 Найти цитируемый пост)
 как в запущенной программе получить адрес файла 

Код

int main(int argc, char** argv)
{
   if (argc > 1)
   {
      std::cout << argv [1]; // Выведет имя файла.
   }

}

BIV, 
tzirechnoy прав. у вас проблемы с терминологией. у файла нет адреса, (верней строго говоря, адрес есть, но он вам врядли когда понадобится), вам нужно имя файла.



Автор: BIV 10.12.2012, 23:52
Т.е. если я щелкну по файлу или папке правой кнопкой мыши и выберу в контекстном меню мою программу, то передастся имя файла? Это будет что-то похоже если я передам параметры через командную строку типа file.exe <параметры>?

Смогу ли я потом применить команду к папке например system("append argv");?

P.S. С tzirechnoy проблема в том, что сразу говорит что типа ты дурак, читай и прочее, а что именно я не понимаю не понятно.

Автор: volatile 11.12.2012, 00:00
Цитата(BIV @  10.12.2012,  23:52 Найти цитируемый пост)
е. если я щелкну по файлу или папке правой кнопкой мыши и выберу в контекстном меню мою программу, то передастся имя файла?

если на файле выбрать "открыть с помощью..." и затем выбрать вашу программу, да.
по-крайней мере, если в системе не копались, она так делает по умолчанию.

Автор: BIV 11.12.2012, 00:08
Не знаю, об одном и том же говорим или нет, но я имею ввиду вот что
http://s2.ipicture.ru/Gallery/Viewfull/19420143.html
На место Unlocker будет висеть моя программа. Если это одно и тоже, то спасибо большое за помощь, если нет, то хотел бы для этого случая понять

Автор: volatile 11.12.2012, 00:25
BIV, ну попробуйте... что долго рассуждать то?
(по рисунку я же не вижу как там у вас она подключена.)

Автор: feodorv 11.12.2012, 08:39
Цитата(BIV @  11.12.2012,  00:52 Найти цитируемый пост)
Это будет что-то похоже если я передам параметры через командную строку типа file.exe <параметры>?

Да, если в команде, прописываемой в реестре, определить параметр "%1":
Цитата

"D:\Program Files\ACDSee32\ACDSee32.exe" "%1"

Двойные кавычки нужны для тех файлов, чьё имя содержит пробелы.

Проверьте на тестовой программе, которую привёл volatile.

Автор: Dem_max 11.12.2012, 13:44
Ну можно имя файла получать через DDE сервер.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)