« 抜け始めてわかる、髪は長い友達 | トップページ | 気持ちは分かりますけど、議論はしましょうよ »

2016/11/05

Windows10でVisualBasic6.0(VB6)とInputMan6.5を使う

 

最近、仕事のつながりでシステム関係の仕事をしている人と世間話しをする仲になりました。彼は法人から依頼されて、その法人専用の業務用ソフトウエアを作成(開発)しているのですが、その関係の話しを聞いていて面白いなあ…と思ったことがありました。

 

今のパソコンは、WindowsなどのOS(基本ソフトウエア)があって、そこでOfficeなどのアプリケーション(応用ソフトウエア)が動作する仕組みですが、OSのバージョンが新しくなると、それまで使っていたアプリケーションが正常に動作しなくなることがありますよね。

 

これは法人専用の業務用ソフトウエアでも同じだそうで、パソコンの入れ替えなどでOSのバージョンが新しくなると、それまで使っていたものが正常に動作しなくなることがあるそうです。そういった場合に、その業務用ソフトウエアを修正して正常に動作させるのも、彼の仕事の一つだということでした。

 

そして、今まさにそのような仕事をしているらしいのですが、面倒なことがあったという話しでした。業務用ソフトウエアを修正するためには、それを作成(開発)したときに使用した開発用ソフトウエア(応用ソフトウエアの一種)が必要なのだそうですが、その開発用ソフトウエア自体が新しいバージョンのOSでは正常に動作しないものなのだそうです。

 

修正したくても修正できない状態ということですね。そこで、どのような対応をしたのか聞いてみたところ、詳しいことは分かりませんでしたが、その開発用ソフトウエアを何とか動かすための手順があるそうで、それを行ってから業務用ソフトウエアを修正したそうです。

 

素人の自分が「システム」と聞くと、精密なものだろうといった印象を受けるのですが、実際には「何とか動かす」といた曖昧というか、力技というか、そのようなところもあるのですね。少し意外だったのと、どことなく人間味を感じる話しだったので、面白く感じました。

 

ちなみに、OSはWindows10だそうで、そこで無理やり?動かした開発用ソフトウエアは、VisualBasic6.0(+InputMan6.5という開発支援ツール)というものだそうです。そして、それを使って業務用ソフトウエアの不具合(日本語入力の制御がうまくいかない不具合)を修正したそうです。

 

自分にはよく分からない話しですが、こういった話しを聞くのも何かの縁なのかもしれませんね。具体的な手順を教えてもらったので、せっかくですから、この後に書いてみます。

 

 

以下は、VisualBasic6.0(VB6)とInputMan6.5で開発した業務用ソフトウエアをWindows10で使用した際に、テキストコントロールでの日本語入力の制御がうまく動作しなくなることへの対応方法です。

 

1.Windows10にVisualBasic6.0をインストールする方法

 

・VisualBasic6.0をインストール

 SETUP.EXEを管理者として実行

 標準・カスタムのうちカスタムを選択してデータアクセスのチェックを外す
 (DataEnvironmentDesignerを使う場合DataEnvironmentは選択する)

 

・サービスパック(SP6)をインストール

 SETUPSP6.EXEを管理者として実行

 

・セキュリティパックをインストール

 管理者として実行

 

・InPutMan65をインストール

 PTSETUP.EXEを管理者として実行

 

・インストール後

 VB6.EXEのプロパティで、
 「互換モードでこのプログラムを実行する」
 「管理者としてこのプログラムを実行する」
 を設定する

 

・プロジェクトファイル(*.VBP)の修正

 ※OSが64bitの場合

 Object=の行にある
 MSCOMCTL.OCX の #2.2 を #2.0 に変更

 Reference=の行にある
 C:\Windows\System32 を C:\Windows\SysWOW64 に変更
 C:\Program Files を C:\Program Files (X86) に変更
 C:\PROGRA~1 を C:\PROGRA~2 に変更

 ※OSが32bitの場合

 Object=の行にある
 MSCOMCTL.OCX の #2.2 を #2.1 に変更

 

2.日本語入力の制御の不具合への対応方法

 

・ImmSetOpenStatus

日本語入力(漢字変換)のONとOFFは、ImmSetOpenStatus(API関数)で行う。

 

・SendInput

日本語入力(漢字変換)がONの場合の「ひらがな」「全角カタカナ」「全角英数」「半角カタカナ」の切り替えは、SendInput(API関数)で「無変換」キーの入力をシミュレートして行う。

 

・具体的には

一定時間ごと(Timer)にアクティブコントロール(ActiveControl.Name)を確認し、日本語入力の制御が必要なコントロールがアクティブの場合、現在の日本語入力の状態(IMEStatus)を確認し、ImmSetOpenStatusとSendInputを組み合わせて不具合を回避する。

また、IMEStatusを確認した際、その値が示す日本語入力の状態と実際の日本語入力の状態が一致しないことがあるので注意する。

 

 

« 抜け始めてわかる、髪は長い友達 | トップページ | 気持ちは分かりますけど、議論はしましょうよ »

「日記」カテゴリの記事