- ベストアンサー
VB6でレジストリファイルをインポートするには?
○○.regというファイル(レジストリファイル)を開こうとすると、「レジストリに追加しますか?」というメッセージが現れますが、 VB6でregファイルを開き、この状態にしたいです。 初めは安易にshell(~\○○.reg)でいけるのかと思ったらエラーになってしまいました。 どうすればいいのでしょうか・・・?? あと、ちょっと気になっているのですが、レジストをインポートしても直後には反映されず、再ログイン時等に反映されますが、直後に反映されるため、何かのexeファイルが動いているんですか? 実際にデスクトップの壁紙等もプロパティを開いて変更したら直後に反映されているので、あのOKボタンを押すことで何かが起動しているように思うのですが・・・
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
推測ですが、壁紙の変更はレジストリを変更するのではなく、API のSystemParametersInfoとかいうのを呼び出して行っているんじゃないかと思います。 で、API 内で、デスクトップへの反映とレジストリの変更を行っているのかなぁ、と。 レジストリの何の値を変更されようとしているのかわかりませんが、その設定変更を行うAPIが存在する場合は、そのAPIを使用した方が良いのではないかと思います。 設定項目によってはAPIのSendMessageを使用して全トップウィンドウに、設定が変更されたことを通知することが可能です。 例えばシステムカラーの変更の場合は、 SendMessage(HWND_BROADCAST,WM_SYSCOLORCHANGE,0,0) で全トップウィンドウに通知できたと思います。 (HWND_BROADCAST、WM_SYSCOLORCHANGEの値は検索すると見つけることができると思います。) あと、REG IMPORTですが、コマンドプロンプトで REG /? で使用方法が表示されたと思います。これの実体はVBSだったかも。
その他の回答 (1)
- OMEGAT
- ベストアンサー率70% (455/642)
reg import コマンドで出来そうな気がしますが、確認のメッセージが出ないので、VB側のMsgBoxで処理する必要がありそうです。 即座に反映するのは、たぶんウィンドウにメッセージを送るAPIをコールしているからで、.exeを起動しているわけではないと思います。
補足
すみません、regimportの使い方が分かりませんでした・・・ ただ、Shell ("REGEDIT /I C:\○○.reg")で出来たのでとりあえずありがとうございます。 ウインドウにメッセージを送るAPIをコールするのはVBでも命令できるのでしょうか?またご存知でしたら教えていただけますか?