Posts Tagged With: vbscript

[IE11] 2023/02/14 後無法單獨執行 IE


農曆年後,很多新聞報導微軟要在這個月 (02/14) 的安全性更新時,把 IE11 斃掉。

02/14 是西雅圖時間,所以我從 02/15 測試。

02/15 的 Edge 更新完,點選 IE11 ,會自動切換到 Edge ,經追蹤後,設定畫面沒改,還是如下方所示,但是紅圈框起來的「永不」會變成未選擇,只要人工手動改回「永不」,IE11 還是開得起來。

選擇永不就搞定

02/16 的 Edge 更新完,點選 IE11 ,又自動切換到 Edge ,本來以為要再改一次,但是不是,整個選項沒了。

[更新]

我有截圖放在 FB 上,這張圖才是 02/16 的截圖。

沒有永不可選擇

[更新]

這張圖是寫文章時抓的,所以看起來又改一版,上下數來就有三個版。

已經沒有永不可以選擇

想要讓 IE11 繼續跑,只好拜託 google 大神。

最早比較完整的可能是 2020/08/10 這篇:

Internet explorer Edge addon, begone!

從這篇後找到關鍵字後,可以找到 2020/08/04 論壇上有:

IEToEdge BHO appears in IE 11 after July 2020 Updates

再更早通常跟防毒軟體有關,看起來是防毒軟體發現新的機碼被標記。

依照上面文章將

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Ext\CLSID\{1FD49718-1D00-4B19-AF5F-070AF6D5D54C}

設定為 0 後,IE11 又恢復可以開啟的狀態。

既然微軟打算斃掉 IE11 ,也不強迫大家硬要用 IE11 ,直接在 Edge 跑 IE11 看看,有此需求的,建議先從設定將工具列 IE11 圖示打開會比較方便,如下圖:

在 Edge 啟用 IE11 按鈕

依照先前網誌測試幾頁 IE11 專屬網頁:

[IE11] ActiveX 在獨立網頁可正常執行

測試包含 ActiveX 跟 VBScript 的 OWC 元件範例網頁正常 (網頁圖表範例) ,連入時,記得點選工具列上的 IE11 圖示,會顯示 Edge 正在跑 IE11 模式:

用 Edge 跑包含 OWC 的網頁

其次測試很多同業叫我改版的水文統計網頁,這是用 asp + VBScript 寫的 (水文統計線上分析):

Edge 跑 VBScript + DHTML 的內容

再來測試網友叫我改的 BBS 年代的網文排版工具 (線上排版工具)

時代的遺跡:BBS 網文排版工具

我在 IE 全盛年代時,因為當時 HTML5 + SVG 還沒出來,大量採用 DHTML + VML ,VML 是 w3c 承認的格式,但是只有提出的微軟用,所以只被 IE 支援,但在那個年代網頁向量繪圖只有 VML ,沒得選,而使用 VML 縮放點陣圖是採比較耗 CPU 的重繪縮圖,不是直接抽點變得有點像是馬賽克,所以我都用 VML 縮圖,目前為止,Chrome / Edge 在縮小圖片時,還是採用抽點縮圖。

原始的檔案是做成 HTMLHelp ,可編譯成 Windows 內部說明檔的格式,其中圖檔是原圖用 1024×768 ,用 VML 語法縮圖到 512×384,滑鼠點選會顯示原圖的作法:

編譯後的線上說明檔

在 Edge 測試如下圖 (曾文水庫暨曾文溪流域資訊系統):

Edge 跑 IE11 模式支援 ActiveX + VML

最後,在 Edge 跑 IE11 除錯模式不被支援,所以這時利用本篇一開始的說明強制回 IE11 是一種選擇,微軟也提供說明在來除錯:

Use DevTools in Internet Explorer mode (IE mode)


其他參考

寫這篇文章時,找到很不錯的黑大這幾篇:

沒熬過情人節的 IE11 – 強迫導向 Edge 問題及後續停用計劃

在 Windows 11 啟動獨立 IE 應用程式

本來我們公司有自製 .Net framework 2.0 + WebBrowser Controller 可以在 Win11 下跑需要 IE11 的網頁,但用上面方法更簡潔。

先前在找 IE11 繼續跑之前,有先看到 Edge 的設定網頁,有各種功能分別可在群組原則、機碼跟 Edge 專用的 XML 設定,適用於企業管控瀏覽器:

Microsoft Edge – 原則

Categories: 工作點滴, 技術分享 | 標籤: | 發表留言

