前回、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つのメッセージボックスが表示され、各ファイル名が出力されます。
配布はしますが、僕が欲しかったので作っただけのものです。パソコンが壊れることはありませんが、効率の悪い部分もあるのはご了承ください。
ですが、要望やアドバイスなどは是非是非コメントしてください。励みになります。
これからもちょくちょく公開していく予定です。
コメント