<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Форум Guardant &mdash; Реализация события при отключении (извлечении) ключа из usb-порта]]></title>
	<link rel="self" href="https://forum.guardant.ru/feed/atom/topic/842" />
	<updated>2019-12-13T11:09:15Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.guardant.ru/topic/842/</id>
		<entry>
			<title type="html"><![CDATA[Re: Реализация события при отключении (извлечении) ключа из usb-порта]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/4258/#p4258" />
			<content type="html"><![CDATA[<p>Marik Decide, спасибо что поделились!</p>]]></content>
			<author>
				<name><![CDATA[Антон Тихиенко]]></name>
				<uri>https://forum.guardant.ru/user/31/</uri>
			</author>
			<updated>2019-12-13T11:09:15Z</updated>
			<id>https://forum.guardant.ru/post/4258/#p4258</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Реализация события при отключении (извлечении) ключа из usb-порта]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/4253/#p4253" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Антон Тихиенко пишет:</cite><blockquote><p>Если не сложно, то опишите, пожалуйста, свое решение.</p></blockquote></div><p>Я извиняюсь, не увидел Вашу сообщение с просьбой поделиться моим решением. Прошло много времени, но я все равно выложу. В общем, как здесь ранее упоминал, устанавливаем атрибут -silent для armor, чтобы не появлялось сообщение об отсутствии ключа. Важный момент, что в моем случае необходимо было при извлечении ключа сразу закрыть соединение с БД, после вставки ключа - восстановить соединение.<br />Привожу код в DELPHI:<br /></p><div class="codebox"><pre><code>//объявление функции
procedure WMDeviceChange(var Msg: TMessage); message WM_DEVICECHANGE;

//реализации функции
procedure TMainForm.WMDeviceChange(var Msg: TMessage);
var
    isFound:Boolean;
    dialogResult:Integer;
const
    dialogNoResult=7;
begin
  if(not FindKeyAfterLogin()) then
  begin
     isFound:=false;
     MainDb.CloseDbConnect();
     while not isFound do
     begin
     dialogResult:=MessageBox(Self.Handle,&#039;Вставьте ключ в usb-порт для продолжения работы программы!&#039;,
                           &#039; ��������!&#039;, MB_OKCANCEL  or MB_ICONWARNING or MB_DEFBUTTON2 or MB_APPLMODAL);
      if  dialogResult = dialogNoResult then
          Application.Terminate;
      if FindKeyAfterLogin() then
      begin
          isFound:=True;
             MainDb.ReopenDbConnect();
      end;
     end;
   end;
end;

//вспомогательная функция для определения наличия ключа в usb-порту
function FindKeyAfterLogin() : Boolean;
var
    nRet: integer;           
begin
{$IFDEF GRD_ADMIN} LogWrite(&#039;Check key: &#039;);{$ENDIF}
  nRet:= GrdCheck (hGrd);
  if(nRet = GrdE_OK) then
  begin
    Result := true;
  end  else
  begin
    Result := false;
  end;
{$IFDEF GRD_ADMIN}  PrintCode(nRet); {$ENDIF}
end;</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Marik Decide]]></name>
				<uri>https://forum.guardant.ru/user/1817/</uri>
			</author>
			<updated>2019-12-12T05:15:42Z</updated>
			<id>https://forum.guardant.ru/post/4253/#p4253</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Реализация события при отключении (извлечении) ключа из usb-порта]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/4054/#p4054" />
			<content type="html"><![CDATA[<p>Если не сложно, то опишите, пожалуйста, свое решение.</p>]]></content>
			<author>
				<name><![CDATA[Антон Тихиенко]]></name>
				<uri>https://forum.guardant.ru/user/31/</uri>
			</author>
			<updated>2019-01-28T06:31:43Z</updated>
			<id>https://forum.guardant.ru/post/4054/#p4054</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Реализация события при отключении (извлечении) ключа из usb-порта]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/4053/#p4053" />
			<content type="html"><![CDATA[<p>Если кому интересно, то получилось реализовать данную затею. Использовал атрибут в арморе -silent и winapi.</p>]]></content>
			<author>
				<name><![CDATA[Marik Decide]]></name>
				<uri>https://forum.guardant.ru/user/1817/</uri>
			</author>
			<updated>2019-01-27T05:10:08Z</updated>
			<id>https://forum.guardant.ru/post/4053/#p4053</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Реализация события при отключении (извлечении) ключа из usb-порта]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/4046/#p4046" />
			<content type="html"><![CDATA[<p>Отследить событие извлечения электронного ключа можно при помощи Notification API, но гарантировать его срабатывание раньше чем Guardant Armor нельзя. Т.е. в разных условиях на извлечение ключа раньше может среагировать как Guardant Armor, так и Notification API.</p><p>Позже (пока непонятно наколько позже) реализуем чтобы можно было реагировать на на такие события из API заведомо раньше.</p>]]></content>
			<author>
				<name><![CDATA[Антон Тихиенко]]></name>
				<uri>https://forum.guardant.ru/user/31/</uri>
			</author>
			<updated>2019-01-11T12:16:13Z</updated>
			<id>https://forum.guardant.ru/post/4046/#p4046</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Реализация события при отключении (извлечении) ключа из usb-порта]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/4042/#p4042" />
			<content type="html"><![CDATA[<p>Хотелось бы узнать есть ли возможность реализовать внутри программы вызов события при извлечении ключа, причем сделать это до выскакивания сообщения от армора о необходимости вставленного ключа? Есть ли такое в guardant api? Я видел только функцию поиска ключа..Суть в том, что надо сделать отключение подключения к базе до того, как армор заметит, что ключ вытащен, затем вернуть ключ, нажать на кнопку &quot;Повтор&quot; в сообщении от армора и снова сделать коннект к базе.</p>]]></content>
			<author>
				<name><![CDATA[Marik Decide]]></name>
				<uri>https://forum.guardant.ru/user/1817/</uri>
			</author>
			<updated>2019-01-11T07:28:55Z</updated>
			<id>https://forum.guardant.ru/post/4042/#p4042</id>
		</entry>
</feed>
