前回、ThinkPadのUSBキーボードについてレビューした時に問題となったアプリのビット数。これを簡単に取得できるアプリを作成しました。
経緯としては、こちらをお読みください。

レビュー「ThinkPad USB TrackPoint Keyboard」
大学合格記念のRyzen自作PCに挑戦後、ひとつ不満が残っていました。
この記事ではVimを使って解決したのですが、
- 手順が多い
- 初心者は理解できない
といったデメリットも抱えていました。
そこで判別アプリについてググってみたのですが、どうやらVisual Studioが必要なようです。正直、これも初心者に向いてない。というよりも、開発環境なので僕も手軽には使いづらい。
なので大学で授業のなかった1時間のうちにチャチャっと作ってみました。
また、実装はPythonを用いました。Pyinstallerを使ってEXEファイル化しているので、Python環境がない人でもすぐに使うことができます。
ビット解析 ー0.0.1
ダウンロード
ダウンロード:AnalyzePrograms.zip
実装
先程も書きましたがPythonで書きました。ソースコードも別途付属してあります。
今回はまだ改良予定なので拡張しやすい書き方にしてあります。
# coding: utf-8
# author: 88IO
from ctypes import windll
import os
import sys
class AnalyzePrograms:
def __init__(self, args):
self.user32 = windll.user32
self.ext = [".exe", ".dll"]
self.program32 = []
self.program64 = []
self.others = []
def getType(self):
for fpath in sys.argv[1:]:
if fpath[-4:] in self.ext and os.path.isfile(fpath):
with open(fpath, "rb") as f:
hex_data = f.read().hex()
if hex_data.find("504500004c01") != -1:
self.program32.append(os.path.basename(fpath))
elif hex_data.find("504500006486") != -1:
self.program64.append(os.path.basename(fpath))
else:
self.others.append(os.path.basename(fpath))
def showMessages(self):
if self.program32 != []:
self.user32.MessageBoxW(0, "\n".join(self.program32), "32ビット", 0x00000040)
if self.program64 != []:
self.user32.MessageBoxW(0, "\n".join(self.program64), "64ビット", 0x00000040)
if self.others != []:
self.user32.MessageBoxW(0, "\n".join(self.others), "例外", 0x00000040)
if __name__ == "__main__":
ap = AnalyzePrograms(sys.argv[1:])
ap.getType()
ap.showMessages()
使い方
(こちらもZIPファイル内の「readme.txt」に記載してあります。)
- 調べたいファイル(EXE、DLLに限る)を「get_type.exe」にドラッグアンドドロップ(複数ファイルの同時ドロップにも対応しています)
- 最大で「32ビット」「64ビット」「例外」の3つのメッセージボックスが表示され、各ファイル名が出力されます。
配布はしますが、僕が欲しかったので作っただけのものです。パソコンが壊れることはありませんが、効率の悪い部分もあるのはご了承ください。
ですが、要望やアドバイスなどは是非是非コメントしてください。励みになります。
これからもちょくちょく公開していく予定です。

コメント