Fallout好き:主にFallout New Vegas

Fallout好き:主にFallout new Vegas

2013年10月8日火曜日

fnv4GB.exe(4GBパッチ)がタスクマネージャーに増える問題

2013/08/07 初版、2013/08/30 ツール更新。ゲーム終了後にも4gbパッチを強制終了、2013/09/01 ツール更新。ver0.2。コマンドプロンプトウィンドウ非表示に変更、2013/10/08 動作確認環境追記。Ver0.3追記、2013/10/09 Ver0.4追記、2013/10/11 Ver0.4の32bit版追加、追記、2013/10/12 Ver0.5 追加
ゲーム起動時に残ってしまったfnv4GB.exeを終了させてから4GBパッチを呼び出す
プログラムを作った(バッチファイルだけど)。

■動作環境
  動作確認した環境は Windows7 64bit版。でも32bit版で作ったので32bit環境でも動くはず。
■ダウンロード
  fnv4GBcall
  fnv4GBcallV05.zip

   fnv4GBcallV04.zip ←旧32bit版。64bit環境でも動くはず。
  fnv4GBcallV04_64bit.zip ←64bit版。もし32bit版が動かなければこちらを。ついでに「32bit版動かなかったよ」とコメントお願いします
■インストール
  ダウンロードしたら展開し、fnv4GBcall.exe を fnv4GB.exe(4GBパッチ)の置いてあるフォルダにコピーする。
■使用法
  fnv4GB.exe の代わりに fnv4GBcall.exe を実行する。
    fnv4GBcall.bat は中身を知りたい人向け。
============================================================================
■要するに何のためのツールか?
  このツールからゲームを起動(fnv4GB.exeを呼び出す)し、ゲーム終了時に残ってしまったfnv4GB.exeを終了させる。
  fnv4GB.exeが残っているとFallout New Vegasフォルダのファイル操作や、Fallout用ツール(FOMM等)使用時にエラーが発生することがある。それを防ぐことが出来る。

  ※(推測だけど)エラーが発生する理由は、fnv4GB.exeがファイルを使い続け、Fallout用ツール等がファイルを使用出来ないため。

■作成までの経緯、作成の流れ
4GBパッチはフリーズが減るので非常にありがたいツールなのだけど、
自分の環境ではゲーム終了後にもタスクマネージャーに残ってしまい、
MODの検証等で起動を繰り返していると、そのうちゲームが起動出来なくなり鬱陶しい。
もちろん、タスクマネージャーから fnv4GB.exeを終了させれば起動出来るようになるが、手間。

参考までに自分の環境=Windows7、64bit版、Memory 8GByte、CPU=Core2Quad、GTX560Ti

原因はわからないが、とりあえずゲーム起動時にタスクマネージャーに残っているfnv4GB.exeをkillすることで対処することにした。

そのためのバッチファイルを作った(自分は難しい事は出来ない)。
===============================================
taskkill /F /IM fnv4gb.exe ←4gbパッチプロセスが居たら強制終了させる。
start fnv4gb.exe              ←4gbパッチ起動。ゲームが起動する。

:checktask
ping localhost -n 5 > nul
tasklist | findstr FalloutNV.exe >NUL 2>&1
if errorlevel 1 goto end
goto checktask       ←ここまでの処理は、大体6秒間隔でゲームが起動中しているかチェック。

:end
taskkill /F /IM fnv4gb.exe    ←ゲームが終了していたら4gbパッチを強制終了。
taskkill /F /IM FalloutNV.exe ←(不要。次回更新する機会があれば削除する)
===============================================
ver0.1 でゲーム終了後にもkillするようにした。
ver0.2 でコマンドプロンプトウィンドウ(黒い画面)が表示されないようにした。

バッチファイルをEXEファイルに変換してくれるツールを使って .exeファイルにした。
  Bat_To_Exe_Converter
  http://www.forest.impress.co.jp/docs/review/20090908_313521.html
  作者の下記サイトからダウンロード可能
  http://www.f2ko.de/programs.php?lang=en&pid=b2e

--------------------------------------------------------------
2013/10/08 追記

Version0.3を作成した。

■Version0.3の説明

