擅长:python、mysql、java
<p>在你的问题的标题中,你要求“一个过程”。在您的问题文本中,您是专门针对Autocad提出的。在</p>
<p>我可以告诉您如何在一般的过程中执行此操作,而不是专门针对Autocad。在</p>
<p>我也遇到了同样的问题,于是找到了使用API的解决方案</p>
<pre><code>GetModuleFileNameEx(HANDLE h_Process, ....)
</code></pre>
<p>MSDN说:</p>
<blockquote>
<p>If the module list in the target process is corrupted or is <strong>not yet
initialized</strong>, or if the module list changes during the function call as
a result of DLLs being loaded or unloaded, GetModuleFileNameEx may
fail or return incorrect information.</p>
</blockquote>
<p>实际上,当您试图在进程仍在加载其DLL时使用此函数获取进程的可执行路径时,该函数将失败,<code>GetLastError()</code>返回{<cd2>}。这并不意味着传递给函数的进程句柄无效。但这是进程仍在启动时得到的错误代码。在</p>
<p>我用几个应用程序测试了它。它工作得很好。在</p>
^{pr2}$
<p>为什么有用?GetModuleFileNameEx()在内部执行的操作是读取进程的内存(为此,必须使用访问权限process_VM_read打开进程)。但当进程处于加载器锁定状态时,这是不允许的。加载程序锁在进程加载DLL时处于活动状态</p>
<p>此代码是通用代码,适用于任何应用程序。它会等到应用程序准备好它的基本初始化。如果这对您来说还不够,我建议您等待应用程序的主窗口出现。在</p>