[IE11] ActiveX 在獨立網頁可正常執行


先前提到

[IE11] 透過設定信任網站簡單讓 IE11 恢復 VBScript 支援

最近有人跟我反應 OWC 網頁無法正常檢視。

OWC 網頁我不確定是何時開始做的,不過依據我在 2002 年已經開始用在正式專案上推定,OWC 網頁至少是 2002 年做的,我開始使用的版本是 Office XP 附隨的 OWC10 。

OWC 網頁的網頁繪圖放在 培基語言 裡面:

如下圖,OWC 版本下方應出現 OWC ActiveX COM 的控制項,但是沒有。

網頁圖表範例的 OWC 無法正確顯示

為了除錯方便,我習慣將目標網頁單獨開窗,直接執行 OWC 的 [網頁圖表範例] :

單獨開窗執行網頁圖表範例

可以看到上圖,可正確執行該網頁,並呼叫版權畫面觀看版本資訊。

初步推論,應該是框架 (frame) 安全性擋掉,不過我沒空去追安全性更新是哪版開始擋。HTML5 建議不要再使用 frame ,改用 iframe ,所以有可能 frame 安全性又被進一步限縮。

如果單獨執行網頁,只需要加入信任網站就可執行:

加入信任網站

加入信任網站後,不用另外加入相容性檢視設定:

相容性檢視設定維持空白

測試無誤後,我順便測兩個網友希望我更新到 HTML5 的網頁,我還沒空更新的:

水文統計線上分析

這個網頁是從水文統計網頁改版,使用 Server 端使用 ASP + VBScript ,Client 端使用 DHTML + VBScript ,所以除了 IE 以外,都不能執行。其中因為 Client 端使用 VBScript ,所以回歸年與設計量無法被其他瀏覽器支援。

正確設定信任的網站後,仍然可以執行,如下圖。這網頁我有承諾有空會改。

水文統計線上分析

線上排版工具

這個工具是當時 BBS 網路文學盛行時,因為 BBS 版面約在一行 80 char,作者習慣使用 76 char 左右 (參數可調整) 時寫的,只有做成 Client 端 DHTML + VBScript ,亦即表示可下載到自己電腦執行。

目前都以網頁瀏覽 BBS 了,所以這個排版工具好像沒啥用,我不知道為什麼還有網友會想用。

線上排版工具

Categories: 工作點滴, 技術分享 | 標籤: | 1 則迴響

[IE11] 透過設定信任網站簡單讓 IE11 恢復 VBScript 支援


我從 1998 開始寫 ASP 動態網頁,那時瀏覽器是 IE 的天下,我個人又是 Basic 的信徒,所以當時 client script 我都堅持使用 VBScript ,但是隨著時代轉變,VBScript 已被淘汰,更嚴重的是 IE11 居然不支援了…

在 2019/08 的新聞中有寫

預設關閉 Win7/8/10 IE11 的 VBScript
https://www.ithome.com.tw/news/132294

所以得到微軟網站查詢設定。

啟用/停用 IE11 VBScript 設定
https://support.microsoft.com/en-us/help/4012494/option-to-disable-vbscript-execution-in-internet-explorer-for-internet

可以透過 GPO (gpedit.msc) 或 regedit 兩種方式設定,機碼是動這個:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\Zones[代碼]\140C

改成 3 停用 VBScript 支援
改成 0 啟用 VBScript 支援

針對上篇更多的 IE 安全性設定可參考下面網址:
https://support.microsoft.com/en-us/help/182569/internet-explorer-security-zones-registry-entries-for-advanced-users

例如:

代碼 範圍

0 我的電腦
1 近端內部網路
2 信任的網站
3 網際網路
4 限制的網站

雖然有描述 1001 ~ 270C 的意義,不過關於 140C 的部分沒有描述。

我自己簡單測試設定方式,目前仍然可以不用管上面的機碼,主要是下面兩項:

  1. 設定信任網站 (重點)
  2. 設定相容網站 (在網頁 meta 強制指定相容網頁,例如 IE6 亦可)

Categories: 工作點滴, 技術分享 | 標籤: | 1 則迴響

關於 水文統計 – 線上分析 網頁


說實在的,我自己沒在用,所以從當練功在 2002 年寫好後,基本上沒啥改。

而我自己在 2005 就算是離開水利界了,有興趣的可以在這個網誌上翻到過去發生的事,所以,要不是有人問我不見一事,其實我根本忘了這個網頁。哈~~~

昨天收到有人透過 FB Messenger / 網誌線上留言給我,還說願意付費買,才知道還有人用。

