とまと あんらいぷ…

エンジニアの活動記録とかつぶやきとか

GitHub
スポンサードリンク

ヘッドセットのマイクがWindows 10で拾えない

KOTION EACH G1000 のマイク



KOTION EACH G1000のヘッドセットをWindows 10で認識させようとしても
音声を拾ってくれないトラブルに巻き込まれていました。

OSの設定をどれだけ弄ってもだめ。ドライバは汎用ドライバを使っているはずだし・・・

と、ヘッドセットの本体を見てみると・・・

KOTION_EACH_G1000

ん???

本体にスイッチがあるんだね。

アプリ屋さんなのでハードの方に目を向けていませんでした。

恥ずかしい。

サボり

今月のサボり記事

PowerShellで"dir /b"コマンドを打つとエラーになった

PowerShellでファイルの一覧を得る


Windows 10になってから、フォルダ内でShiftと右クリックを押して出てくる「コマンドウィンドウをここで開く」が消えた。
かわりに「PowerShellをここで開く」になった。

ということは、慣れ親しんだコマンドウィンドウがお手軽に起動できなくなり、PowerShellをお手軽に使えるようにならないといけないわけです。
dirコマンド。。。便利なのになぁ。

PowerShellでdirを呼び出す


PowerShellでは、『動詞-述語』というようにコマンドが定義されている。
そのため、やりたい事をなんとなく探すには便利です。
また、コマンドウィンドウとの互換性をなんとか保つために、aliasというコマンドに対する別名が定義されています。

PowerShell上でaliasと打つと、その定義一覧が表示されます(めちゃくちゃあるので割愛)

もちろんdirコマンド(風)も定義されていて、その実態はGet-ChildItemコマンドのようです。
dir -> Get-ChildItem

PowerShellにおけるdir は、Get-ChildItemの別名なので、もちろんいままでどおり
dir /b

なんて打ち込んでもエラーになります。
PowerShellで dir /b したらエラーになった

Get-ChildItemのパラメータ


日本語のヘルプは見つけられませんでしたが、オンラインヘルプがコマンドラインよりは充実しています。
Get-ChildItem
これによると、
「-name」パラメーターが/bに該当するパラメータのようです。

さっそく、dir -name と打ち込んでみます。
Example 5: Get the name of items in the current directory

PowerShellで dir /b したらエラーになった

できました。

PowerShellに慣れていくべし


さて、Windows 7以降何かとPowerShell推しなマイクロソフトさんですが
とっつきにくかったPowerShellはどんどんパワーアップして、コマンドラインの新機能は停滞していきます。

そうなると、いつかは 「とっつきにくい < 便利」 になり、コマンドラインが時代遅れになっていく日も近いかもしれません。
最悪の場合、コマンドラインは廃止なんてことにもなりかねません。
mspaintも paint3dに変わったしね。

というわけで、コマンドラインを使っていた方はそろそろ見切りをつけて、PowerShellに馴染んでいくことを強くおすすめします。

Pythonファイルをsendtoフォルダに配置して「送る」メニューに登録する

WindowsでPython シリーズ その30


今回はPythonにコマンドライン引数を渡す処理の延長で
右クリック→送る メニューにpythonプログラムを登録する方法を記載します。

pythonを送るメニューに登録する


windowsのファイルを右クリックし、「送る」メニューに任意のファイルを指定ためには、「送る」フォルダにファイルを配置します。
まずは「送る」フォルダを開くためにコマンドを実行します。
Windowsボタン + Rでファイル名を指定してsendtoフォルダを開きます。
shell:sendto

Pythonファイルをsendtoフォルダに配置して「送る」メニューに登録する

sendtoフォルダにpythonファイルを配置
Pythonファイルをsendtoフォルダに配置して「送る」メニューに登録する

このpythonファイルには、とりあえず渡された引数を表示するだけのプログラムを書いています。


ファイルを右クリックしてメニューを確認


さっそく、送るメニューに表示されているか確認してみます。
Pythonファイルをsendtoフォルダに配置して「送る」メニューに登録する

ない・・・

どうやらpythonは送るメニューに表示されないようです。
恐らくwindows側の設定でなんとかなるのかもしれませんが、今回はバッチファイル化してお目当ての挙動にします。

pythonを呼び出すバッチファイルをsendtoフォルダに作成する


バッチファイルであれば「送る」メニューに表示されるので、sendtoフォルダにはバッチファイルを作成し、
そのバッチファイルからpythonを呼び出します。

pythonのコード


バッチファイルのコード

