WMFCopy

最新版 2023/11/05
○ 概要
画像のメタファイル 古くは *.wmf 新しくは *.emf は使用の仕方によってはサイズも小さく 大きくしてもラスターのギザギザが現れないなど便利な物です。又 Ms Word Exel 等のコピーは殆ど 此の メタファイル データも クリップボードに入ってきます。これらのデータを いざ使用する時に なって *.wmf ←→ *.emf の変換 又 此をクリップボードにコピー クリップボード上のデータを ファイルに落とす 等の機能を持った適当なプログラムが無かったので Win GDI の本来持っている 機能ですので変換 表示する所は全て Win GDI に任せる事にして 此の WMFCopy を作成しました。
wmfcopy
機能としては
(1) *.wmf ←→ *.emf の変換。
(2) クリップボード上のメタファイルデータの閲覧と此のファイル化。
(3) ディスク上のメタファイルのクリップボードへの代入。
(4) ディスク上のメタファイルの閲覧。( まあ当たり前ですが )
*.wmf はメタファイル *.emf は 拡張メタファイル との表現になっている事も有ります。

○ 動作環境
Win XP / Vista / 7 / 8 / 10 / 11 特別なランタイムはいりません。

○ インストール/アンインストール方法
適当なところに置いて適当にショートカットを作ってください。
アンインストールは実行ファイル WMFCopy.exe と WMFCopy.exe が終了時に作る WMFCopy.qnfを 削除してください他には何も記録しません。

○ 使用方法
ただ立ち上げてください。コマンドラインに有効な メタファイル名が有ればそれを表示して 立ち上がります。コマンドラインが無ければ クリップボードのメタファイルデータを表示して それも無い時には最後に使用したファイルを表示して立ち上がります。
・コマンドライン
WMFCopy.exe メタファイル名 だけです。
フォームはメニューとキー入力だけをサポートしています。( メニューが 英語なのは ショートカットキーも入れ 出来るだけ幅を狭めて横幅の小さな物にも対処する為です。)

・File ( ファイル )
・開く メタファイル( *.wmf *.emf ) を開きます。
・リスト 此の下に最近開かれたフォルダーに有るメタファイルを表示してそれを選択する事で すぐに開く事が出来ます。現在開かれている物には ・ マークが付きます。
・フォルダー 現在表示されているのがファイルなら ファイルを選択して現存フォルダーを開きます。
・保存 現在表示されている画像を 名前を付けて保存します。
・上書き保存 WMF メタファイルのサイズが変更された時に此を上書きします。
・終了 単に終了です。
終了時に WMFCopy.qnf に
 開いたパス
 使用中だったファイル名
 最後に開いた拡張子
 保存したパス
 最後に保存した拡張子
 Set メニューの設定
 最後の位置
を書き残し 次の立ち上げに備えます。

・Edit ( 編集 )
フォームの右クリックでも同じメニューを出す事が出来ます。
・WMF にコピー
現在表示中のメタファイルを WMF データとしてクリップボードに入れます。
・EMF にコピー
現在表示中のメタファイルを EMF データとしてクリップボードに入れます。
上記 2 項目 を選択する時に Shift を押していると Set メニューの 消去して代入 の 設定と反転した動作をします。
・WMF を表示
クリップボードに有る WMF データを表示します。( 所謂 貼り付けです。)
・EMF を表示
クリップボードに有る EMF データを表示します。( 所謂 貼り付けです。)
・サイズを記憶
WMF メタファイルの時に 実サイズ (推奨サイズ) を現在表示しているサイズに 変更します。但し ORG が EMF で WMF に変換した物の中には 変えられない物も有ります。
・プロパティー
現在表示中のメタファイルデータを
実サイズ (推奨サイズ) 横 x 縦 ピクセルと Msz 画像の現在のメモリー占有サイズを Bytes で表示します。
ほぼ EMFファイルにした時の サイズで WMF ファイルの時のサイズは違ってきます。
この時 実サイズに フォームを調整して表示します。フォームを調整した時は現在の倍率も 表示します。( 画面に入らない時は 何分の一かにして表示し此の倍率も分数で表示します。)

