<?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=18441</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=18441&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: Отправка оконного сообщения».]]></description>
		<lastBuildDate>Tue, 03 Jun 2025 00:33:41 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK: Отправка оконного сообщения]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=162502#p162502</link>
			<description><![CDATA[<p><strong>serzh82saratov</strong>, тут наверное надо создавать процесс с урезанным токеном.<br />То есть, после того как мы создали с помощью &quot;SetTokenInformation&quot; hTokenUIAccess, мы должны его урезать:<br /></p><div class="codebox"><pre><code>DllCall(&quot;advapi32.dll\CreateRestrictedToken&quot;, &quot;ptr&quot;, hTokenUIAccess, &quot;uint&quot;, LUA_TOKEN := 0x4, &quot;uint&quot;, 0, &quot;ptr&quot;, 0, &quot;uint&quot;, 0, &quot;ptr&quot;, 0, &quot;uint&quot;, 0, &quot;ptr&quot;, 0, &quot;ptr*&quot;, hTokenRestricted)</code></pre></div><p>После чего в CreateProcessAsUserW, указать hTokenRestricted.<br />Пробуй, сам проверить смогу нескоро.</p>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Tue, 03 Jun 2025 00:33:41 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=162502#p162502</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Отправка оконного сообщения]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=162496#p162496</link>
			<description><![CDATA[<div class="quotebox"><cite>serzh82saratov пишет:</cite><blockquote><p>при активном приложении с повышенными правами</p></blockquote></div><p>Если права одинаковы, то еть и то и другое без админа, то тоже не работает с #IF 1.</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Wed, 28 May 2025 09:43:57 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=162496#p162496</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Отправка оконного сообщения]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=162495#p162495</link>
			<description><![CDATA[<p>Запускает с админом, ZBID_DESKTOP := 1.</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Wed, 28 May 2025 09:41:21 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=162495#p162495</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Отправка оконного сообщения]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=162494#p162494</link>
			<description><![CDATA[<div class="quotebox"><cite>teadrinker пишет:</cite><blockquote><p>Твоя горячая клавиша при активном приложении с повышенными правами почему-то действительно не работает, а вот такая работает:</p></blockquote></div><p>Такая тоже работает и без UiAccess. </p><p>Если с твоим кодом запустить, то окно поверх диспетчера задач не выводит.<br />Windows тоже 10.</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Wed, 28 May 2025 09:39:14 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=162494#p162494</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Отправка оконного сообщения]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=162493#p162493</link>
			<description><![CDATA[<p>Хм, странно, у меня всё не так. Горячая клавиша в Notepad++ работает даже в скрипте без повышения привилегий. Скрипт, запущенный вышеуказанным способом запускается именно с UIAccess, но не от админа, проверял в Диспетчере задач.<br /> <br /> <span class="postimg"><img src="https://i.ibb.co/8ghk8W2m/2025-05-27-22-25-01-1.png" alt="https://i.ibb.co/8ghk8W2m/2025-05-27-22-25-01-1.png" /></span><br /> <br />Твоя горячая клавиша при активном приложении с повышенными правами почему-то действительно не работает, а вот такая работает:<br /></p><div class="codebox"><pre><code>^1:: MsgBox Hotkey test</code></pre></div><p> <span class="postimg"><img src="https://i.ibb.co/N6rM3FbG/2025-05-27-22-32-51-3.png" alt="https://i.ibb.co/N6rM3FbG/2025-05-27-22-32-51-3.png" /></span></p><p>Это на фоне Диспетчера задач. Но у меня Windows 10.</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Tue, 27 May 2025 19:42:35 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=162493#p162493</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Отправка оконного сообщения]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=162492#p162492</link>
			<description><![CDATA[<p>Не помогло, если запустить от админа, то и скрипт из переменной scriptToRunWithUIAccess запускается от админа, а если запустить без админа, то и скрипт без админа, но ничего не меняется, хоткей не работает.<br />Это хорошо видно в Notepad++ запущенном даже без админа, хоткей работает только если ахк от админа.</p><div class="codebox"><pre><code>#IF 1
2::
	MsgBox  
	Return</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Tue, 27 May 2025 17:48:45 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=162492#p162492</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Отправка оконного сообщения]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=162480#p162480</link>
			<description><![CDATA[<p>Можно так попробовать:<br /></p><div class="codebox"><pre><code>scriptToRunWithUIAccess := &quot;D:\OneDrive\Scripts\_Разработка\New7.ahk&quot;

RunAsAdmin()
RunWithUiAccess()
ShellRunAsUser(A_AhkPath, scriptToRunWithUIAccess)

RunAsAdmin(exitIfNotAdmin := false) {
    commandLine := DllCall(&quot;GetCommandLine&quot;, &quot;str&quot;)
    isRestarted := !!RegExMatch(commandLine, &quot; /restart(?!\S)&quot;)

    while !( A_IsAdmin || isRestarted ) {
        try Run, % &quot;*RunAs &quot; . (A_IsCompiled ? &quot;&quot;&quot;&quot; . A_ScriptFullPath . &quot;&quot;&quot; /restart&quot;
            : &quot;&quot;&quot;&quot; . A_AhkPath . &quot;&quot;&quot; /restart &quot;&quot;&quot; . A_ScriptFullPath . &quot;&quot;&quot;&quot;)
        catch
            break
        ExitApp
    }
    if !A_IsAdmin  {
        MsgBox, Failed to run the script as admin!
        if exitIfNotAdmin
            ExitApp
    }
}

RunWithUiAccess()
{
    Gui, +HWNDhGui +AlwaysOnTop
    DllCall(&quot;GetWindowBand&quot;, &quot;uptr&quot;, hGui, &quot;uint*&quot;, band)
    Gui, Destroy
    if (band != 1)
        return

    if !DllCall(&quot;advapi32\LookupPrivilegeValueW&quot;, &quot;ptr&quot;, 0, &quot;str&quot;, &quot;SeTcbPrivilege&quot;, &quot;int64*&quot;, luid)
    {
        msgbox LookupPrivilegeValueW error`n%A_LastError%
        exitapp
    }
    VarSetCapacity(PRIVILEGE_SET, 20, 0)
    NumPut(1, PRIVILEGE_SET, 0, &quot;uint&quot;)
    NumPut(PRIVILEGE_SET_ALL_NECESSARY := 1, PRIVILEGE_SET, 4, &quot;uint&quot;)
    NumPut(luid, PRIVILEGE_SET, 8, &quot;int64&quot;)
    DllCall(&quot;advapi32\OpenProcessToken&quot;, &quot;ptr&quot;, DllCall(&quot;GetCurrentProcess&quot;, &quot;ptr&quot;), &quot;uint&quot;, 0x0008|0x0002, &quot;ptr*&quot;, hTokenSelf)   ; TOKEN_QUERY|TOKEN_DUPLICATE
    DllCall(&quot;advapi32\GetTokenInformation&quot;, &quot;ptr&quot;, hTokenSelf, &quot;uint&quot;, 12, &quot;uint*&quot;, TokenSelfSessionId, &quot;uint&quot;, 4, &quot;uint*&quot;, ReturnLength)
    hSnapshot := DllCall(&quot;CreateToolhelp32Snapshot&quot;, &quot;uint&quot;, TH32CS_SNAPPROCESS := 0x00000002, &quot;uint&quot;, 0, &quot;ptr&quot;)
    VarSetCapacity(PROCESSENTRY32, A_PtrSize*3 + 544, 0)
    NumPut(A_PtrSize*3 + 544, PROCESSENTRY32, 0, &quot;uint&quot;)
    loop
    {
        if (A_Index = 1)
            hr := DllCall(&quot;Process32FirstW&quot;, &quot;ptr&quot;, hSnapshot, &quot;ptr&quot;, &amp;PROCESSENTRY32)
        else
            hr := DllCall(&quot;Process32NextW&quot;, &quot;ptr&quot;, hSnapshot, &quot;ptr&quot;, &amp;PROCESSENTRY32)
        if !hr
            break
        if (StrGet(&amp;PROCESSENTRY32 + A_PtrSize*2 + 28, &quot;utf-16&quot;) = &quot;winlogon.exe&quot;)
        {
            hProcess := DllCall(&quot;OpenProcess&quot;, &quot;uint&quot;, PROCESS_QUERY_LIMITED_INFORMATION := 0x1000, &quot;int&quot;, false, &quot;uint&quot;, NumGet(PROCESSENTRY32, 8, &quot;uint&quot;), &quot;ptr&quot;)
            DllCall(&quot;advapi32\OpenProcessToken&quot;, &quot;ptr&quot;, hProcess, &quot;uint&quot;, 0x0008|0x0002, &quot;ptr*&quot;, hToken)   ; TOKEN_QUERY|TOKEN_DUPLICATE
            DllCall(&quot;advapi32\PrivilegeCheck&quot;, &quot;ptr&quot;, hToken, &quot;ptr&quot;, &amp;PRIVILEGE_SET, &quot;int*&quot;, pfResult)
            if pfResult
            {
                DllCall(&quot;advapi32\GetTokenInformation&quot;, &quot;ptr&quot;, hToken, &quot;uint&quot;, 12, &quot;uint*&quot;, TokenSessionId, &quot;uint&quot;, 4, &quot;uint*&quot;, ReturnLength)
                if (TokenSessionId = TokenSelfSessionId)
                {
                    DllCall(&quot;advapi32\GetTokenInformation&quot;, &quot;ptr&quot;, hToken, &quot;uint&quot;, 1, &quot;ptr&quot;, 0, &quot;uint&quot;, 0, &quot;uint*&quot;, ReturnLength)
                    VarSetCapacity(TokenUser, ReturnLength, 0)
                    DllCall(&quot;advapi32\GetTokenInformation&quot;, &quot;ptr&quot;, hToken, &quot;uint&quot;, 1, &quot;ptr&quot;, &amp;TokenUser, &quot;uint&quot;, ReturnLength, &quot;uint*&quot;, ReturnLength)
                    if DllCall(&quot;advapi32\IsWellKnownSid&quot;, &quot;ptr&quot;, NumGet(TokenUser), &quot;uint&quot;, WinLocalSystemSid := 22)
                        DllCall(&quot;advapi32\DuplicateTokenEx&quot;, &quot;ptr&quot;, hToken, &quot;uint&quot;, TOKEN_IMPERSONATE := 0x0004, &quot;ptr&quot;, 0, &quot;int&quot;, SecurityImpersonation := 2, &quot;int&quot;, TokenImpersonation := 2, &quot;ptr*&quot;, hTokenSystem)
                }
            }
            DllCall(&quot;CloseHandle&quot;, &quot;ptr&quot;, hProcess)
            DllCall(&quot;CloseHandle&quot;, &quot;ptr&quot;, hToken)
        }
    } until hTokenSystem
    DllCall(&quot;CloseHandle&quot;, &quot;ptr&quot;, hSnapshot)
    if !hTokenSystem
    {
        msgbox RunWithUiAccess error
        exitapp
    }
    DllCall(&quot;advapi32\SetThreadToken&quot;, &quot;ptr&quot;, 0, &quot;ptr&quot;, hTokenSystem)
    DllCall(&quot;advapi32\DuplicateTokenEx&quot;, &quot;ptr&quot;, hTokenSelf, &quot;uint&quot;, 0x0008|0x0002|0x0001|0x0080, &quot;ptr&quot;, 0, &quot;int&quot;, SecurityAnonymous := 0, &quot;int&quot;, TokenPrimary := 1, &quot;ptr*&quot;, hTokenUIAccess)   ; TOKEN_QUERY|TOKEN_DUPLICATE|TOKEN_ASSIGN_PRIMARY|TOKEN_ADJUST_DEFAULT
    DllCall(&quot;advapi32\SetTokenInformation&quot;, &quot;ptr&quot;, hTokenUIAccess, &quot;uint&quot;, TokenUIAccess := 26, &quot;uint*&quot;, true, &quot;uint&quot;, 4)
    DllCall(&quot;advapi32\RevertToSelf&quot;)
    DllCall(&quot;CloseHandle&quot;, &quot;ptr&quot;, hTokenSystem)
    DllCall(&quot;CloseHandle&quot;, &quot;ptr&quot;, hTokenSelf)
    VarSetCapacity(PROCESS_INFORMATION, A_PtrSize*2 + 8, 0)
    VarSetCapacity(STARTUPINFO, A_PtrSize*9 + 32, 0)
    NumPut(A_PtrSize*9 + 32, STARTUPINFO, 0, &quot;uint&quot;)
    DllCall(&quot;GetStartupInfo&quot;, &quot;ptr&quot;, &amp;STARTUPINFO)
    DllCall(&quot;advapi32\CreateProcessAsUserW&quot;, &quot;ptr&quot;, hTokenUIAccess, &quot;ptr&quot;, 0, &quot;wstr&quot;, DllCall(&quot;GetCommandLineW&quot;, &quot;wstr&quot;), &quot;ptr&quot;, 0, &quot;ptr&quot;, 0, &quot;int&quot;, 0, &quot;uint&quot;, 0, &quot;ptr&quot;, 0, &quot;wstr&quot;, A_ScriptDir, &quot;ptr&quot;, &amp;STARTUPINFO, &quot;ptr&quot;, &amp;PROCESS_INFORMATION)
    DllCall(&quot;CloseHandle&quot;, &quot;ptr&quot;, NumGet(PROCESS_INFORMATION, 0, &quot;ptr&quot;))
    DllCall(&quot;CloseHandle&quot;, &quot;ptr&quot;, NumGet(PROCESS_INFORMATION, A_PtrSize, &quot;ptr&quot;))
    sleep 1000
}

ShellRunAsUser(filePath, arguments := &quot;&quot;, directory := &quot;&quot;, verb := &quot;&quot;, show := 1)
{
    static VT_UI4 := 0x13, SWC_DESKTOP := 0x8
    ShellWindows := ComObjCreate(&quot;Shell.Application&quot;).Windows
    Shell := ShellWindows.Item( ComObject(VT_UI4, SWC_DESKTOP) ).Document.Application
    Shell.ShellExecute(filePath, arguments, directory, verb, show)
}</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Sun, 18 May 2025 16:42:51 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=162480#p162480</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Отправка оконного сообщения]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=162475#p162475</link>
			<description><![CDATA[<div class="quotebox"><cite>Malcev пишет:</cite><blockquote><p>Если ничего запускать от имени админа нельзя</p></blockquote></div><p>Можно.</p><p>Так, может я не вкурил, есть скрипт который должен работать без прав админа, то есть вместо него можно что то сначала запустить с правами админа, и оно как то его так запустит без прав админа, таким образом что вопрос с хоткеями решится?</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Sat, 17 May 2025 06:13:56 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=162475#p162475</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Отправка оконного сообщения]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=162433#p162433</link>
			<description><![CDATA[<p>Если ничего запускать от имени админа нельзя, то не выйдет.<br />Автор с автоит пишет:<br /></p><div class="quotebox"><blockquote><p>This UDF requires administrator privileges, but you can still use it to create a process with standard user privileges and uiaccess attributes</p></blockquote></div>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Wed, 30 Apr 2025 07:13:13 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=162433#p162433</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Отправка оконного сообщения]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=162432#p162432</link>
			<description><![CDATA[<p>Да, но </p><div class="quotebox"><blockquote><p>(нужно запускать скрипт от имени администратора):</p></blockquote></div>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Wed, 30 Apr 2025 04:56:01 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=162432#p162432</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Отправка оконного сообщения]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=162431#p162431</link>
			<description><![CDATA[<p>Ну можно хакерским способом:<br /><a href="https://forum.script-coding.com/viewtopic.php?id=17864">https://forum.script-coding.com/viewtopic.php?id=17864</a></p>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Tue, 29 Apr 2025 21:05:48 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=162431#p162431</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Отправка оконного сообщения]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=162428#p162428</link>
			<description><![CDATA[<p>Спасибо, в общем слишком серьёзно всё. Для хоткеев вариантов нет.</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Tue, 29 Apr 2025 15:22:47 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=162428#p162428</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Отправка оконного сообщения]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=162423#p162423</link>
			<description><![CDATA[<p>Там нужно ещё сертификат покупать и подписывать созданные экзешники.<br /><a href="https://habr.com/ru/companies/tuthost/articles/152867">https://habr.com/ru/companies/tuthost/articles/152867</a></p>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Tue, 29 Apr 2025 12:02:47 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=162423#p162423</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Отправка оконного сообщения]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=162422#p162422</link>
			<description><![CDATA[<div class="quotebox"><cite>serzh82saratov пишет:</cite><blockquote><p>Насчёт UIA конечно по прежнему интересно.</p></blockquote></div><p>Ещё и в контексте установки хоткеи, которые аналогично не работают.</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Tue, 29 Apr 2025 09:16:02 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=162422#p162422</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Отправка оконного сообщения]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=162421#p162421</link>
			<description><![CDATA[<p>О, спасибо, работает!</p><p>Насчёт UIA конечно по прежнему интересно.</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Tue, 29 Apr 2025 09:14:18 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=162421#p162421</guid>
		</item>
	</channel>
</rss>
