麒麟桌面系统自动化方案 pyautogui+pythonnet
<p>麒麟系统模拟鼠标的点击、滑动等操作,键盘输入等操作</p><p>pyautogui的安装见上篇文章</p>
<p>可以通过pythonnet封装python脚本,实现点击和输入等操作做到自动化</p>
<p>鼠标移动</p>
<div class="cnblogs_code">
<pre> <span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> DoMoveTest()
{
</span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)">
{
</span><span style="color: rgba(0, 0, 255, 1)">if</span> (!<span style="color: rgba(0, 0, 0, 1)">PythonEngine.IsInitialized)
{
</span><span style="color: rgba(0, 0, 255, 1)">if</span><span style="color: rgba(0, 0, 0, 1)"> (OperatingSystem.IsWindows())
{
Runtime.PythonDLL </span>= <span style="color: rgba(128, 0, 0, 1)">@"</span><span style="color: rgba(128, 0, 0, 1)">python310.dll</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">;
}
</span><span style="color: rgba(0, 0, 255, 1)">else</span><span style="color: rgba(0, 0, 0, 1)">
{
Runtime.PythonDLL </span>= <span style="color: rgba(128, 0, 0, 1)">@"</span><span style="color: rgba(128, 0, 0, 1)">libpython3.8.so</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">;
}
PythonEngine.Initialize();
}
</span><span style="color: rgba(0, 0, 255, 1)">using</span><span style="color: rgba(0, 0, 0, 1)"> (Py.GIL())
{
</span><span style="color: rgba(0, 0, 255, 1)">dynamic</span> pyautogui = Py.Import(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">pyautogui</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">);
pyautogui.moveTo(Convert.ToInt32(X), Convert.ToInt32(Y), </span><span style="color: rgba(128, 0, 128, 1)">0.5</span><span style="color: rgba(0, 0, 0, 1)">);
}
}
</span><span style="color: rgba(0, 0, 255, 1)">catch</span><span style="color: rgba(0, 0, 0, 1)"> (Exception ex)
{
LogHelper.logHelper.ErrorLog(ex.Message);
}
}</span></pre>
</div>
<p>键盘输入等</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">void</span><span style="color: rgba(0, 0, 0, 1)"> DoInputTest()
{
</span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)">
{
</span><span style="color: rgba(0, 0, 255, 1)">if</span> (!<span style="color: rgba(0, 0, 0, 1)">PythonEngine.IsInitialized)
{
</span><span style="color: rgba(0, 0, 255, 1)">if</span><span style="color: rgba(0, 0, 0, 1)"> (OperatingSystem.IsWindows())
{
Runtime.PythonDLL </span>= <span style="color: rgba(128, 0, 0, 1)">@"</span><span style="color: rgba(128, 0, 0, 1)">python310.dll</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">;
}
</span><span style="color: rgba(0, 0, 255, 1)">else</span><span style="color: rgba(0, 0, 0, 1)">
{
Runtime.PythonDLL </span>= <span style="color: rgba(128, 0, 0, 1)">@"</span><span style="color: rgba(128, 0, 0, 1)">libpython3.8.so</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">;
}
PythonEngine.Initialize();
}
</span><span style="color: rgba(0, 0, 255, 1)">using</span><span style="color: rgba(0, 0, 0, 1)"> (Py.GIL())
{
</span><span style="color: rgba(0, 0, 255, 1)">dynamic</span> pyautogui = Py.Import(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">pyautogui</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">);
pyautogui.moveTo(Convert.ToInt32(X), Convert.ToInt32(Y), </span><span style="color: rgba(128, 0, 128, 1)">0.5</span><span style="color: rgba(0, 0, 0, 1)">);
pyautogui.click();
pyautogui.moveRel(</span><span style="color: rgba(128, 0, 128, 1)">100</span>, -<span style="color: rgba(128, 0, 128, 1)">590</span>, <span style="color: rgba(128, 0, 128, 1)">0.5</span><span style="color: rgba(0, 0, 0, 1)">);
pyautogui.click();
</span><span style="color: rgba(0, 0, 255, 1)">dynamic</span> pyperclip = Py.Import(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">pyperclip</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">);
pyperclip.copy(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">音乐</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">);
pyautogui.hotkey(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">ctrl</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">v</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">);
}
}
</span><span style="color: rgba(0, 0, 255, 1)">catch</span><span style="color: rgba(0, 0, 0, 1)"> (Exception ex)
{
LogHelper.logHelper.ErrorLog(ex.Message);
}
}</span></pre>
</div>
<p>以上代码仅用于测试,使用pythonnet执行python脚本,执行完毕后要注意<span style="color: rgba(0, 0, 0, 1)">PythonEngine的关闭问题</span></p><br><br>
来源:https://www.cnblogs.com/njcxwz/p/16922734.html
頁:
[1]