ゲーム終了してもFalloutNV.exeが残ることがある。その場合はVersion0.2以前では終了しない(FalloutNV.exeが残っている=ゲームが起動している、と判断するため)。その場合でも、FalloutNV.exeを終了させるようにした。これでゲーム終了時は常にFallout関連プロセスが綺麗に消える。
ただし、FalloutNV.exeが残ること自体問題だと思うので、問題を隠蔽してしまうことにもなる。なので、「/nf」(大文字でもOK)を引数でつけるとFalloutNV.exeを強制終了しないようにした。例えば「fnv4GBcallV03.exe /nk」のように使用する。
ショートカットにオプションを書き加える時はこんな感じ。
■===batファイルの中身====================================
taskkill /F /IM FalloutNV.exe ←ゲームプロセスが居たら強制終了させる。
taskkill /F /IM fnv4gb.exe ←4gbパッチプロセスが居たら強制終了させる。
rem ping localhost -n 1 > nul
start fnv4gb.exe
ping localhost -n 5 > nul ←ゲーム起動時は5秒余計に待つ(でないと起動途中にゲームを終了させてしまうことがある)

:checktask ←ゲーム中、5秒毎にプロセス一覧を調べ、ゲームが終了しているならばtaskkillerに飛ぶ。
ping localhost -n 5 > nul
tasklist /v | findstr Fallout: >NUL 2>&1
if errorlevel 1 goto taskkiller
goto checktask

:taskkiller ← プロセス一覧を調べ、FalloutNV.exe が残っていたら4gbパッチと共に強制終了させる。残っていないなら終了する。
if "%1" == "/nk" goto TaskRemainMessage ←オプションが指定されていたら TaskRemainMessageに飛ぶ
if "%1" == "/NK" goto TaskRemainMessage
if "%1" == "/notkill" goto TaskRemainMessage
if "%1" == "/NOTKILLf" goto TaskRemainMessage
taskkill /F /IM FalloutNV.exe
taskkill /F /IM fnv4gb.exe
ping localhost -n 3 > nul
tasklist /v | findstr FalloutNV.exe >NUL 2>&1
if errorlevel 1 goto end
goto checktask

:TaskRemainMessage ←プロセスが残っている旨のテキストファイルを作成し、notepadで表示させ終了。
echo ゲームは終了しましたがFalloutNV.exeプロセスが残っています。> fnv4GBcallMesg.txt
echo.>>fnv4GBcallMesg.txt
tasklist /v | findstr FalloutNV.exe>> fnv4GBcallMesg.txt
start notepad fnv4GBcallMesg.txt

:end
=== ここまで ===================================

■Version0.3の仕組みの肝(きも)

tasklistでプロセス一覧が表示される。
tasklist /v でプロセスの詳細な一覧が表示される。
tasklist /v   | findstr XXX で、そこから XXX の文字が含まれる行を抜き出す。

プロセスが残っているかは下記の違いで判断している。

・ゲームが起動している場合
C:\>tasklist /v   | findstr FalloutNV.exe
FalloutNV.exe   4960 Console  1    693,204 K Running DG33FB   0:01:21 Fallout: New Vegas

・ゲームが終了したのにプロセス(FalloutNV.exe)が残っている場合
C:\>tasklist /v | findstr FalloutNV.exe
FalloutNV.exe    4620 Console 1    275,040 K Running  DG33FB   0:00:12 DIEmWin

--------------------------------------------------------------
2013/10/08 追記

Version0.4を作成した。

■Version0.の説明

tasklist /v   | findstr Fallout: だけだと FOMM も条件に当てはまるため、FOMMが起動しているとFalloutNV.exe が残った状態を検知出来ないことがわかった。

C:\Users\a>tasklist /v | findstr "Fallout: New Vegas"
FalloutNV.exe 8440 Console 1  307,040 K Running     DG33FB  0:00:17 Fallout: New Vegas
fomm.exe       4784 Console 1   39,456 K Running      DG33FB  0:00:03 Fallout Mod Manager (0.13.21) - Fallout: New Vegas


なので、下記のように変更した。
tasklist /v   | findstr Fallout: | findstr FalloutNV.exe

--------------------------------------------------------------
2013/10/12 Ver0.5 追加

アイコン付けただけ。

■アイコン付作成手順メモ

自作のアイコンに色をつけるmodから、無線機のアイコンを材料に「fnv4gbcall」の文字を追記して作成する。以下、手順のメモだが、実際は一発じゃうまく出来なくて、何度もやり直している。アイコン作るの今回が初めてだし。

材料=nvdlc02items_walkie_talkie_fixed.dds

paint.net 起動
nvdlc02items_walkie_talkie_fixed.dds を読み込む
ウォーキートーキー以外の余白が多いので
トリミングを押して、SHIFTキーを押しながらドラッグすると四角く範囲指定出来る。
四角にトリミングする。
下側に文字を揃えるので、
文字の「call」を先に書いて、上下で真ん中あたりにドラッグ。
「fnv4gb」を書いて「call」の上あたりに、左右で大体真ん中にドラッグ。

