Главная страница
    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.066 c
4-1094549744
Multy
2004-09-07 13:35
2004.10.10
Как просмотреть список запушеных приложений?


14-1095441453
Sanek_Metaller
2004-09-17 21:17
2004.10.10
Завтра концерт Каннибалов,кто-нить пойдет?


14-1096002016
080D:07BBh
2004-09-24 09:00
2004.10.10
Caliber RM


3-1094188498
ol
2004-09-03 09:14
2004.10.10
как проверить, в интербейс, существует ли таблица с таким-то


3-1094814451
nick-from
2004-09-10 15:07
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский