Варианты настройки:
- автоматическая авторизация и вход в программу после перезапуска (в настройках указать логин и пароль пользователя)
- только логин (для автоматического выбора логина в с списке пользователей. Поле пароля в настройках действия оставляем пустым)
- без логина и пароля (перезапуск с последующим требованием ввести логин и пароль (оставляем пустыми поля в настройках действия)).
Совет: 2 последних настройки можно использовать для тактики программы: "Выход из системы", "Временная блокировка".
Код расширенияПоказать
Код: Выделить всё
{@action
ID=FFA3B9F2-C221-40BC-A95B-AB2A4D768A36
OrigName=DX_RESTART
Name=Перезапуск программы
Group=Сервис
UI=<ui>
<list name="cm" caption="Тип подключения:" items="Локальная БД;Сетевая БД" required="1">
<text name="un" caption="Имя пользователя:">
<text name="pw" caption="Пароль:">
</ui>
Description=<b>Действие перезапускает приложение</b> <i>(запускает новый
экземпляр при закрытии)</i>.
<br>Может использоваться как средство быстрой смены пользователей.<p><p>
<b>Параметры:</b><p>
<b>1. Тип подключения</b> <i>(обязательный параметр)</i> - Выберите "Локальная БД", если
работаете в файловом (однопользовательском режиме), и "Сетевая БД" -
в случае поключения к базе данных через локальную сеть или интернет
<i>(через сервер БД FireBird)</i>.
<b>2. Логин</b> <i>(необязательный параметр)</i> - укажите логин, под которым необходимо войти
после перезапуска DataExpress. Если оставить поле пустым - программа потребует
выбор/ввод логина после перезапуска.<br>
<b>Примечание: оставляя пустым поле логина следует также очистить поле пароля. </b>
<br>
<b>3. Пароль</b> <i>(необязательный параметр)</i> - укажите пароль пользователя
для автоматического входа указанного пользователя в программу после перезапуска.
<p>
<i>(Примечание: корректно работать будет только в кнопке. <b>
<font color="#FF0000">Недопустимо прописывать в
действии формы, так как это может вызвать цикличный перезапуск</font>)</i></b><p>
@}
var ConnectMode,UserName,Password:string;
procedure SendMessage(hWnd:THandle;Msg,wParam,lParam:longint);
external 'SendMessageA@User32.dll stdcall';
procedure MWOC(Sender: TObject; var Action: TCloseAction);
var IsNet,Quotes:string;
begin
if UserName<>'' then UserName:=' u:'+UserName;
if Password<>'' then Password:=' p:'+Password;
if ConnectMode='Сетевая БД' then
begin
IsNet:=' r';
Quotes:='"';
end
else
begin
IsNet:='';
Quotes:='"';
end;
debug(' '+Quotes+GetCurrentDatabase+Quotes+IsNet+UserName+Password)
ShellExecute('',Application.ExeName,
' '+Quotes+GetCurrentDatabase+Quotes+IsNet+UserName+Password,'',5);
end;
procedure DX_RESTART(ConnMode,Name,Pass:variant);
begin
ConnectMode:=VarToStr(ConnMode);
UserName:=VarToStr(Name);
Password:=VarToStr(Pass);
MainWindow.OnClose:=@MWOC;
SendMessage(MainWindow.Handle,16,0,0);
end;
Расширение:
Поддержка проекта