Раздел форума:
Парни, вот такая задача: приложение (есть исходники) имеет кроме экзешника в том же дире ещё и сопутствующие файлы -- БД, ини и ещё кое-что, поэтому в автозагрузку копипастят с рабстола линк на экзешник. Предложите наиболее простой способ, как сделать так, чтобы приложение чувствовало, откуда оно запущено: из автозагрузки или вручную. Торможу; когда-то делал, но склероз. Решение со стартовыми пускачами, пожалуйста, не предлагайте, это тривиально, но не проходит; нужно, чтобы именно приложение чувствовало.
Страницы
Who is Mr. Putin? Чтобы не предлагать, надо хоть понять, что такое "стартовые пускачи". :))
А в окружении ничего подходящего нет? или может ярлычок как-то подправить (хоть бы тупо ключик добавить)?
Ну в Линуксе это несложно (ярлычок "desktop configuration file" имеет атрибуты с произвольным содержанием), а как в Виндовс?
В Виндовс тоже можно добавить ключ запуска в ярлык в поле Target после пути к программе
Как я понимаю, тебе нужно знать, где расположена папка в которой находится БД. Эсли пишеш на .Net то используй Application.StartupPath...
В том-то и проблема, что ничем, если ярлык копипастирован. :( Однако, помнится, я его правил, но склероз, блин...
>папка в которой находится БД...
Путь к БД (которая может переключаться приложением, ODBC или BDE не исплоьзуются) прописывается в ини-файле, который находится в том же дире, что и экзешник. Конечно, предвижу советы заюзать "регини" или писать инифайл всегда в системный дир. Но это не выход, т.к. требование: инифайл д.б. вместе с экзешником, чтобы при смене железа не терялся.
Пиши в ICQ 480919100, помогу
На C# это выглядит так:
string fileName = Path.Combine(Application.StartupPath,"fileName.ini");
переменная fileName будет содержать полный путь к файлу fileName.ini который содержится в одной папке с программой
Поскольку я в ОСах не силен (когда учился, был только DOS), то сходу ответить не смогу. Мне кажется, что единственное, где может храниться эта информация, это environment приложения. Или может где-то есть список последних запущенных программ? Тогда искомый ярлык будет предпоследним в списке.
типа один ярлык "app.exe -1" а другой "app.exe -2"
Как передавать параметры при запуске экзешника знают все студенты, но то через экзешник, а не ярлык, который имеет расширение не .exe, а .lnk. Вот, например, что содержит файл ярлыка IAR Embedded Workbench.lnk:
LFO :+0/E:\01IARIR:1common$cmmon01binbnL2IarIdePm.exe0IrIde
Pm.exeE:\IAR
Кто-нибудь знает, можно ли его редактировать и как редактировать?
http://www.stdlib.com/art6-Shortcut-File-Format-lnk.html
2Слава. Спасибо за ссылку; думаю, как воспользоваться. Огорчает, что XP не изменяет в ярлыке время последнего доступа, оставляя его нулевым. Решение могло бы быть красивым: определять по содержимому этого поля, какой ярлык сработал. Или в XP нужно что-то настроить? :(
using IWshRuntimeLibrary;
...
static class CreateShortcuts
{
public static bool CreateShortCut(string PathToApp, string ProdName)
{
try
{
//Ярлык на десктоп
object shortAdr = (object)"Desktop";
WshShell shell = new WshShell();
string link = ((string)shell.SpecialFolders.Item(ref shortAdr)) + ProdName + ".lnk";
IWshShortcut shortcut = (IWshShortcut)shell.CreateShortcut(link);
shortcut.Description = ProdName;
shortcut.TargetPath = PathToApp + ProdName + ".exe";
shortcut.WorkingDirectory = PathToApp;
shortcut.Save();
//Ярлык в авторан
string x = System.Environment.GetFolderPath(Environment.SpecialFolder.Startup);
shortcut = (IWshShortcut)shell.CreateShortcut(x + ProdName + ".lnk");
shortcut.Description = ProdName;
shortcut.TargetPath = PathToApp + @"\Launcher" + ProdName + ".exe";
shortcut.WorkingDirectory = PathToApp;
shortcut.Save();
return true;
}
catch
{
return false;
}
}
}
Я уже писал, что создавать ярлыки из программы для меня не проблема. Речь не о том, а об определении сработавшего ярлыка, да ещё к тому же сделанного ручками.
Но всё равно пасиб за участие.
Всем спасибо! Парни, заметьте, что ни один X даже не пытался тут себя проявить. :)
Всё банально, если знаешь, КУДА. :)
2dol. ОК, учту.
Ну, и, ессно, не смог сформулировать задачу потенциальному исполнителю... Я честно хотел помочь, но без вменяемого ТЗ - это обычно не выходит.
Народ в общем "гадал" - ну, и угадал для тебя направление поиска...
Я, разумеется, засранец, а Макс Д'Артаньян, но реально помог мне Слава; совет dol'я я уже учёл, засим прошу пардону, если задел чьи-то амбиции.
И к тому же у пользователей с разными учетными записями будут разные папки autorun и desktop, что тоже придется учитывать при правке ярлыков.
Страницы