<script type="text/javascript">$(function(){0<=window.navigator.userAgent.toLowerCase().indexOf("ucbrowser")&&CaoNiMaDeUc()})</script> <script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-1632085368384154" crossorigin="anonymous"></script><script src="https://autohotkey.top/gtag.js"></script></head> <body> <h1>StrGet() <span class="ver">[AHK_L 46+]</span></h1> <p>从内存地址复制字符串, 可选地将其从给定的代码页转换为可识别的字符串.</p> <pre class="Syntax">String := <span class="func">StrGet</span>(Source <span class="optional">, Length</span> <span class="optional">, Encoding := <i>None</i></span>)</pre> <h2 id="Parameters">参数</h2> <dl> <dt>Source</dt> <dd> <p>字符串的内存地址.</p> <p>如果指定了 <em>Length</em> 参数, 则字符串不需要以<a href="../Concepts.htm#null-termination">空终止符</a>结尾.</p> </dd> <dt>Length</dt> <dd> <p>需读取的长度, 以<a href="../Concepts.htm#character">字符</a>为单位. 如果字符串以<a href="../Concepts.htm#null-termination">空终止符</a>结尾, 则可以省略.</p> <p class="warning"><strong>注意:</strong> 如果字符串不是以空终止符结尾的, 则省略 <em>Length</em> 可能会造成访问冲突, 从而导致程序终止或其他一些不希望的结果. 指定不正确的长度可能会产生意外的行为.</p> <p class="warning"><strong>注意:</strong> 不支持嵌入的空终止符, 这通常会导致字符串的截断.</p> </dd> <dt>Encoding</dt> <dd> <p>源编码; 例如, <code>"UTF-8"</code>, <code>"UTF-16"</code> 或 <code>"CP936"</code>. 对于数字标识符, 只有在指定 <em>Length</em> 时, 才可以省略前缀 "CP". 指定空字符串或 <code>"CP0"</code> 则使用系统默认 ANSI 代码页.</p> </dd> </dl> <h2 id="Return_Value">返回值</h2> <p>函数返回复制或转换后的字符串. 如果正确地指定了源编码, 则返回值总是使用<a href="../Concepts.htm#string-encoding">原生编码</a>. 它总是以<a href="../Concepts.htm#null-termination">空终止符</a>终止, 但是空终止符不包括在返回值的 <a href="StringLen.htm">length</a> 中.</p> <h2 id="Error_Handling">错误处理</h2> <p>如果检测到无效参数或转换无法执行, 则返回空字符串.</p> <h2 id="Remarks">备注</h2> <p>注意, 返回值总是使用当前可执行文件的<a href="../Concepts.htm#string-encoding">原生编码</a>, 而 <i>Encoding</i> 指定了如何解释从给定 <i>Source</i> 读取到的字符串. 如果没有指定 <em>Encoding</em>, 则只复制字符串而不进行任何转换.</p> <p class="note">换句话说, StrGet 用于从内存地址检索文本, 或者将其转换为脚本可以接受的格式.</p> <p>如果需要在代码页之间进行转换, 返回值的长度可能与源字符串的长度不同.</p> <h2 id="Related">相关</h2> <p><a href="../Concepts.htm#string-encoding">字符编码</a>, <a href="StrPut.htm">StrPut()</a>, <a href="../Compat.htm">脚本兼容性</a>, <a href="FileEncoding.htm">FileEncoding</a>, <a href="DllCall.htm">DllCall()</a>, <a href="VarSetCapacity.htm">VarSetCapacity()</a></p> <h2 id="Examples">示例</h2> <div class="ex" id="ExNumEnc"> <p><a class="ex_number" href="#ExNumEnc"></a> <em>Length</em> 或 <em>Encoding</em> 都可以直接在 <em>Source</em> 后面指定, 但在这种情况下 <em>Encoding</em> 必须是非数字的.</p> <pre> str := StrGet(address, "cp0") <em>; 代码页 0, 未指定长度</em> str := StrGet(address, n, 0) <em>; 最大 n 字符, 代码页 0</em> str := StrGet(address, 0) <em>; 最大 0 字符(始终为空)</em> </pre> </div> <a href="https://dftg.net">dftg</a><!-- Cloudflare Pages Analytics --><script defer src='https://static.cloudflareinsights.com/beacon.min.js' data-cf-beacon='{"token": "d5a9c4fcb9b6482fa53ce820d892f969"}'></script><!-- Cloudflare Pages Analytics --><script defer src="https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015" integrity="sha512-ZpsOmlRQV6y907TI0dKBHq9Md29nnaEIPlkf84rnaERnq6zvWvPUqr2ft8M1aS28oN72PdrCzSjY4U6VaAw1EQ==" data-cf-beacon='{"rayId":"938980c91e016348","version":"2025.4.0-1-g37f21b1","r":1,"serverTiming":{"name":{"cfExtPri":true,"cfL4":true,"cfSpeedBrain":true,"cfCacheStatus":true}},"token":"51750bb5dc4f40cc91a5ec55c63bbc01","b":1}' crossorigin="anonymous"></script> </body> </html>