Win7 ユーザーは一読ください
中井技術工房 Win7でのソフトの推奨使用法 Feb.25,2012 改正 トップ> ここ

Win7 で画面 RGB 情報を高速取得する方法

Win7 での推奨使用法

当方が公開している主要ソフトはVC2005 で書き直し Win7 での動作を確認しています。
通常の使用では、互換モードも特権レベルの使用選択も不要です。

Win7 対応と明記していないソフトでも Win7 で動かしたところ、UAC 関係以外での動作不良はこれまでのところ確認できていません。


使用法1−−Win7 対応済みソフトの使用法

[ 通常使用時 ]

1) 管理者レベルIDでWin7を立ち上げる

管理者としてユーザーを登録して、Win7 を立ち上げてください。
当方の有料ソフトでは、システム部分にアクセスするところがあり、管理者IDでないと、Win7/Vista では正常に動作できません。

2) ソフトに管理者権限を与えない

通常の使用時は管理者権限で本ソフトを立ち上げる必要はありません。通常ユーザー(=制限ユーザー)でよい。
これでUAC 警告は出ません。

以前エクスプローラとかで、特権レベルの「管理者としてこのプログラムを実行する」設定をするよう推奨していましたが、これはまちがいだったようです。
これはチェックマークをはずしてください。

3) Side by Side Error が出るとき

後述の Side by Side Error 対策をしてください。
[ 暗号設定時 ]

1) 管理者レベルIDでWin7を立ち上げる

2) ソフトを管理者権限で実行する
ソフトのデスクトップアイコンやエクスプローラで、exe を右ボタンクリックするとメニューが出て選択できます。
管理者IDで Windows を起動しても管理者権限に自動ではならないので注意のこと。

立ち上げ時に UAC の黄色い画面の警告がでますので、許可を与えてください。


使用法2−−Win7 未対応ソフトの使用法

1) 管理者レベルIDでWin7を立ち上げる

管理者としてユーザーを登録して、Win7 を立ち上げてください。
当方の有料ソフトはシステム部分にアクセスするとことがあり、管理者IDでないと、Win7/Vista では正常に動作できません。

2) ソフトに管理者権限を与えない(11/06/06改正)

これまでエクスプローラとかで、特権レベルの「管理者としてこのプログラムを実行する」設定をするよう推奨していましたが、これはまちがいだったようです。
これはチェックマークをはずしてください。

3) ユーザーアカウント警告(UAC警告)に許可を出す選択もあり

当方のソフトに UAC(ユーザーアカウント)とかシステムにアクセスする部分があり、立ち上げ時にこの警告(黄色いやつ)が出ます。
いずれソフトはWin7対応版を出しますが、当面毎回出ますので許可をしてください。

どうしても回避するには、
UAC を解除 (方法はWindows ヘルプで「UAC 解除方法」でOK )して使用ください。
なお、使用後はできるだけ
UAC を有効にもどす ようにしてください。

4) Side by Side Error が出るとき

後述の Side by Side Error 対策をしてください。


●トラブル1-- Side by Side Error

起動時に次のサイドバイサイドエラーが出て、使用できないことがあるようですので、対策を示しておきます。
ただ、当方の Win7 PC (Win7-Professional-32 SP1) での動作確認でこの現象を確認できていませんので、バージョンとかの差があるようです。

[ エラーメッセージ ]

これはWin7 Sp1 で出たものです。


[ 対策 ]

次のところから「Microsoft Visual C++ 2005再頒布可能パッケージ」をダウンロードしてインストールしてください。

http://www.microsoft.com/downloads/details.aspx?FamilyID=200b2fd9-ae1a-4a14-984d-389c36f85647&DisplayLang=ja

[ 推定原因 ]

当方の開発環境は、VC6, VC2005 をインストールしている XP PC にて VC2005 で開発していますが、一部は VC6 で開発したものも残っています。

現在のアプリは、O/Sに組み込まれているソフト群を、アプリが利用して動くようなからくりになっていますが、この実行サポートしているソフトが、Win7 では本ソフトとマッチングしていないということだと思われます。
あるいは当方のソフトが、「VC2005 寄りにできている」のかもしれません。
いずれにしろ、この方法で動くという報告がありました。

なお、順次 VC2005 で組み立て直しており、主要なソフトは書き直しが完了しています。



●トラブル2-- GetPixel() が非常に遅い!

[ 現象 ]

画面から特定点の RGB 情報を取り出すAPI に GetPixel() という有名な汎用関数があります。
画像処理にはどうしても必要な機能です。
ところがどうも Microsoft は Win7 に移行するときに高速化のため、この関数を犠牲にしたようです。
この関数を Win7 で呼び出すととんでもない時間がかかるようになりました。

[ 対策 -- 検証済み ]

Microsoft は個別処理を犠牲にして一括処理に重点を移した、のだと解釈しました。

そこで、BitBlt() の機能を使い、CBitmap の関数を利用して、画面の指定ゾーンを一括でビットマップイメージとして取り出し、そこから個別ドットのRGB 情報を取り出すことにしました。
プリンタにドットデータを転送するのと逆の処理です。
これでうまくいくことがわかり、公開ソフトはすべて対応済みです。
このテクは別頁で公開していますので、ソフトに興味のある方はごらんください。


●トラブル3-- Win7 対応の同名対策済みソフトを入れ替えてもUAC警告が出る

[ 現象 ]

ある exe を起動したときにUAC警告が出たとします。
その後同名で、UAC警告の出ないように作られたexe ファイルを重ね書きしたときも、このexe を起動すると、UAC警告が出るようです。

奇妙なことに、UAC 警告の出たソフトを削除後、同名ファイルをよそからコピーしてきても、同じことがおきます。
どうもそのファイル名の特性みたいなものをWindows が記憶しているようです。

[ 対策 ]

エクスプローラで exe ファイルの右ボタンクリックで「プロパティ」にて
特権レベルのチェックをはずす(互換性のチェックもはずす)
ようにしてください。
通常は下図のように、UAC 昇格要求アイコン(左)が昇格が不要(右)になります。
ただし、アイコンは切り替わらない場合もあり、注意が必要です。


トップ > 頁トップ