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

Вниз

"Image File Execution Options" и параметр debugger   Найти похожие ветки 

 
enzain ©   (2015-01-07 15:02) [0]

Всех приветствую.
Мой очередной глупый вопрос, инфу не нашел - или ее нет или плохо искал.
В реестре виндовс, существует такая замечательная возможность для приложения указать дебаггер.
В ветке:
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\
создается папка соответствующая имени приложения.
например: 1cv7.exe
Внутри - можно задать параметр "debugger" в котором указать приложение которое будет запускаться при попытке запустить прилоежние 1cv7 в моем случае..
Так вот, меня интересует следующее: такие приложения должны быть как то специализированно написаны, или это стандартные приложения для которых в качестве параметра передается просто полный путь и имя запускаемого файла?
На данный момент рассматриваю следующую задачу:
создать "загрузчик" для приложения 1с. При запуске этот загрузчик подключается к базе данных, проверяет - можно ли пользователям сейчас работать с определенными базами, если можно то добавляет эти базы в список баз,  если нет - то удаляет базы из списка, в окне запуска 1с - удаляются кнопки "добавить", "изменить", "удалить" для исключения ручного редактирования списка баз пользователем.
Сам же загрузчик все время остается активным, и мониторит базу данных - так как вдруг, может понадобиться выгнать всех пользователей из базы. В таком случае я так понимаю, храня хендл запущенной 1с, можно получить ее процессид, и грохнуть при необходимости.

ПС: если все получится, могу даже поделиться, все равно занимаюсь от делать нефиг ... потому что прогерам 1с захотелось не напрягаться чтобы выгнать пользователей при необходимости обновления .. :)


 
Inovet ©   (2015-01-07 16:00) [1]

> [0] enzain ©   (07.01.15 15:02)
> можно получить ее процессид, и грохнуть при необходимости

Ну ты и садист.


 
enzain ©   (2015-01-07 17:27) [2]

Я садист? .. Нет, я не садист, можно конечно послать 1сников лесом, дать номера всех телефонов, и пусть обзванивают ...
Но тут просто самому интересно что получится... да и получится ли вообще ... таки семерка в этом плане не очень, а переходить на восьмерку - бабла немеряно надо ...  учитывая что от первоначальной конфигурации осталось только название :)


 
enzain ©   (2015-01-07 17:30) [3]


> Ну ты и садист.

И кстати, если база в SQL лежит ничего садистского в этом не вижу ... если в файлах то да ... реиндексация гарантирована :)


 
enzain ©   (2015-01-07 18:51) [4]

В общем, с тем как передается место расположения и имя файла разобрался.
Передается просто в качестве параметра командой строки. (с номером 1)

Теперь встал другой вопрос, как запускать приложение из моего приложения... ибо при загрузке - оно опять запускает мое же приложение (точнее система я так понимаю запускает )

Куды копать?


 
Inovet ©   (2015-01-07 19:00) [5]

Ага, пользователь вводит данный, тут раз программа прибилась. Не знаю что там в 1с доступно, но варианты есть без гроханья процесса и с предупреждением пользователя или хотя бы с сохранением данных. В голову сразу приходит что-то такое:
1. Сделай в базе флаг в какой-нить таблице, при необходимости выхода выставляй, а конфигурация пусть его проверяет 1 раз в 5 минут, и выходит.
2. По сети можно послать сообщение о необходимости выхода, а пргограмма бедет его обрабатывать и выходить.
3. Создать файл "NeedQuit.txt" в поределённом месте, а программа проверяет его наличие.


 
enzain ©   (2015-01-07 19:55) [6]

сообщение о том, что через 2 минуты программа закроется - выдаваться будет... наверное... если прогерам не лень будет ждать эти 2-5 минут...тут уже вопрос не ко мне.
То, что кто-то на терминале просто свернул его, и не сохранился, или просто закрыл окно терминала вообще не завершив сессию - его проблемы. Да да, именно его, а не мои. Сохраняй потом сворачивай. А еще лучше если не работаешь - вообще выходи, зайти в 1с дело 15 секунд.
По поводу пункта 2 - да, вы действительно видимо не знаете что там в 1с доступно ... особенно в семерке... это не в упрек - я вам реально завидую ... :)


 
enzain ©   (2015-01-07 19:57) [7]

procedure TForm1.Button1Click(Sender: TObject);
var
StartInfo : TStartupInfo;
ProcInfo : TProcessInformation;
CreateOK : Boolean;
begin
{ fill with known state }
FillChar(StartInfo,SizeOf(TStartupInfo),#0);
FillChar(ProcInfo,SizeOf(TProcessInformation),#0);

with StartInfo do
 begin
   cb := SizeOf(TStartupInfo);
   dwFlags := STARTF_USESHOWWINDOW;
   wShowWindow := SW_SHOWNORMAL;
 end;

CreateOK := CreateProcess(PChar(ParamStr(1)),nil, nil, nil,False,
DEBUG_PROCESS+CREATE_NEW_PROCESS_GROUP,
nil, nil, StartInfo, ProcInfo);

ShowMessage(IntToStr(ProcInfo.dwProcessId));

end;


Приложение по факту запускается - но окна приложения не видно. В диспетчере задач оно есть ...
Пните в нужную сторону пожалуйста.


 
enzain ©   (2015-01-07 19:57) [8]

мда.. и как бы не пришлось выдавать юзерям разрешение на дебаггинг .. надо проверить .. а то может и заморачиваться не стоит :(


 
Inovet ©   (2015-01-07 20:08) [9]

> [6] enzain ©   (07.01.15 19:55)
> вы действительно видимо не знаете что там в 1с доступно

Ну так там, насколько я знаю, можно что-то расширять через внешние библиотеки.


 
enzain ©   (2015-01-07 20:15) [10]

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


 
enzain ©   (2015-01-08 12:31) [11]


> enzain ©   (07.01.15 19:57) [7]

Так у кого нибудь есть мысли по этому поводу?


 
enzain ©   (2015-01-08 18:01) [12]

repeat
  begin
    WaitForDebugEvent(de, 1000);
    application.ProcessMessages;
    ContinueDebugEvent(de.dwProcessId, de.dwThreadid,  dwContinueStatus);

  end;
  until de.dwDebugEventCode=EXIT_PROCESS_DEBUG_EVENT;

как то так ... теперь все запускается, все события более менее - отлавливаются.... попытаться чтоли понять еще и какие файлы открыты приложением ... точнее какие файлы оно открывает ...



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

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

Наверх





Память: 0.48 MB
Время: 0.053 c
3-1311680290
Xmen
2011-07-26 15:38
2017.01.15
Уникальность соединения


3-1311770178
SQLEXPRESS
2011-07-27 16:36
2017.01.15
Ни кто не не желает в SQL размяться? Время исполнения


3-1311085051
yurikon
2011-07-19 18:17
2017.01.15
Сколько памяти занимает SQLEXPRESS


15-1454413847
Кто б сомневался
2016-02-02 14:50
2017.01.15
Запустить с обычными правами из под проги с админ. правами


15-1455954062
Beck
2016-02-20 10:41
2017.01.15
Правильная реализация





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