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

Вниз

Ярлык к процессу , НО не к самой программе.   Найти похожие ветки 

 
den.is ©   (2004-09-03 23:29) [0]

Обрисую ситуацию. Есть программа, в которой в компоненте listbox хранятся некие "имена". Каждое "имя" привязанно к целому набору программ и при щелчке на этом "имени" вызывается одновременный запуск всех этих прог. Нужно программно (по желанию пользователя) создавать ярылки (или нечто подобное) к каждому "имени" отдельно. При запуске этих ярлыков должна вызываться не вся программа, а сразу нужный (привязанный к ярлыку) процесс.
Подскажите как это можно реализовать. Хотя бы направление в котором копать.


 
Anton_K ©   (2004-09-04 00:39) [1]

Извените, но что вы понимаете под процессом и программой?


 
den.is ©   (2004-09-04 16:30) [2]

Хм... возможно я не совсем понятно выразился. Наверное, программа и процесс - это во многих случаях одно и тоже.

Попробую объяснить мою проблемму по другому. Обычно ярлыки создаются к исполняемому файлу программы/приложения в целом. Мне же нужно создать нечто подобное, но запускаюшее не саму программу с её менюшками, кнопками и остальной ерундой, а сразу провоцируюшее выполнение конкретной функции этой программы. Функций много, следовательно и "ярлыков" ведуших к разным функциям одной программы, тоже много.

Надеюсь теперь понятно.

ЗЫ: возможно кто-то делал нечто подобное...


 
Anton_K ©   (2004-09-04 16:54) [3]

Можно создавать файлы с каким-нибудь расширением и назначить вашу программу, как программу для открытия этих файлов по умолчанию. В этот файл нужно записать какую функцию какой программы следует вызвать. Когда пользователь открывает этот файл, запускается ваша программа. Она смотрит что нужно вызвать и... вызывает.


 
den.is ©   (2004-09-04 23:14) [4]

Спасибо за совет.


 
DrPass ©   (2004-09-04 23:16) [5]


> Можно создавать файлы с каким-нибудь расширением и назначить
> вашу программу, как программу для открытия этих файлов по
> умолчанию

А что, просто передачу параметров в командной строке уже не модно использовать?


 
Anton_K ©   (2004-09-05 00:10) [6]

> А что, просто передачу параметров в командной строке уже не
> модно использовать?


Нет, не модно, мы же не во времена DOS"а живём :)


 
den.is ©   (2004-09-05 00:47) [7]

хорошо, допустим есть файл (точнее некое *.расширение). как связать его с программой? наверное, через риестр, но в какой ключь писать? Перед этим, наверное, нужно эту самую прогу правильно зарегестрировать, как? Теперь, как организовать передачу из файла в программу запроса на выполнение функции?

ЗЫ: думаю, я задал слишком много общих вопросов, тем не менее был бы благодарен если бы мне обозначили тему, в которой следует копаться. а ежели еще и парочку ссылочек приложат (мечтательно)...

2 drPass
что-нибудь типа shellexecute() и параметры в разделе parametrs? а в каком виде?


 
Anton_K ©   (2004-09-05 01:00) [8]

Я точно не знаю, но кажется, есть специальные WinAPI функции, которые связывают файлы с программой.
Когда пользователь открывает файл, Windows вызывает вашу прогу и передаёт в параметрах комадной строки путь к этому файлу. Получить его можно функцией ParamStr(1). Ваша программа должна открывать этот файл, считавать из него какую функцию нужно вызвать, закрывать файл и вызывать нужную функцию.


 
jack128 ©   (2004-09-05 01:01) [9]

den.is ©   (05.09.04 0:47) [7]
хорошо, допустим есть файл (точнее некое *.расширение). как связать его с программой? наверное, через риестр, но в какой ключь писать?

в FAQ"е есть.. Но вообще если те нужно выполнять 100 различных функций - ты что 100 различный расширений регестрировать будешь??
den.is ©   (05.09.04 0:47) [7]
Теперь, как организовать передачу из файла в программу запроса на выполнение функции?


Вернемся к началу ;-) Что тебе нужно? Тебе нужны ярлыки, которые бы вызывали определенные действия со стороны уже запущенной программы? Я правильно понял?
Тогда так: создаешь несклолько ярлыков к твоей программе. в них прописываешь камандную строку. В этой командной строке должена быть закодирована та функция, которую должен вызвать данный ярлык (например пусть функции MyFunc1 соответствует камандная строка "MyFunc1", а функции MyFunc2 строка "MyFunc2". Запускается твоя прога и она анализирует  ком. строку, чтобы понять, что нужно делать. После этого смотрит - она  уже первый запущенный экземпляр программы или нет (как этот зделать - см FAQ"и , можно использовать мьютексы, например) если первый экземпляр, то выполняет эту функцию, если нет, то ищет главное окно эже запущенной программы и отправляет ему сообщение с кодом функции, которую нужно выполнить..
Как то все сложно выходит, но это первое, что приходит на ум..


 
Profi ©   (2004-09-05 01:06) [10]

den.is ©   (05.09.04 0:47) [7]
procedure privyazka_fayla_k_programme;
var r:tregistry;
begin
r:=tregistry.Create;
r.RootKey:=HKEY_CLASSES_ROOT;
r.OpenKey(".tvoe_razshirenie",true);
r.WriteString("","Nazvanie Fayla (NE IMYA!)");
r.CloseKey;
r.CreateKey("Tvoe_razshirenie"+"file_cyd");
r.OpenKey("Nazvanie_fayla\DefaultIcon",",True);
r.WriteString("","Put_k_ikonke");
r.CloseKey;
r.OpenKey("Nazvanie Fayla\shell\open\command",true);
r.WriteString("",application.ExeName+" "%1"");
r.CloseKey;
r.Free;
end;


 
Anton_K ©   (2004-09-05 01:19) [11]

Но вообще если те нужно выполнять 100 различных функций - ты что 100 различный расширений регестрировать будешь??

А зачем тут 100 расширений? Можно записать в сам файл, какую функцию вызывать.

Можно, конечно, использовать ярлыки на твою прогу и передавать там в комадной строке нужную команду, но пользователь сможет сам изменять эти ярлыки, если это не страшно, то так и сделай. А если надо чтобы пользователь мог изменять "ярлыки" (файлы с расширением) только с помошью твоей проги, то делай, как я советую.


 
jack128 ©   (2004-09-05 01:46) [12]


> но пользователь сможет сам изменять эти ярлыки, если
> это не страшно, то так и сделай. А если надо чтобы
> пользователь мог изменять "ярлыки" (файлы с
> расширением) только с помошью твоей проги, то делай,
> как я советую.
А если пользователь захочт изменить эти файлы, то что??


 
GuAV ©   (2004-09-05 01:55) [13]

An application can register a filename extension as a "shortcut" file type. If a file has a filename extension that has been registered as a shortcut file type, the system automatically adds the system-defined link overlay icon (a small arrow) to the file"s icon. To register a filename extension as a shortcut file type, you must add the "IsShortcut" value to the registry description of the filename extension. Note that the shell must be restarted for the overlay icon to take effect.

HKEY_CLASSES_ROOT  
 .xyz    (Default) = "XYZApp"
 .
 .
 .
 XYZApp  IsShortcut = ""

т.е. свой тип файла
и в нём IsShortcut = ""


 
GrayFace ©   (2004-09-05 09:00) [14]

Как я понял, Den.is"у нужно просто изменить иконку в панеле задач...


 
Anton_K ©   (2004-09-05 13:38) [15]

А если пользователь захочт изменить эти файлы, то что??

Он их и изменит с помощью проги, которая эти файлы создала:
"А если надо чтобы пользователь мог изменять "ярлыки" (файлы с расширением) только с помошью твоей проги..."

Как я понял, Den.is"у нужно просто изменить иконку в панеле задач...

Неправильно ты понял.



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

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

Наверх





Память: 0.49 MB
Время: 0.037 c
4-1094479229
Fktrc
2004-09-06 18:00
2004.10.10
SEMAPHORE_ALL_ACCESS отсутствует


8-1090407440
Urvin
2004-07-21 14:57
2004.10.10
EMS


1-1096286363
TActionManager
2004-09-27 15:59
2004.10.10
Как создать свой пункт меню первого уровня


4-1094743108
Sur
2004-09-09 19:18
2004.10.10
clipboard


4-1094819126
dy
2004-09-10 16:25
2004.10.10
Перехват сообщений о создании окошек





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский