<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
    <channel>
        <title>桌面应用 - 标签 - lihuu — 系统工程、AI 工具链与 Rust 开发博客</title>
        <link>https://silentstormic.top/tags/%E6%A1%8C%E9%9D%A2%E5%BA%94%E7%94%A8/</link>
        <description>桌面应用 - 标签 - lihuu — 系统工程、AI 工具链与 Rust 开发博客</description>
        <generator>Hugo -- gohugo.io</generator><language>zh-CN</language><lastBuildDate>Mon, 11 Nov 2019 16:00:07 &#43;0800</lastBuildDate><atom:link href="https://silentstormic.top/tags/%E6%A1%8C%E9%9D%A2%E5%BA%94%E7%94%A8/" rel="self" type="application/rss+xml" /><item>
    <title>Electron实例代码</title>
    <link>https://silentstormic.top/post/Electron%E5%AE%9E%E4%BE%8B%E4%BB%A3%E7%A0%81/</link>
    <pubDate>Mon, 11 Nov 2019 16:00:07 &#43;0800</pubDate>
    <author>lihuu</author>
    <guid>https://silentstormic.top/post/Electron%E5%AE%9E%E4%BE%8B%E4%BB%A3%E7%A0%81/</guid>
    <description><![CDATA[<h3 id="electron-实例代码">Electron 实例代码</h3>
<p>以下是一些比较实用的<code>Electron</code>的代码。</p>
<h4 id="为应用程序添加右键菜单">为应用程序添加右键菜单</h4>
<p>这段代码应该添加到 html 中的页面中</p>
<div class="code-block code-line-numbers open" style="counter-reset: code-block 0">
    <div class="code-header language-javascript">
        <span class="code-title"><i class="arrow fas fa-angle-right fa-fw" aria-hidden="true"></i></span>
        <span class="ellipses"><i class="fas fa-ellipsis-h fa-fw" aria-hidden="true"></i></span>
        <span class="copy" title="复制到剪贴板"><i class="far fa-copy fa-fw" aria-hidden="true"></i></span>
    </div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="o">&lt;</span><span class="nx">script</span><span class="o">&gt;</span>
</span></span><span class="line"><span class="cl"><span class="kr">const</span> <span class="p">{</span> <span class="nx">remote</span> <span class="p">}</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;electron&#39;</span><span class="p">);</span>
</span></span><span class="line"><span class="cl"><span class="kr">const</span> <span class="p">{</span> <span class="nx">Menu</span><span class="p">,</span> <span class="nx">MenuItem</span> <span class="p">}</span> <span class="o">=</span> <span class="nx">remote</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="kr">const</span> <span class="nx">menu</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Menu</span><span class="p">();</span>
</span></span><span class="line"><span class="cl"><span class="nx">menu</span><span class="p">.</span><span class="nx">append</span><span class="p">(</span><span class="k">new</span> <span class="nx">MenuItem</span><span class="p">({</span> <span class="nx">label</span><span class="o">:</span> <span class="s1">&#39;MenuItem1&#39;</span><span class="p">,</span> <span class="nx">click</span><span class="p">()</span> <span class="p">{</span> <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="s1">&#39;item 1 clicked&#39;</span><span class="p">)</span> <span class="p">}</span> <span class="p">}));</span>
</span></span><span class="line"><span class="cl"><span class="nx">menu</span><span class="p">.</span><span class="nx">append</span><span class="p">(</span><span class="k">new</span> <span class="nx">MenuItem</span><span class="p">({</span> <span class="nx">type</span><span class="o">:</span> <span class="s1">&#39;separator&#39;</span> <span class="p">}));</span>
</span></span><span class="line"><span class="cl"><span class="nx">menu</span><span class="p">.</span><span class="nx">append</span><span class="p">(</span><span class="k">new</span> <span class="nx">MenuItem</span><span class="p">({</span> <span class="nx">label</span><span class="o">:</span> <span class="s1">&#39;MenuItem2&#39;</span><span class="p">,</span> <span class="nx">type</span><span class="o">:</span> <span class="s1">&#39;checkbox&#39;</span><span class="p">,</span> <span class="nx">checked</span><span class="o">:</span> <span class="kc">true</span> <span class="p">}));</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nb">window</span><span class="p">.</span><span class="nx">addEventListener</span><span class="p">(</span><span class="s1">&#39;contextmenu&#39;</span><span class="p">,</span> <span class="p">(</span><span class="nx">e</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">  <span class="nx">e</span><span class="p">.</span><span class="nx">preventDefault</span><span class="p">();</span>
</span></span><span class="line"><span class="cl">  <span class="nx">menu</span><span class="p">.</span><span class="nx">popup</span><span class="p">({</span> <span class="nb">window</span><span class="o">:</span> <span class="nx">remote</span><span class="p">.</span><span class="nx">getCurrentWindow</span><span class="p">()</span> <span class="p">});</span>
</span></span><span class="line"><span class="cl"><span class="p">},</span> <span class="kc">false</span><span class="p">);</span>
</span></span><span class="line"><span class="cl"><span class="o">&lt;</span><span class="err">/script&gt;</span></span></span></code></pre></div></div>
<h4 id="限制只能运行一个实例的代码">限制只能运行一个实例的代码</h4>
<p>限制只能运行一个实例，需要用到 Electron 的 <code>app.requestSingleInstanceLock()</code>方法,
此方法的返回值表示我们的应用程序实例是否成功取得了锁。 如果它取得锁失败，则可以认为已经有一个实例获取了锁，并且正在运行，我们可以使用 <code>app.quit()</code> 方法立即结束当前实例的运行。
调用 <code>app.requestSingleInstanceLock()</code>方法，会触发前一个实例(如果存在前一个实例)的<code>second-instance</code>事件，我们可以在这个事件里面做点什么，例如激活前一个实例的窗口并获取焦点，示例代码如下</p>]]></description>
</item>
</channel>
</rss>