先說找不到的狀況吧。

免費網域 twbbs.org 歷經 18 年終於停止服務,所以我另外申請新的免費網域,所以原先所有 tlcheng.twbbs.org 的全部改為 www.tlcheng.tk (現為 www.hisdt.com)。

水文統計線上分析的網址就變為:
http://www.hisdt.com/Tools/stat/Stat.asp

其次,這個網頁是在 2002 年寫的,那個年代只有 IE5 ,到現在都過了 16 年了,所以對新版相容度不夠,所以請改用桌面版的 IE 來瀏覽,最新版本的 IE11@Win7/8/8.1/10 仍然可以使用,但動態磚版本的 IE/Edge 或是 HTML5 瀏覽器 Chrome/FireFox 等就不能用。

因為早先這個網頁是基於推廣 VB 而採用 VBScript 寫的。

下面畫面是使用 IE11@Win2012r2 跑的。

使用 IE11 瀏覽水文統計線上分析網頁

使用 IE11 瀏覽水文統計線上分析網頁

我在這個網頁有加模擬 IE6 ,因此使用 IE 瀏覽時,不要在框架下用,直接瀏覽這個位置,才會啟用模擬功能,否則新版 IE11 會因為預設禁用 VBScript 而不能正常執行。

回歸曲線圖

回歸曲線圖

既然仍有人用,我今年會抽點時間改用 ASP.NET + JavaScript 改寫新版,這樣就能用 Chrome 開,自然也可以用行動裝置開了。

如果有建議可以在下面留言,我規畫時一併納入,如果希望加入不同機率分布函數,公式要需求的人提供,我沒時間做文獻回顧,所以有功能需求的請把資料整理給我。

其實我不太滿意當時的作法,不過一時之間也沒其他想法,可能就直接重寫,不動架構吧。

Categories: 嗜好, 決策支援系統 | 標籤: | 4 則迴響

[VSCode] 輕巧的程式碼編輯器


我一直在找一個類似 VBA 環境的 javascript 開發環境,最好是輕巧一點,大部分的環境都搞得很複雜,我只想簡單測試一個 function ,結果得搞到變成一個方案,並透過編譯或轉譯再由其他環境執行。

我自己有在公司的軟體中掛入 VBScript 支援功能,也就是直接呼叫 Script Control ,當然同一個引擎也可以跑 javascript ,理論上,自己寫個 WinForm 包 Script Control 就結束的,但是在編輯環境上會花很多時間,所以最好能找現成的。簡易型的我做成網頁跑:
http://www.hisdt.com/TLCheng/Basic/vbs/IDE/Runner.htm
支援 vbscript/javascript ,要用 IE 相容模式跑。

最近逛到 Code Runner 可以直接跑~
Code Runner: https://marketplace.visualstudio.com/items?itemName=formulahendry.code-runner

看了一下,是 Visual Studio Code(VSCode) 外掛套件~
Visual Studio Code: https://code.visualstudio.com/

說實在的,已經有 Visual Studio 2015 Ent. 下,覺得不需要再裝 VSCode ,VSCode 支援 Windows/iOS/Linux ,本來以為是跨 OS 才會想要玩的,但是實在很想測 Code Runner ,又看到 VSCode 有免安裝版,50MB 下載解壓縮就能執行,心動之下就抓下來玩了:
https://code.visualstudio.com/docs/?dv=winzip

執行以後,安裝了兩個擴充套件,Code Runner 及 mssql 。

第一次開啟
第一次開啟

Code Runner 說經過設定,可以讓你在 VSCode 下直接跑以下語言:
C, C++, Java, JavaScript, PHP, Python, Perl, Ruby, Go, Lua, Groovy, PowerShell, BAT/CMD, BASH/SH, F# Script, C# Script, VBScript, TypeScript, CoffeeScript, Scala, Swift, Julia, Crystal, OCaml Script, R, AppleScript, Elixir, 及自訂命令

貼一段過去寫好的 javascript,依據 Code Runner 網頁的範例跑,可以直接測試 javascript:

執行 javascript
執行 javascript

再貼一段過去寫好的 vbscript,測試一下,也可以正常跑:

執行 vbscript
執行 vbscript

javascript 看起來應該是 VSCode 本身就支援,vbscript 則自動呼叫 cscript 編譯執行,結果畫面:

回傳 vbscript 執行結果
回傳 vbscript 執行結果