・Set ( 設定 )
チェックの有るときに有効です。
・実サイズ表示
最初に表示する時に 実サイズ( 推奨サイズ ) で表示します。小さすぎる時や大きすぎる時には 何倍か 又は何分の一かにします。
・消去して代入
メタファイルデータを クリップボードに入れる時に他のクリップボードデータを 消去してから代入します。此を有効にしているとWMF 形式で メタファイルデータをクリップボードに 入れても ウィンドウ内部で EMF メタファイルデータ も同じデータで補填してしまうようです。 ( その逆も ) クリップボードの WMF と EMF メタファイルデータを違う物にしたい時には此の チェックを外して置けば違う物が持てる様になります。
・APFHD を付加
WMF 形式での保存の時に Placeable メタファイル ( Aldus Placeable Format ) にする為にAPMFILEHEADER を付加しています。
・EMF を 優先
立ち上げ時と貼り付け時に クリップボードデータのどちらを先に取得するかを設定します。 チェックの無い時には WMF データを優先します。
・最前面表示
他のウィンドウの下に隠れないウィンドウで表示します。

・サポートしているキー入力
・←↑Space / →↓BS キー 同じフォルダーに有るメタファイルの前を / 後ろを表示します。
・Home 同じフォルダーに有るメタファイルの先頭を表示します。
・End 同じフォルダーに有るメタファイルの最後を表示します。
・Ctrl + V 所謂 貼り付けでクリップボードデータを表示します。
・Ctrl + C EMF 形式で メタファイルデータをクリップボードに代入します。
・Ctrl + X WMF 形式で メタファイルデータをクリップボードに代入します。
・Ctrl + G WMF メタファイルの実サイズ (推奨サイズ) を現在表示しているサイズに変更します。
・Z 実サイズに フォームを調整します。
・D 実サイズに フォームを調整してメッセージを表示します。メニューの プロパティーと同じです。
・I フォームのサイズは変えないで 現在の 表示サイズを示すプロパティーを表示します。

・フォームはファイルのドロップにも対応していますから 開くよりこちらの方が早い事も有るでしょう。

○ 注意事項
WMF 形式での保存の場合は Aldus Placeable メタファイル ( Aldus Placeable Format ) にする為に Set メニューの APFHD を付加 に チェックが有れば APMFILEHEADER を付加しています。今更此が 付加されていると読み込めないプログラムが有るとは思いませんが 此の HEADER が邪魔なら Set メニューの APFHD を付加 のチェックを外して下さい。但し 此のチェックを外して 保存した WMF は 実サイズ情報 ( 推奨サイズ ) が失われます。

○ 制限事項
新しい Windows ( と言っても Win32 Base ) では WMF 形式のファイルの使用はあまり推奨されて いないようです。その為 此の WMF 形式のメタデータ取り扱いにも Win API の中で制限が有ります。 此の WMFCopy.exe も内部的には 全て EMF 形式のメタデータで取り扱っています。この制限で 古い *.wmfでは 実サイズ (推奨サイズ) を取得出来ずに 新たに再設定する事もありまして 正確でない事も 有る様です。( Aldus Placeable Format なら多分正確に取得出来るはずです。) その事から *.wmf を 此の WMFCopy.exe で開いて再保存したファイルが元のファイルと全く同じである保証も有りません。 又 ファイルに落とした *.wmf も Header 違いで読み込めないソフトも有るかも知れません。 WMFCopy.exe は メタデータの変換機能だけで 修正したり変更したりの機能は有りません。又上記の 制限から *.wmf ←→ *.emf 変換で多少データが違ってくる事も有りますので 出来るだけ EMF データ での 運用をお奨めします。 メタファイルデータをクリップボードに入れる時にもう片方が空いていると片方の形式で入れても ウィンドウ内部で 両方に同じデータを展開してしまう様です。WMF EMF データを違う物にクリップボードに 保持したい時は 消去して代入 に チェックを付けないで運用して下さい。