バッチファイルは、引数 %1 が自分のパスで、%* とすると、第1引数以降の引数を全部取得できます。
E:\work\main.py %*
と書くことで、pythonにバッチファイルに渡された引数全部を送りつけます。

念のため、右クリックメニューに表示されるか見てみます。
Pythonファイルをsendtoフォルダに配置して「送る」メニューに登録する

ちゃんと送るメニューに表示されました。

メニューから送られる引数の正体


ファイルを右クリックして、「送る」メニューを選択すると、右クリックしたファイルのフルパスが引数として渡されます。
では、ファイルを3つほど選択して、送ってみましょう。
Pythonファイルをsendtoフォルダに配置して「送る」メニューに登録する

今回は、ファイルを3つ選択しています。
それぞれ 01.txt、02.txt、03.txt を選んで、python.batに送ってみた結果はこちら。

Pythonファイルをsendtoフォルダに配置して「送る」メニューに登録する

引数が4つechoされました。期待通りの結果です。

['E:\\work\\main.py', 'E:\\work\\01.txt', 'E:\\work\\02.txt', 'E:\\work\\03.txt']

3ファイル渡したのに4ファイル表示されているのは、pythonプログラムであるmain.pyの処理が、
pythonプログラム自身のフルパスを表示しているからです。

送られたファイルに対する処理


さて、送ることでファイルのフルパスを引数に指定することができました。
これさえできれば、後は渡されたファイルパスを圧縮したり、中身を読んだり・・・
windowsと連携して色々できそうですね。

テーマ:プログラミング - ジャンル:コンピュータ

Pythonでコマンラインド引数を扱う

WindowsでPython シリーズ その29


とうとうPythonでコマンドライン引数を扱う時が来た!
これはもうレベル的にPythonをバッチファイルと同じ感覚で利用できる日が近いことを意味しますね!

Pythonでコマンドライン引数の扱い方


このシリーズは、そもそもPythonを使ってWindowsアプリを作りたいという想いから始まっています。
今回、ようやくPythonにWindows側からコマンドライン引数を渡して処理する方法を学びます。

Pythonにおいて、コマンドライン引数を扱う場合は
sys.argv を使います。

sysオブジェクトを使うには、
import sys をファイル冒頭に宣言する必要があります。

それでは早速sys.argv を使って引数を扱ってみましょう。


まずは至ってシンプルなコード。
コマンドライン引数をただprintするだけのコードです。

実行してみます。
Pythonでコマンド引数を扱う

引数が表示ささました。
[]でくくられています。
Pythonにおいて、コマンドライン引数はリストとして扱われるようです。

引数の内容を見てみましょう。

まずコマンドラインで指定したのは 1,2,3,4なのに、'E:\\work\\main.py' と表示されています。
これは実行したファイルのフルパスですが、Windows環境におけるPythonの引数0は実行パスが入っているということですね。

引数を処理するコード


Pythonでコマンドライン引数を受け取るプログラムを作るにあたって、
渡された引数をぶん回す処理を書いてみます。


これは、引数をとりあえずintに変換させて、表示するプログラムです。
intに変換出来ない場合は例外としてキャッチし、そのままcontinueしてエラーの内容を表示して、ループを継続させています。

実行結果はこちら
Pythonでコマンド引数を扱う

引数に1 2 3 a 4と渡しています。
数値ではない引数0番目の実行パスと「a」はエラーになるはず。

思いの通り表示されています。

プログラムコードの8行目
print("index:{0} value:{1} エラー発生:{2}".\
としているところ、これは本来であれば
print("index:{0} value:{1} エラー発生:{2}".format(i, v, str(type(err))))
と書きたいのですが、1行が長くなりすぎるので、次の行もプログラムの続きですよという「\」を付けて次の行に改行させています。
こうすることで、1行のプログラムを次の行に続けることができます。
見栄えの問題です。
C#で例えると「_」に該当します。

Pythonでコマンドライン引数を扱えるようになったら・・・


さて、今回の勉強でコマンドライン引数を扱う事ができるようになりました。

これで何ができるんか?っていうと、例えばファイルのパスを引き渡して、それを圧縮するなり、
加工するなり、動的にコネコネすることができるんですよ。
これってもうバッチファイルと同じ程度には何かできそうな予感がしませんか?

私はします。
夢が広がりますよね!

ファイルを右クリックして、「送る」フォルダにPythonプログラムを指定して、Pythonでファイルを圧縮する・・・
なんてこともできるかも。
できるでしょ。

テーマ:プログラミング - ジャンル:コンピュータ

次のページ

FC2Ad