<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; AHK: Не перехватывает глобальные клавиши если текущее окно зависло]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=18444</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=18444&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: Не перехватывает глобальные клавиши если текущее окно зависло».]]></description>
		<lastBuildDate>Sat, 10 May 2025 21:47:00 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK: Не перехватывает глобальные клавиши если текущее окно зависло]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=162469#p162469</link>
			<description><![CDATA[<p>Любопытно. Стоило запустить скрипт из-под аккаунта System (командой psexec -s -i -d), как все комбинации начали перехватываться без проблем. Даже в секции #IfWinNotActive. Похоже, просто из-под администратора ему не хватало прав на системные комбинации, но вот почему была разница между секциями #IfWinNotActive и #IfWinActive, это непонятно.</p>]]></description>
			<author><![CDATA[null@example.com (delpher)]]></author>
			<pubDate>Sat, 10 May 2025 21:47:00 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=162469#p162469</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Не перехватывает глобальные клавиши если текущее окно зависло]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=162468#p162468</link>
			<description><![CDATA[<p>Хм. Не ожидал, что результат будет зависеть от того, какая комбинация перехватывается. У меня используется комбинация Win+Space. В режиме #UseHook On никакая комбинация при зависшем окне не срабатывает, но при #UseHook Off в зависшем окне срабатывает Ctrl+1, но все равно не срабатывает Win+Space.</p><div class="codebox"><pre><code>#Requires AutoHotkey v1.1
#SingleInstance Force
#UseHook Off

#IfWinActive
#Space::Msgbox, Win+Space
^1::Msgbox, Ctrl+1</code></pre></div><p>Похоже, это по причине, что существуют &quot;hotkeys not supported by RegisterHotkey (which is a function built into the operating system)&quot; - они всегда перехватываются через hook. Win+Space как раз встроенная комбинация OS.</p><br /><p>И есть второй момент - если комбинация в секции #IfWinNotActive, то в зависшем окне перестает срабатывать и Ctrl+1 тоже.</p><div class="codebox"><pre><code>#Requires AutoHotkey v1.1
#SingleInstance Force
#UseHook Off

#IfWinNotActive ahk_class TscShellContainerClass
#Space::Msgbox, Win+Space
^1::Msgbox, Ctrl+1</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (delpher)]]></author>
			<pubDate>Sat, 10 May 2025 21:09:06 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=162468#p162468</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Не перехватывает глобальные клавиши если текущее окно зависло]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=162467#p162467</link>
			<description><![CDATA[<p>Я протестировал на таком окне:<br /></p><div class="codebox"><pre><code>Gui, Show, w300 h300
DllCall(&quot;SuspendThread&quot;, &quot;Ptr&quot;, DllCall(&quot;GetCurrentThread&quot;))</code></pre></div><p>Горячая клавиша в другом скипте<br /></p><div class="codebox"><pre><code>#IfWinActive
^1:: MsgBox test</code></pre></div><p>работает.</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Sat, 10 May 2025 17:13:48 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=162467#p162467</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Не перехватывает глобальные клавиши если текущее окно зависло]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=162466#p162466</link>
			<description><![CDATA[<p><strong>teadrinker</strong><br />Скрипт изначально был в режиме #UseHook On, поменял на Off - не помогло.</p>]]></description>
			<author><![CDATA[null@example.com (delpher)]]></author>
			<pubDate>Sat, 10 May 2025 15:27:56 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=162466#p162466</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Не перехватывает глобальные клавиши если текущее окно зависло]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=162465#p162465</link>
			<description><![CDATA[<p>Не тестировал, но первое, что приходит в голову, попробовать #UseHook.</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Sat, 10 May 2025 12:33:45 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=162465#p162465</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Не перехватывает глобальные клавиши если текущее окно зависло]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=162449#p162449</link>
			<description><![CDATA[<p>Что-то файлик не приложился.<br /></p><div class="codebox"><pre><code>program Hang_App;

{$mode Delphi}
{$H+}

uses
  Windows, Messages;

const
  WinClassName = &#039;MainWindow&#039;;
  WinCaption = &#039;Hang App&#039;;

var
  hWndMain: HWND;

// Процедура обработки сообщений
function WndProc(hWnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
begin
  Result := DefWindowProc(hWnd, Msg, wParam, lParam);
end;


function RegisterWindowClass: Boolean;
var
  wc: WNDCLASSEX;
begin
  wc.cbSize := SizeOf(WNDCLASSEX);
  wc.style := CS_HREDRAW or CS_VREDRAW;
  wc.lpfnWndProc := @WndProc;
  wc.cbClsExtra := 0;
  wc.cbWndExtra := 0;
  wc.hInstance := hInstance;
  wc.hIcon := LoadIcon(0, IDI_APPLICATION);
  wc.hCursor := LoadCursor(0, IDC_ARROW);
  wc.hbrBackground := COLOR_BTNFACE + 1;
  wc.lpszMenuName := nil;
  wc.lpszClassName := WinClassName;
  wc.hIconSm := LoadIcon(0, IDI_APPLICATION);

  Result := RegisterClassEx(@wc) &lt;&gt; 0;
end;


var
  hWndClass: WNDCLASSEX;
  nMsg: MSG;
  Rect: TRect;

begin
  if not RegisterWindowClass then
  begin
    MessageBox(0, &#039;Ошибка регистрации класса окна!&#039;, &#039;Ошибка&#039;, MB_ICONERROR);
    Exit;
  end;

  // Создание главного окна
  hWndMain := CreateWindowEx(0, WinClassName, PChar(WinCaption), WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 400, 200, 0, 0, hInstance, nil);
  if hWndMain = 0 then
  begin
    MessageBox(0, &#039;Не удалось создать окно&#039;, &#039;Ошибка&#039;, MB_ICONERROR);
    Exit;
  end;

  // Центрирование окна
  GetWindowRect(hWndMain, Rect);
  SetWindowPos(hWndMain, 0, (GetSystemMetrics(SM_CXSCREEN) - Rect.Width) div 2, (GetSystemMetrics(SM_CYSCREEN) - Rect.Height) div 2, 0, 0, SWP_NOZORDER or SWP_NOSIZE);

  ShowWindow(hWndMain, SW_SHOW);
  UpdateWindow(hWndMain);

  while GetMessage(nMsg, 0, 0, 0) do
  begin
    if not IsDialogMessage(hWndMain, nMsg) then
    begin
      TranslateMessage(nMsg);
      DispatchMessage(nMsg);
      Sleep(24*60*60*1000);
    end;
  end;
end.</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (delpher)]]></author>
			<pubDate>Thu, 08 May 2025 05:34:15 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=162449#p162449</guid>
		</item>
		<item>
			<title><![CDATA[AHK: Не перехватывает глобальные клавиши если текущее окно зависло]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=162448#p162448</link>
			<description><![CDATA[<p>Заметил, что скрипт (v1.1) перестает перехватывать глобальные клавиши (из раздела #IfWinActive, т.е., не относящиеся ни к какому окну или приложению), если текущее окно - зависшее (т.е., в заголовке текст &quot;... (Не отвечает)&quot;). Возможно ли это исправить и как?</p><p>Если негде взять зависшее окно для проверки, приложил исходник на FPC+WinApi (должно скомпилиться и на Delphi) - пустое не отвечающее окно (сделать такое на AHK не получилось).</p>]]></description>
			<author><![CDATA[null@example.com (delpher)]]></author>
			<pubDate>Thu, 08 May 2025 05:33:01 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=162448#p162448</guid>
		</item>
	</channel>
</rss>