○ 使用に関して
此の プログラムは バグ 動作不良などが無い事を期待されて作られてはいますが 違う環境での 正常動作 又 誤動作から来る損害など についての 保証はいたしかねます。 ただし意見は大歓迎いたします。

○ 履歴
2005/06/06 Ver 1.000
適当な物が無かったのでとりあえずの機能で作製して機能も落ち着いて まあこんな所でしょうと思われるので初公開しました。
2005/06/11 Ver 1.010
WMF からの メタファイルには サイズを記憶 で サイズを変更出来る様にしました。 Ctrl + D では 現在の表示サイズを示す様にしました。後 WMF ←→ WMF の時は直接元の データを使用 する事にしてなるべく元のデータの変換を無くしてデータの化ける可能性を減らしました。 実サイズ表示 で 何分の一かにする時に画面からはみ出してしまう事の有るのを修正しました。
2005/06/16 Ver 1.012
一部内部的な動作を堅くして 重複していた無駄な動作を省き システムへの負荷を 減らし サイズの減少をしています。
2005/07/04 Ver 1.013
立ち上がる時に 2度 Drawしてしまう無駄を無くしました。此の改良で以前と違う サイズの物を読み込んで立ち上がる時のちらつきも無くなりました。又 立ち上がり時の表示も取り敢えず 表示してから後の事をする様にして表示を早くしています。
2005/11/17 Ver 1.020
立ち上げ時の関数を一つ減らして多少なりとも速く サイズも押さえました。
2005/12/05 Ver 1.022
クリップボードにコピーする時に Shift を押していると Set メニューの 消去して代入 と反転した動作をする様にしました。立ち上げ時に同じ様な事を二回しない事により スピードアップとサイズダウンをしています。後 呼ばれ方によっては設定ファイルを読み込めない 不具合を修正しました。
2006/02/06 Ver 1.024
フォームの右クリックで編集のメニューと同じコンテキストメニューを出す様に しました。
2006/05/05 Ver 1.030
タイトルバーのシステムメニューが出ないバグを解消しました。 最大化している時に終了すると その 位置 サイズが記憶されてしまう不具合を修正し 位置 サイズを デュアルモニターに対応させました。
2006/11/27 Ver 1.032
立ち上げ時の画像表示を出来るだけ速くするために画像表示が終わってから 同じフォルダーのメタファイルを調べてメニューにする様にしました。クリップボードのメタファイルを 表示している時にも内部的に保持している最近のファイルにチェックが付く不具合を修正し 此処から ↑↓←→ Space BS の キーでファイルを表示させる時は最初に内部的に保持している最近のファイルを 表示する様にしました。
2007/04/25 Ver 1.040
メタファイルのリストメニューを作る時にファイル名のソート 同一名を探すのを オンメモリーで処理する様にしてシステムへの負荷を軽くしました。 又 画面のサイズが変えられてもメニューの高さが正確になるようにしました。
2007/09/30 Ver 1.042
メタファイルのリストメニューを作る時のファイル検索動作を一回のループで 済ます様にし 又 此に使用するバッファの取得法を変えてこの部分の効率をアップしました。
2008/03/11 Ver 1.044
メタファイルの再描画の為のメッセージを出す関数を動作が外れた時に出来るだけ 他のシステムに影響を与えない安全な関数に変えました。
2009/04/13 Ver 1.050
コマンドライン解析部分を若干ですが堅くし効率化しました。 Windows 98 用のモリマネージャー読み込み時間短縮オプションをやめてアプリケーションのサイズ ( ディスク サイズ )を縮小しました。
2009/06/22 Ver 1.052
現実的にあり得ないコマンドラインを想定してのコードはやめ 又 トリッキーな コードを通常の物に戻し間違いを少なくし此の部分での効率 サイズ共に改善しました。
2009/08/01 Ver 1.053
ループ脱出条件が整わずにメモリー違反が出てしまう可能性が有るコードを修正しました。
2009/10/09 Ver 1.054
Windows と共に終了する時のコード効率を若干ですが良い物にしました。
2010/01/10 Ver 1.060
読み込みに行ったファイルが 読み取り専用属性を持っていた時にオープン 出来ずに読み込みに失敗してしまう不具合を修正しました。
2010/08/23 Ver 1.062
共通バッファがオープンファイル名と画面処理用のバッファと重なる可能性の有る パスを安全の為に完全に分けました。
2010/10/28 Ver 1.070
EMF を 優先 の メニューを新設して立ち上げ時と 貼り付け時にどちらを採用するかを 選択出来る様にしました。又 ファイルとして保存するのが便利な様にキーアサインを変えました。 クリップボード のどちらのデータを表しているかの名前が場合によってはおかしい事への対処をしました。
2011/08/11 Ver 1.072
設定ファイルの読み込み書き込みの動作と確認を確実な物に換えました。
2012/02/16 Ver 1.074
必要のないリソースの読み込みと意味のない解放を整理した事 内部メッセージのやりとりを整理して サイズを減少させました。
2012/08/04 Ver 1.080
コマンドライン ファイルのドロップを フォルダーまで拡張してその中の WMF EMF を表示する様にしました。
又 表示しているファイルのあるフォルダーを開く ファイル→フォルダー メニューを新設しました。
その他 プロパティー表示のタイトルの整合性を修正 内部バッファオーバーの可能性を無くしています。
2014/03/27 Ver 1.082
常駐したままウィンドウのシャットダウンになった時自分の設定ファイルを確実に書き残せるメッセージの 廻し方にしました。
2014/11/15 Ver 1.084
立ち上げの時に最後に使用したファイルが無いとフォルダーのメニューの整合性が取れなくなるのを修正しました。 ウィンドウのシャットダウンと共に終了する時に出来るだけ早い反応で終了するコードに変えました。
2015/03/20 Ver 1.100
バックカラーが システムの Window カラーだと透過色の判断が出来ないので自分のバックカラーは 編み目にしました。 場合によってはマウスカーソルがおかしな物が残ってしまうのを修正し 設定メニューに最前面表示を加えました。
メニューの高さを取得してメニューの数を整理するコードを余分な廻りが出ない物に変えました。
2015/06/15 Ver 1.110
DPI の仮想化による スケーリングの影響で画像が滲んでしまう事や 予期した以上にフォームが拡大される事が 有るので 此らをを無くす為 内部的な宣言を OS にする事で スケーリングを 防ぐ様にしました。
タイトルバー表示は ファイル名だけにして出来るだけ ファイル名が全て表示される様にしました。
2019/09/01 Ver 1.120
*wmf *.emf のファイルメニューを並べる時に Windows 10 1809 から API の返すメニュー高さが変わった様で 環境に よっては アイテムの数が高さ方向にオーバーして見えない物が出てしまうのを修正しました。
2020/05/20 Ver 1.200
画面からはみ出さない様にする判断をマルチモニター環境にも適応させて プラオマリーモニター以外にも 移動できる様にしました。
2023/04/05 Ver 1.220
*wmf *.emf のファイルメニューを縦に並べる時に Windows 11 から 一列だと 多少余裕を取る 様になり 並べたメニューが予期しない形になるのを避けるコードにしました。
2023/11/05 Ver 1.240
自分のパスと コマンドラインを取得する所を新たな物にして パス最終の値の再確認も入れて安全性を高めました。
現在対象にしているフォルダー内の ・*wmf *.emf のファイルメニューを画像を表示したら内部的に 作っておき すぐに Home End ↑ ↓ キーで次を選択出来る様にしました。

最新版 2023/11/05 Ver 1.240 Size 13 kb WMFCopy のダウンロード
−戻る−