VSCode 的特色就是超快,自從 VS2013 起,外掛套件一多,開啟速度就慢到不行,安裝 VS2015 時,只裝不到 10 個套件,也是慢到不行,開機後第一次執行大概要 3 分鐘才能進到 VS2015 ,所以忽然發現,VSCode 可以當作平常簡易開發 html / javascript / asp.net 原始碼的環境,因為免安裝,還可以丟到 Embedded OS 內跑。玩玩 Code Runner 忽然發現,還可以連 SQL Server ,想到 SSMS 也越來越慢,簡直是測試 T-SQL 利器。 (需安裝 mssql)

在 VSCode 開啟 .sql 的檔案,會自動載入 mssql 套件環境:

自動載入 mssql 套件環境
自動載入 mssql 套件環境

滑鼠右鍵選執行查詢:

執行查詢
執行查詢

第一次使用須建立連線:

建立連線
建立連線

輸入 server 資訊:

server
server

輸入資料庫:

資料庫
資料庫

選擇驗證方式並輸入驗證資訊:

驗證方式
驗證方式

完成建立連線:

完成建立連線
完成建立連線

第二次使用 (指重開 VSCode) 直接選擇已建立的連線:

選擇已建立的連線
選擇已建立的連線

直接就可以顯示 查詢結果。

查詢結果
查詢結果

VSCode 免安裝真的很方便,速度又快,只是要看原始碼的話,或是簡單開發,完全可以參考使用阿~~~

Categories: 電腦和網際網路, 工作點滴, 技術分享 | 標籤: | 1 則迴響

[CSS] 修改共用樣式快速替換字型大小


其實這是一個自作孽的故事。

我以前都用 vbscript 寫網頁,一方面以前是 IE 的天下,一方面我立志成為 BASIC 的推廣者,所以對於 vbscript 的強迫中獎,不遺餘力。

我先前有網頁會偵測視窗大小,自動調整字型大小,但是受迫於大環境下,不得不 javascript 化。

對於一個已經製作完成的網頁,樣式通常都設定在裡面,所以改既存樣式是比較省事的方法,也能取得樣式變化的一致性。

在變更樣式的過程中,我寫了個函數,引數是 樣式ID,跟 Class 名:
GetStyleObject(cssIdName, styleName)

例如:
<link type="text/css" rel=’Stylesheet’ href="CssFile.css" id="cssIdName" />
<span class="styleName">樣式名</span>
而在 vbscript 的部分使用下面程式碼可正常縮放字型:
GetStyleObject(“cssStationText", “.DataTime").fontsize = 32 * scaleZoom & “pt"

在 javascript 的部分使用下面程式碼,則字型不會縮放:
GetStyleObject(“cssStationText", “.DataTime").fontsize = 32 * scaleZoom + “pt";

最後追蹤發現問題的原因是 vbscript 大小寫意義相同,而 javascript 大小寫意義不同,所以 fontSize 的 S 要大寫,沒有注意到…

所以這是一個自作孽的故事。

好,下面就用最簡單的範例來分別貼出 vbscript / javascript 的程式碼吧。


vbscript
   Function GetStyleObject(Byval cssIdName, Byval styleName)
      With document.styleSheets
         For i = 0 To .length - 1
            If .item(i).id = cssIdName Then
               Set objstyleSheet = .item(i)
               Exit For
            End If
         Next
      End With

      With objstyleSheet.rules
         For i = 0 To .length - 1
            If .item(i).selectorText = styleName Then
               Set GetStyleObject = .item(i).style
               Exit For
            End If
         Next
      End With
   End Function

   Sub window_onresize()
      scaleZoom = document.body.clientWidth / 1366
      GetStyleObject("cssStationText", ".DataTime").fontsize = 32 * scaleZoom & "pt"
   End sub
 

javascript
   function GetStyleObject(cssIdName, styleName) {
      var objStyle;
      var allStyles = document.styleSheets;
      for (i=0; i<allStyles.length; i++){
         if(allStyles[i].id == cssIdName) {
            objStyle = allStyles[i];
            break;
         }
      }

      for (i=0; i<objStyle.rules.length; i++){
         if (objStyle.rules[i].selectorText == styleName) {
            return (objStyle.rules[i].style);
         }
      }
   }

   function window_onresize(){
      var scaleZoom = document.body.clientWidth / 1366;
      GetStyleObject("cssStationText", ".DataTime").fontSize = 32 * scaleZoom + "pt";
   }
Categories: 工作點滴, 技術分享 | 標籤: | 發表留言

在 WordPress.com 建立免費網站或網誌.