<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; AHK: Определение подлючения определенного USB устройства]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=16149&amp;type=atom" />
	<updated>2021-03-07T11:00:54Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=16149</id>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Определение подлючения определенного USB устройства]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=146662#p146662" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>msgbox,% checkDevice(&quot;HID-совместимое устройство&quot;)
msgbox,% checkDevice(&quot;HID-сов устройство&quot;)


checkDevice(DevName)
{
  q:=&quot;Select * from Win32_PnPEntity Where Name = &#039;&quot; DevName &quot;&#039;&quot;
  For device in ComObjGet(&quot;winmgmts:&quot;).ExecQuery(q)
    return 1
  return 0
}
</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Alectric]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26027</uri>
			</author>
			<updated>2021-03-07T11:00:54Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=146662#p146662</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Определение подлючения определенного USB устройства]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=146660#p146660" />
			<content type="html"><![CDATA[<p><strong>stealzy</strong><br />Благодарю! Теперь все как нужно.</p>]]></content>
			<author>
				<name><![CDATA[sim8783]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=41484</uri>
			</author>
			<updated>2021-03-07T04:44:39Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=146660#p146660</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Определение подлючения определенного USB устройства]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=146654#p146654" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Alectric пишет:</cite><blockquote><p>переполнение выдачи</p></blockquote></div><div class="codebox"><pre><code>Text := &quot;&quot;
For device in ComObjGet(&quot;winmgmts:&quot;).ExecQuery(&quot;Select * from Win32_PnPEntity&quot;)
 Text .= device.name &quot;`n&quot;</code></pre></div>]]></content>
			<author>
				<name><![CDATA[stealzy]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=31937</uri>
			</author>
			<updated>2021-03-06T20:49:57Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=146654#p146654</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Определение подлючения определенного USB устройства]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=146644#p146644" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>sim8783 пишет:</cite><blockquote><p>Теперь все портит переполнение выдачи от каждого запроса</p></blockquote></div><p>&quot;Код в студию.&quot;</p>]]></content>
			<author>
				<name><![CDATA[Alectric]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26027</uri>
			</author>
			<updated>2021-03-06T18:09:20Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=146644#p146644</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Определение подлючения определенного USB устройства]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=146637#p146637" />
			<content type="html"><![CDATA[<p>Круто! Спасибо. Теперь есть список подключенных устройств, это хорошо. <br />Сейчас мне как то нужно это выразить в if и else, что бы задать действия открытия и закрытия программы в зависимости от наличия определенной строки. Я так понял только один вариант, нужно список сохранить в фаил, затем прочесть его через ReadLine, и присвоить состояние ошибки на If&nbsp; и else. Но чувствую, что есть способ без лишних файлов..&nbsp; Можно как то прочесть этот список в переменной Text напрямую? В моём случае при сканировании списка можно ведь обойтись без шаблонов регулярных выражений, т.к. имя одно и тоже &quot;Axiom 61&quot;?</p><p>Upd: удалось при помощи подсказки Alectric сократить список до одной строки: Axiom 61 (посредством ExecQuery(&quot;Select * from Win32_PnPEntity Where Name = &#039;Axiom 61&#039;&quot;)). Но выявил ньюанс, что при каждом запросе в выдачу дублируется эта же строка, т.к. планирую ставить проверку активности устройства&nbsp; на таймер с периодом около 2 секунд, то не вызовет ли это в какой то момент переполнения? Если было отключение устройства, то список обнуляется.</p><p>Upd2: Сделал через errorlevel, без возни с поиском конкретных слов. Теперь все портит переполнение выдачи от каждого запроса по ComObjGet, какой командой можно очистить память? Перезагрузка AHK помогает, но у меня и другие таймеры есть в скрипте, нужно что то другое.</p>]]></content>
			<author>
				<name><![CDATA[sim8783]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=41484</uri>
			</author>
			<updated>2021-03-06T10:51:32Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=146637#p146637</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Определение подлючения определенного USB устройства]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=146630#p146630" />
			<content type="html"><![CDATA[<p>Ещё лучше так:<br /></p><div class="codebox"><pre><code>For device in ComObjGet(&quot;winmgmts:&quot;).ExecQuery(&quot;Select * from Win32_PnPEntity&quot;)
   Text .= device.name &quot;`n&quot;
Gui Add, Edit, vTxt w500 h1000
Sort, Text
GuiControl,, Txt, % Text
Gui Show,, Инфо:
Send, ^{Home}
Return

GuiClose:
   ExitApp</code></pre></div>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2021-03-05T21:49:57Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=146630#p146630</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Определение подлючения определенного USB устройства]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=146629#p146629" />
			<content type="html"><![CDATA[<p>Уж лучше так выводить большое количество строк:</p><div class="codebox"><pre><code>For device in ComObjGet(&quot;winmgmts:&quot;).ExecQuery(&quot;Select * from Win32_PnPEntity&quot;)
 Text .= device.name &quot;`n&quot;
Gui Add, Edit, vTxt w500 h1000
GuiControl,, Txt, % Text
Gui Show,, Инфо:
Return</code></pre></div>]]></content>
			<author>
				<name><![CDATA[__Михаил__]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=40928</uri>
			</author>
			<updated>2021-03-05T18:35:50Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=146629#p146629</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Определение подлючения определенного USB устройства]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=146627#p146627" />
			<content type="html"><![CDATA[<p>serzh82saratov когда-то давал мне такой <a href="http://forum.script-coding.com/viewtopic.php?pid=115694#p115694">код</a>.</p><p>Можно попробовать так:<br /></p><div class="codebox"><pre><code>For device in ComObjGet(&quot;winmgmts:&quot;).ExecQuery(&quot;Select * from Win32_PnPEntity&quot;)
{
   MsgBox % device.name
}
</code></pre></div><p>Скорее всего можно отсеять лишнее заранее, но я не знаю какой фильтр нужно прописать ( Where ClassGuid = &#039;{??????????}&#039;).</p>]]></content>
			<author>
				<name><![CDATA[Alectric]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26027</uri>
			</author>
			<updated>2021-03-05T17:36:56Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=146627#p146627</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Определение подлючения определенного USB устройства]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=146626#p146626" />
			<content type="html"><![CDATA[<p>Спасибо! А есть ли проще методы, без задействования стороннего ПО? (хоть и от майкрософт). Мне не нужен список, а состояние одного конкретного устройства, которое подключается даже в один и тот же порт USB. Может есть команда проверки активности порта USB? Через DDcall, или реестр как-нибудь?</p>]]></content>
			<author>
				<name><![CDATA[sim8783]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=41484</uri>
			</author>
			<updated>2021-03-05T16:49:09Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=146626#p146626</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Определение подлючения определенного USB устройства]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=146622#p146622" />
			<content type="html"><![CDATA[<p><a href="https://www.autohotkey.com/boards/viewtopic.php?f=76&amp;t=41546&amp;p=189305&amp;hilit=devmgmt.msc#p189305">Тема на оф. форуме, как получить список устройств</a>.</p>]]></content>
			<author>
				<name><![CDATA[ypppu]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=5974</uri>
			</author>
			<updated>2021-03-05T14:27:30Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=146622#p146622</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[AHK: Определение подлючения определенного USB устройства]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=146619#p146619" />
			<content type="html"><![CDATA[<p>Здравствуйте!<br />Есть задача, что бы скрипт чекал подключена ли миди-клавиатура по USB, или отключена. (вернее автивна ли она, т.к. USB всегда подключен, я выключаю ее по кнопке, что так же windows видит как подкление устройства).<br />При собитии включения скрипт должен запустить определенную программу, или закрыть ее при отключении миди-клавиатуры.<br />Собственно все что требуется. <br />С самим чеком через Settimer и открытием/закрытием ясно программы ясно, а вот с определением активности устройства не могу сообразить(очень новичёк). <br />Нашел код по теме:<br /></p><div class="codebox"><pre><code>OnMessage(0x219, &quot;notify_change&quot;)
Return

notify_change(wParam, lParam, msg, hwnd)
{
MsgBox, %wParam% %lParam% %msg% %hwnd%
} </code></pre></div><p>Но он ищет вообще любые устройства.&nbsp; DriveGet только для дисков к сожалению.&nbsp; Еще находил чекер второго монитора, но это уж совсем не то.&nbsp; <br />Есть ли функция по определению активности драйвера по UID / PID например ? Или устроит код по определению состояния ветки в реестре.</p>]]></content>
			<author>
				<name><![CDATA[sim8783]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=41484</uri>
			</author>
			<updated>2021-03-05T11:09:04Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=146619#p146619</id>
		</entry>
</feed>