アイコンが出来たので、ファイル→ファイル名指定→ファイルの種類にpngを指定して保存。

PNGだとアルファ(このエディタだと市松模様になってる背景部分)が透明になり、
かつ、この後で使うアイコン作成ツールで読み込める。
保存したpngファイル。

アイコン作成に使うソフトのダウンロード

Greenfish Icon Editor Pro 3.31

http://greenfishsoftware.blogspot.jp/
一番下からダウンロード。
ダウンロード時、「Use our download manager and get recommended downloads」と書いてあるところは、チェックを外さないと多分変なダウンロードマネージャーがインストールされると思う。

で、起動して、日本語化(メニューのsettings→Language→Japanese)して、
pngファイルを開く(ファイルをドラッグで良い)。

アイコン→イメージからWindows用のアイコンを作成→OK
で、アイコンが作られる。

ファイル→名前を付けて保存→「fnv4gbcall.ico」でアイコン作成。
この時ファイル名は、拡張子.ico まで入力しないと保存出来ない。
バッチファイルをexeに変換する。
Bat To Exe Converterをダウンロード。

http://www.f2ko.de/index.php?lang=en


Programs→Bat To Exe Converter
からダウロード出来る。

(ちなみに
Programs→Bat To Exe Online-Converter
で、WEBサイト上でファイルを指定するだけで、同様のことが出来るが、アイコン等の指定が出来ない)

ダウンロードしたファイルを展開すると、32bit版と64bit版のフォルダがある。今回32bit版を作りたいので、32bit版の Bat_To_Exe_Converter.exe を実行。

Batch file: にバッチファイル(fnv4GBcallV05.bat)を指定。

単純にバッチファイルをexeに変換するだけならこれだけで良い。

今回は更に細かく指定する。
これでその下の出来上がる exe ファイルのパス・ファイル名も自動的に設定される。変更も可能。
Invisible applicationにチェック。コマンドプロンプトの黒窓が表示されなくなる(一瞬は表示されるかな)。
Add administrator manifestにチェックを入れると管理者権限で実行されるらしい。
今のところ必要性を感じないので使っていない。
アイコンはVersionInformationsタブでファイル(fnv4gbcall.ico)を指定する。
その下ではファイルのバージョン情報なども指定出来る。

Compileボタンを押すと、
アイコン付きのfnv4GBcallV05.exeが出来た。

本筋と関係無いけど、横にある「fnv4GB.exe」って最近意識してなかったが、
アイコン付いてたんだな・・・・
小さいアイコンしか持ってないから、これくらの大きさで表示しても微妙に気づかなかった。
今回のアイコン作成ツールは、各種大きさが自動的に作られるので楽だった。

9 件のコメント:

  1. 便利ですね 使わせて頂きます

    返信削除
  2. どもー。おかしいところあったら教えてください

    返信削除
  3. これですか- 噂の神ツール
    無論頂きです

    返信削除
  4. えーと、やってることとか仕組みはしょぼいので。。。神っていうならIzumikoさんとかじゃないかなー。NexusのDL数とか信者がいそうなレベル。

    返信削除
  5. Bat_To_Exe_Converterで出す時にx64の方で出力してますよね。
    それで32ビット環境じゃ動かないんです、64ビットOSでも32ビットexeは動くので、64ビット化しなくても良いと思うんだけど。

    返信削除
  6. >Izumikoさん
    Bat_To_Exe_Converterの出力ですが、特に意識せず出力してました。32bit環境でも動くように32bit版を出作成して載せました。ありがとうございます。
    Bat_To_Exe_Converterはダウンロード版を使ってた(オンライン版知らなかった)のですが、オンライン版では32bit版と64bit版が作れるんですねー。ダウンロード版はアイコン・ファイル情報・添付ファイル等の機能がありますが、それらは使ってなかったし、オンライン版で十分でした。

    返信削除
  7. いやいや、今気づきましたけど、ダウンロード版も32bit版が付いてたんですね・・・・。フォルダ名に(64 bit)とついてて?と思って気づきました。。。

    返信削除
  8. ノートンだと誤検知で削除されるようです。

    返信削除
  9. 中身がバッチファイルだからかもしれませんね。ノートンよく知りませんけど、大抵のウイルス対策ソフトは指定したファイルを対象外に出来るので、そうすれば削除されないと思います。

    返信削除