Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 18.05.2011, 14:53
kiman.ru kiman.ru вне форума
Новичок
 
Регистрация: 11.02.2010
Сообщения: 63
Репутация: 10
По умолчанию Программа при прямой загрузке ведет себя иначе

Если я запускаю программу из под Виндоус, то она работает правильно. Но я в реестре в Shell указал адрес своей программы (по дефолту Shell=explorer.exe). Теперь при загрузке сразу грузится только моя программа. Все окей, но не ловится событие msgShowEvent. Почему?
Ответить с цитированием
  #2  
Старый 18.05.2011, 14:59
Аватар для Erilar
Erilar Erilar вне форума
Новичок
 
Регистрация: 30.03.2011
Сообщения: 91
Версия Delphi: 7
Репутация: 10
По умолчанию

Где в реестре записал? дай этот кусок кода пожалуйста
__________________
Если программа даёт неверный результат - в ней ошибка. Если же результат правильный - ошибок, как минимум, две.
Ответить с цитированием
  #3  
Старый 18.05.2011, 18:30
kiman.ru kiman.ru вне форума
Новичок
 
Регистрация: 11.02.2010
Сообщения: 63
Репутация: 10
По умолчанию

Цитата:
Сообщение от Erilar
Где в реестре записал? дай этот кусок кода пожалуйста

В реестре \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon и параметру Shell присвоил значение c:\MyProgram.exe

Кусок кода

Код:
procedure TFormMain.MsgEvent(Sender: TObject; WP, LP: Integer);
var
  Event, PMUnit: Integer;
  ID, Cnt: Integer;
  S: string;
begin

  Event := (WP shr 4) and $000F;
  PMUnit := WP and $000F;

  case Event of
    // STATUS OF PAYMENT UNIT
    msgStatus:
      begin
        case PMUnit of
          msgDevPaymentManagerDLL:
            ShowEvent(Format('PaymentManager Status: %d', [LP]));
          msgDevCoinChangerValidator:
            begin
              case LP of
                msgStatusFound:
                  begin
                    ShowEvent('Coin validator connected');
                  end;

                // Accepted cash item routed to
                $00000010..$0000001F:
                  begin
                    case (WP and $0F) of
                      1:
                        begin
                          showmessage('WP');
                          if (LP) = $10 then
                            begin
                              ShowEvent('Coin routed to box');
                              ShowMessage('Coin routed to box');
                            end
                          else
                            begin
                              ShowMessage('Coin routed to cassette');
                            end;
                        end;
                    end;
end;

Если приложение запускать из под Виндоус, то сообщение показывается ShowMessage('Coin routed to box');

А если запускать при старте компьютера, то не показывается...
Ответить с цитированием
  #4  
Старый 19.05.2011, 12:17
kiman.ru kiman.ru вне форума
Новичок
 
Регистрация: 11.02.2010
Сообщения: 63
Репутация: 10
По умолчанию

Есть какие-нибудь соображения?
Ответить с цитированием
  #5  
Старый 19.05.2011, 13:52
Assistant Assistant вне форума
Продвинутый
 
Регистрация: 20.02.2011
Адрес: там где правят идиоты
Сообщения: 603
Версия Delphi: 7
Репутация: выкл
По умолчанию

ох что-то мне ветка реестра сильно напоминает, WinLocker, не? или это какая-то платёжная система терминальная....
__________________
взялся из неоткуда, ничего не прошу, помогаю просто так
ICQ: 593977748 - стучать в случае КРАЙНЕЙ необходимости, ну, или если вы со Ставрополя
Ответить с цитированием
  #6  
Старый 19.05.2011, 17:59
kiman.ru kiman.ru вне форума
Новичок
 
Регистрация: 11.02.2010
Сообщения: 63
Репутация: 10
По умолчанию

Цитата:
Сообщение от Assistant
ох что-то мне ветка реестра сильно напоминает, WinLocker, не? или это какая-то платёжная система терминальная....

А вы, голубчик, компьютерный Холмс : )

Можешь чем подсоветовать?
Ответить с цитированием
  #7  
Старый 19.05.2011, 18:10
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Ну поскольку собственно вывод сообщения зависит напрямую от значения передаваемого в WP, то логично предположить, что проблема не в обработчике события а несколько ранее. Смотрите, что у вас передается в WP в первом и втором вариантах.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #8  
Старый 01.06.2011, 18:20
kiman.ru kiman.ru вне форума
Новичок
 
Регистрация: 11.02.2010
Сообщения: 63
Репутация: 10
По умолчанию

Вот что показали эксперименты. Программа корректно работает только в том случае, если я ее загружаю через диспетчер задач (TaskManager) или, если из диспетчера задач загрузить Explorer.exe, а потом уже ручками программу.

Подскажите как можно программно запустить мое приложение через диспетчер задач?
Ответить с цитированием
  #9  
Старый 01.06.2011, 18:30
einstein einstein вне форума
Начинающий
 
Регистрация: 02.09.2010
Адрес: Город
Сообщения: 143
Репутация: -4653
По умолчанию

что такое msgShowEvent?
Ответить с цитированием
  #10  
Старый 01.06.2011, 21:26
kiman.ru kiman.ru вне форума
Новичок
 
Регистрация: 11.02.2010
Сообщения: 63
Репутация: 10
По умолчанию

Если запускаю из программы ярлык MyProgram.lnk, то программа работает корректно. Почему?
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 17:16.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter