みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

VB6でレジストリファイルをインポートするには?

○○.regというファイル(レジストリファイル)を開こうとすると、「レジストリに追加しますか?」というメッセージが現れますが、

VB6でregファイルを開き、この状態にしたいです。

初めは安易にshell(~\○○.reg)でいけるのかと思ったらエラーになってしまいました。

どうすればいいのでしょうか・・・??

あと、ちょっと気になっているのですが、レジストをインポートしても直後には反映されず、再ログイン時等に反映されますが、直後に反映されるため、何かのexeファイルが動いているんですか?
実際にデスクトップの壁紙等もプロパティを開いて変更したら直後に反映されているので、あのOKボタンを押すことで何かが起動しているように思うのですが・・・

投稿日時 - 2010-01-26 22:10:12

QNo.5625730

すぐに回答ほしいです

質問者が選んだベストアンサー

推測ですが、壁紙の変更はレジストリを変更するのではなく、API のSystemParametersInfoとかいうのを呼び出して行っているんじゃないかと思います。
で、API 内で、デスクトップへの反映とレジストリの変更を行っているのかなぁ、と。
レジストリの何の値を変更されようとしているのかわかりませんが、その設定変更を行うAPIが存在する場合は、そのAPIを使用した方が良いのではないかと思います。

設定項目によってはAPIのSendMessageを使用して全トップウィンドウに、設定が変更されたことを通知することが可能です。
例えばシステムカラーの変更の場合は、
SendMessage(HWND_BROADCAST,WM_SYSCOLORCHANGE,0,0)
で全トップウィンドウに通知できたと思います。
(HWND_BROADCAST、WM_SYSCOLORCHANGEの値は検索すると見つけることができると思います。)

あと、REG IMPORTですが、コマンドプロンプトで
REG /?
で使用方法が表示されたと思います。これの実体はVBSだったかも。

投稿日時 - 2010-01-27 02:33:44

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

reg import コマンドで出来そうな気がしますが、確認のメッセージが出ないので、VB側のMsgBoxで処理する必要がありそうです。

即座に反映するのは、たぶんウィンドウにメッセージを送るAPIをコールしているからで、.exeを起動しているわけではないと思います。

投稿日時 - 2010-01-26 22:51:31

補足

すみません、regimportの使い方が分かりませんでした・・・
ただ、Shell ("REGEDIT /I C:\○○.reg")で出来たのでとりあえずありがとうございます。

ウインドウにメッセージを送るAPIをコールするのはVBでも命令できるのでしょうか?またご存知でしたら教えていただけますか?

投稿日時 - 2010-01-27 00:14:46

あなたにオススメの質問