################ VPNdisp2010.exe の使い方 ################ このアプリは無保証です。使う人が内容を理解した上で ご使用下さい。 ライセンスは GPL に従います。 by T. Yabu 2016.12.1 作成 2019.11.13 追記 ============== VPNdisp2010.exe とは ============== 自マシンの IP アドレス が 「VPNdisp.txt の中で指定されたアドレスか否か」を調べ、 その成否によって壁紙を変更する。 Visual C++ 2010 で開発したので VPNdisp2010.exe という ファイル名になっている。 ============= 使い方 =============== (1) あらかじめコマンドプロンプトで ipconfig /all を 実行して、普段の IP アドレスと VPN 接続時の IP アドレスを調べておく。 (2) 以下の 4 つのファイルを何らかのフォルダに入れる VPNdisp2010.exe VPNdisp.txt 普段のときの壁紙(jpg) VPN 接続時の壁紙(jpg) Windows の壁紙は C:\Windows\Web\Wallpaper 以下にある (3) VPNdisp.txt を編集して自分の環境に合わせる (4) VPNdisp2010.exe を起動する VPN に接続したり、切断したりして 問題なく動作することを確認したら、 タスクマネージャから VPNdisp2010.exe を終了させる。 (5) 自動起動するために、ショートカットを作成し、 ショートカットをスタートアップに入れる。 スタートアップの場所は「ファイル名を指定して実行」で shell:startup と入れると開く。 サインアウト → サインインして、自動起動することを確認する。 さらに VPN に接続したり切断したりして、動作確認を行う。 筆者の環境の場合、 Windows 8 のデスクトップ機では一度起動したらスリープに なっても動作し続けるが、 Windows 10 のノート機では、スリープになると終了し、 復帰時に再度起動する。 なぜ、違いが生じるのか、分からない。 ================= プログラムの内容について =============== Visual C++ 2010 で Windows アプリケーションの 雛形を作り、それをもとに作成した。 InitInstance で無限ループを組んでいる。 とりあえず動けばよいという考えで作成した。 壁紙を変更する API である SystemParametersInfo の 第 4 引数は SPIF_SENDWININICHANGE としており、 変更は一時的なものである。レジストリは変更しない。 サインアウトして、再度サインインすると背景画像は元に戻る。 サインアウトせずに元に戻すには、タスクマネージャで VPNdisp2010.exe を終了させた後、 Windows8 : 画面で右クリック → 個人設定 → デスクトップの背景 Windows10: 画面で右クリック → 個人用設定 → 背景 ============ cwd (Current Working Directory) について ========== Visual C++ 2010 Express でプログラムを開発すると exe ファイルは C:\Users\ユーザー名\Documents\Visual Studio 2010 \Projects\VPNdisp2010\Debug の中に作成される。この exe ファイルのショートカットを作成し、 そのショートカットを実行すると cwd は (1) ....(略)....\VPNdisp2010\Debug になる。しかし、Visual C++ 2010 Express から「デバッグ」→ 「デバッグ開始」として実行すると cwd は (2) ....(略)....\VPNdisp2010\VPNdisp2010 になり、(1) とは異なったディレクトリである。 VPNdisp2010.cpp の中で、fopen でファイル名を相対指定している。 ゆえに、以下の現象がおこる。 ・開発時(Visual C++ 2010 から実行)は  (2) のフォルダ内の VPNdisp.txt を読み込む ・スタートアップからの実行時は  (1) のフォルダ内の VPNdisp.txt を読み込む VPNdisp.txt と画像ファイルの置き場所を間違えないように、 注意が必要である。