Форум: "Начинающим";
Текущий архив: 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.057 c