Windows更新プログラム(KB912945)を適用する事で発生する問題の対応

■適用後の動作

2006年2月にMicrosoft社から公開されたWindows更新プログラム(KB912945)を適用すると、MSIE上でGEOSIS-OCX(以降GEOSIS)を利用する際に、GEOSIS上でマウスクリックするか、GEOSISにフォーカスを移動し、スペースキー又はエンターキーの押下が必要となります。

■対応

弊社が調査した対応方法として、以下の3つの方法が挙げられます。

1.KB912945をアンインストールする。
コントロールパネル内の「プログラムの追加と削除」から更新プログラム(KB912945)をアンインストールします。
アンインストールする事で、今までの動作が継続されます。
※KB912945のアンインストールはお客様自身の判断で行って下さい。
※お客様自身が行ったKB912945のアンインストールで発生した弊害に関して、弊社では保証致しかねますので御了承下さい。

2.innerHTML、outerHTMLを使用する。
<object>タグが記述されている箇所をinnerHTML又はouterHTMLによってページ読込み時に対応します。

元HTMLソース
             
                   <HEAD>
                   </HEAD>
                   <BODY>
                   <OBJECT id=Geo style="LEFT: 10px; WIDTH: 609px; TOP: 21px;
                    HEIGHT:436px" classid="clsid:91016F80-4706-11CF-88CB-0000F4D82418" 
                    VIEWASTEXT>
                   <PARAM NAME="_Version" VALUE="65536">
                   <PARAM NAME="_ExtentX" VALUE="16113">
                   <PARAM NAME="_ExtentY" VALUE="11536">
                   <PARAM NAME="_StockProps" VALUE="1">
                   <PARAM NAME="BackColor" VALUE="16777215">
                   <PARAM NAME="PathWork" VALUE="">
                              :
                              :
                              :
                   <PARAM NAME="CacheVect" VALUE="8000000">
                   <PARAM NAME="CacheRaster" VALUE="2000000">
                   </OBJECT>
                   </BODY>            
             	 


outerHTMLを使用したソース
            
                   <HEAD>
                   <SCRIPT src="exOCX.js" language="JavaScript"></script>
                   </HEAD>
                   <BODY>
                   <DIV id="GEODIV">
                   </DIV>
                   <SCRIPT language="JavaScript">
                   CreateGeosisOcx('GEODIV');
                   </SCRIPT>
                   </BODY>                  
            	 


CreateGeosisOcx関数は、例えば下記の様に記述します。
CreateGeosisOcx関数を記述したソース例(exOcx.js)
             
                   function CreateGeosisOcx(TagID)
                   {
                   var PathVect = "http://NCG/VXY/";
                   var PathBmp = "http://NCG/BMP/";
                   var PathRaster = "http://NCG/RAS/";
                   var PathTable = "http://NCG/TAB/";
                  
                  
                   var d = document.getElementById(TagID);
                   d.outerHTML = "<OBJECT id='Geo' style='LEFT: 10px; 
                   WIDTH: 609px; TOP: 21px; HEIGHT: 436px' 
                   classid='clsid:91016F80-4706-11CF-88CB-0000F4D82418'
                   VIEWASTEXT>" +
                   "<PARAM NAME='_Version'VALUE='65536'>" + 
                   "<PARAM NAME='_ExtentX'VALUE='16113'>" + 
                   "<PARAM NAME='_ExtentY'VALUE='11536'>" + 
                   "<PARAM NAME='_StockProps'VALUE='1'>" + 
                   "<PARAM NAME='BackColor'VALUE='16777215'>" + 
                   "<PARAM NAME='PathWork'VALUE=''>"+
                               :
                               :
                               :
                   "<PARAM NAME='CacheVect' VALUE='8000000'>" +
                   "<PARAM NAME='CacheRaster' VALUE='2000000'>" +
                   "</OBJECT>";
                   }
             	 
※outerHTMLの代わりにinnerHTMLを使用しても同様の事が行えます。

3."showModalDialog"を使用している箇所を"window.open"に変更する。
OCXを使用しているウィンドウを"showModalDialog"を使用してモーダルダイアログとして表示している場合、"window.open"に変更する事でマウスクリック等でActiveXをアクティブ化した後に使用する事が出来ます。

弊社調査では、"showModalDialog"を使用して表示させたウィンドウでは、アクティブ化を行っても動作しない場合がほとんどでしたが、"window.open"を使用している場合は、アクティブ化を行えば問題無く動作しました。

※showModalDialogの戻り値を使用しているようなコーディングをしている場合には注意が必要です。
※弊社独自で調査した結果で、全てのActiveXが同様の動作をするとは限りませんので御注意下さい。

■参考

| 利用規約 |

(C) 2024 AS Locus INC.