Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.08.2012, 10:42   #1
avd
Пользователь
 
Регистрация: 06.06.2010
Сообщений: 79
По умолчанию Автозапуск приложения. Но вопрос совсем не про автозапуск приложения.

В реестре, в ветке HKEY_CURRENT_USER\Software\Microsof t\Windows\CurrentVersion\Run прописан путь к *.exe.
При запуске Win приложение как положено запускается. Но!
В меню программы есть пункт "справка" при клике на который:
Код:
procedure TForm1.helpClick(Sender: TObject);
var
  h: HWND;
begin
  h := FindWindow('HH Parent', 'Справочка');
  if h = 0 then WinExec('hh.exe spravochka.chm', SW_RESTORE)
  else
  begin
    ShowWindow(h, SW_RESTORE);
    Windows.SetForegroundWindow(h);
  end;
end;
Так вот, если прилож. запущено пользователем, клик на пунк меню "справка" открывает файл spravochka.chm'. А если прилож. запущено по автозапуску, выдаётся сообщение "Не удаётся открыть файл: spravochka.chm".
Какие таблетки принимать?
(spravochka.chm лежит там же где *.exe)

Последний раз редактировалось avd; 30.08.2012 в 10:46.
avd вне форума Ответить с цитированием
Старый 30.08.2012, 10:50   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

читаем про текущую директорию.
вам же надо формировать руками полный путь.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 30.08.2012, 12:41   #3
avd
Пользователь
 
Регистрация: 06.06.2010
Сообщений: 79
По умолчанию

Согласен.
Код:
procedure TForm1.helpClick(Sender: TObject);
var
  h: HWND;
begin
  h := FindWindow('HH Parent', 'Справочка');
//  if h = 0 then WinExec('hh.exe spravochka.chm', SW_RESTORE) // Убираем
  ShellExecute(Handle, 'open', pWideChar('hh.exe'), 
         pWideChar(ExtractFilePath(Application.ExeName) +spravochka.chm'), 
         nil, SW_RESTORE) // Вставляем
  else
  begin
    ShowWindow(h, SW_RESTORE);
    Windows.SetForegroundWindow(h);
  end;
end;
Заработало
avd вне форума Ответить с цитированием
Старый 30.08.2012, 13:26   #4
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Цитата:
Так вот, если прилож. запущено пользователем, клик на пунк меню "справка" открывает файл spravochka.chm'. А если прилож. запущено по автозапуску, выдаётся сообщение "Не удаётся открыть файл: spravochka.chm".
Какие таблетки принимать?
Код:
var
  myDir:string;
begin
  myDir:=EXtractFilePath(ParamStr(0))+'\';
  ShellExecute(GetForegroundWindow,PChar('Open'),PChar('hh.exe'),PChar('"'+myDir+'Help.chm"'),nil,PChar(myDir),SW_SHOWNORMAL);
end;
Человек_Борща вне форума Ответить с цитированием
Старый 30.08.2012, 22:24   #5
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

В качестве дальнейшего улучшения предлагаю заменить вызов hh.exe на полноценную справку.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Автозапуск приложения - dll не найдена [MoNAMur] Общие вопросы Delphi 2 02.05.2012 14:45
После запуска приложения из службы созданной на C# не отображается иконка приложения dmail1976 Общие вопросы .NET 1 22.09.2011 13:38
Автозапуск приложения Delphi Sk!f Фриланс 17 21.10.2009 12:01