---
slug: "flutter-windows-invoke-visual-studio-code"
title: "Flutter の Windows アプリから VSCode を起動する"
description: "ポイントとしては、Visual Studio Code をインストールする時に、パスを追加するか聞かれるので、ON にすると\n\ncode コマンドで VSCode の起動ができるようになる。\n\nただし、code は 正しくは code.cmd であり、code だけだと Flutter の Process.run からは起動できないので、.cmd を付ける必要がある。"
url: "https://www.ytyng.com/blog/flutter-windows-invoke-visual-studio-code"
publish_date: "2021-03-21T12:08:36Z"
created: "2021-03-21T12:08:36Z"
updated: "2026-02-27T09:51:00.473Z"
categories: []
keywords: ""
featured_image_url: "https://media.ytyng.com/resize/20230812/fc50e80c090f413c8b1b262b240e5fe7.png.webp?width=768"
has_video: false
has_music: false
video_urls: []
music_urls: []
lang: "ja"
---

# Flutter の Windows アプリから VSCode を起動する

<pre>Process.<span>run</span>(<span>'code.cmd'</span><span>, </span>['開きたいファイルパス'])<span>;</span></pre>
<p>ポイントとしては、Visual Studio Code をインストールする時に、パスを追加するか聞かれるので、ON にすると</p>
<p>code コマンドで VSCode の起動ができるようになる。</p>
<p>ただし、code は 正しくは code.cmd であり、code だけだと Flutter の Process.run からは起動できないので、.cmd を付ける必要がある。</p>
<p></p>
<p>以上。</p>
<p></p>
<p>----</p>
<p>以下、以前に行った対策で、周りくどい方法だったがメモとして意味ありそうだったので残した。非推奨</p>
<p></p>
<p>Flutter で作った Windows のアプリから、VSCode を起動したかった。</p>
<pre><span>if </span>(Platform.<span>isWindows</span>)  {<br />  <span>var </span>r = <span>await </span>Process.<span>run</span>(<span>'where.exe'</span><span>, </span>[<span>'code'</span>])<span>;</span><span><br /></span><span>  if </span>(r.exitCode != 0 || r.<span>stdout </span>== <span>''</span>) {<br />    <span>return;<br /></span><span>  </span>}<br />  <span>var </span>l = stdout.split(<span>'</span><span>\r\n</span><span>'</span>)<span>;<br /></span><span>  </span>Process.<span>run</span>(<br />      l[<span>1</span>]<span>, </span>['開きたいファイルパス'])<span>;<br /></span>}</pre>
<p>ちょっと強引だけどこんな感じでやった。</p>
<p></p>
<p>where.exe は、mac や linux でいう which と同じ動作をする。エラー分岐はもっとちゃんとやったほうが良いが、今回は使用者が限られているのでざっくりとこれで。</p>
<p></p>
<p>Process.run の 結果の ProcessResult インスタンスは、コマンドが正常終了すると exitCode == 0 となる。異常終了なら 0 以外、おそらく1とかになる。</p>
<p>ただ、今回は exitCode での判定しなかった。</p>
<p></p>
<p>コマンド結果は ProcessResult の stdout に入る。Windows の場合、改行コードは \r\n となる。</p>
<p></p>
<p>where.exe の結果は、1行目が拡張子無し、2行目が拡張子付きのフルパスが出てくる。Process.run で実行するには、拡張子つきを指定すること。</p>
