Skip to content

Commit f4e9fed

Browse files
committed
1.Ctrl + Alt + = : 以選取文字檢索CTP中阮元刻《十三經注疏》本《周易正義》。便於擷取《易》學資料用。
2. Ctrl + Alt + pageup : 在新的分頁開啟CTP圖文對照前一頁以供檢視 Ctrl + Alt + pagedown : 在新的分頁開啟CTP圖文對照下一頁以供檢視 3. Fonts 模組 WordVBA 4. 《古籍酷》自動標點返回值的優化 5. textBox4FontDefault 感恩感恩 讚歎讚歎 南無阿彌陀佛
1 parent e58248c commit f4e9fed

File tree

7 files changed

+404
-130
lines changed

7 files changed

+404
-130
lines changed

README.md

+12-3
Original file line numberDiff line numberDiff line change
@@ -387,6 +387,10 @@ Ctrl + Shift + ` 切換OBS開始串流和停止串流時可處理的程序(這
387387
388388
Ctrl + Alt + i 顯示IP現狀訊息方塊
389389

390+
Ctrl + Alt + pageup : 在新的分頁開啟CTP圖文對照前一頁以供檢視 20240920
391+
392+
Ctrl + Alt + pagedown : 在新的分頁開啟CTP圖文對照下一頁以供檢視
393+
390394
Ctrl + Shift + o 執行《看典古籍》OCR API ,執行 GetOCRResult 方法。(須將token存成「OCRAPItoken.txt」檔置於「我的文件\\CtextTempFiles」下,並在程式碼中覆寫本人帳號/郵箱。)
391395

392396
Ctrl + Shift + w 關閉 Chrome 網頁視窗
@@ -711,11 +715,16 @@ Ctrl + Delete : 將插入點所在位置之後的文字一律清除(Ctrl + z
711715
712716
Alt + 滑鼠左鍵 : 更新最後的備份頁文本
713717

714-
Ctrl+ 滑鼠左鍵:在插入點後分行分段(原為切換RichTextBox用)
718+
Ctrl + 滑鼠左鍵:在插入點後分行分段(原為切換RichTextBox用)
719+
720+
Ctrl + 滑鼠右鍵:切換RichTextBox用
721+
722+
Ctrl + Alt + 滑鼠左鍵:將插入點後的分行分段清除
715723

716-
Ctrl+ 滑鼠右鍵:切換RichTextBox用
724+
Ctrl + Alt + = : 以選取文字檢索CTP中阮元刻《十三經注疏》本《周易正義》。便於擷取《易》學資料用。20240920
725+
> 選取字串將複製至剪貼簿備用。
717726
718-
Ctrl+ Alt + 滑鼠左鍵:將插入點後的分行分段清除
727+
> https://ctext.org/library.pl?if=gb&res=83519&by_collection=127
719728
720729
滑鼠點二下,執行 Ctrl + + , 將插入點所在之前的文本貼到 Ctext 網頁 [簡單修改模式] 文字方塊中,並會重設以插入點位置為頁面結束位國(同Ctrl + -(數字鍵盤))
721730

TextForCtextPortable.zip

4.99 KB
Binary file not shown.

WindowsFormsApp1/Browser.cs

+112-65
Original file line numberDiff line numberDiff line change
@@ -5451,7 +5451,7 @@ internal static bool OCR_GJcool_AutoRecognizeVertical(string downloadImgFullName
54515451
#endregion
54525452

54535453

5454-
if (ActiveForm1.TopMost) ActiveForm1.TopMost = false;
5454+
ActiveForm1.TopMost = false;
54555455
//點數(算力值、算力配额)不足逕用「快速體驗」執行
54565456
if (!OCR_GJcool_AccountChanged && waitGJcoolPoint || (!OCR_GJcool_AccountChanged && waitGJcoolPoint && DateTime.Now.Subtract(gjCoolPointLess150When) < gjCoolPointEnoughTimespan))
54575457
{
@@ -5792,7 +5792,7 @@ internal static bool OCR_GJcool_AutoRecognizeVertical(string downloadImgFullName
57925792
//Thread.Sleep(3200);
57935793
//等待「選擇檔案」控制項出現,最多等timeSpanSecs秒;
57945794
//為免tab鍵數不同,而須手動操作,以免表單遮住畫面:
5795-
if (ActiveForm1.TopMost) ActiveForm1.TopMost = false;
5795+
ActiveForm1.TopMost = false;
57965796
Clipboard.Clear();
57975797
DateTime begin = DateTime.Now; const int timeSpanSecs = 30;
57985798
TimeSpan timeSpan = new TimeSpan();
@@ -8057,6 +8057,24 @@ string standardizedText(ref string text)
80578057
return true;
80588058
}
80598059
/// <summary>
8060+
/// 改變CTP圖文對照網址的 Page 參數以供翻頁
8061+
/// 20240920 Copilot大菩薩:更改 URL 参数以翻页:https://sl.bing.net/jZV8afaj85Q
8062+
/// </summary>
8063+
/// <param name="url">要改變的網址</param>
8064+
/// <param name="newPageNumber">Page參數要成的數值</param>
8065+
/// <returns>傳回改動後的網址</returns>
8066+
public static string ChangePageParameter(string url, int newPageNumber)
8067+
{
8068+
var uri = new Uri(url);
8069+
var query = System.Web.HttpUtility.ParseQueryString(uri.Query);
8070+
query.Set("page", newPageNumber.ToString());
8071+
var uriBuilder = new UriBuilder(uri)
8072+
{
8073+
Query = query.ToString()
8074+
};
8075+
return uriBuilder.ToString();
8076+
}
8077+
/// <summary>
80608078
/// 作為「《漢籍全文資料庫》檢索易學關鍵字」的欲檢索關鍵字瀏覽清單索引(已檢索瀏覽之位置)記錄用。在textBox2中輸入「lx」(list index clear(x=叉=清除))以歸零
80618079
/// </summary>
80628080
internal static int ListIndex_Hanchi_SearchingKeywordsYijing = 0;
@@ -8072,12 +8090,91 @@ internal static bool Hanchi_CTP_SearchingKeywordsYijing()
80728090
{
80738091
if (driver == null) return true;
80748092

8075-
string title;
8093+
string title = null;
8094+
8095+
#region 檢查title creedit_with_Copilot大菩薩: C# 比對字串中的特定子字串: https://sl.bing.net/dy0lfJJXE72
8096+
//檢查title 如果不包含指定的條件,則傳回false
8097+
bool checkTitle(string titleToCheck)
8098+
{
8099+
string pattern = "漢籍全文|中國哲學書電子化計劃|Chinese Text Project";
8100+
return Regex.IsMatch(title, pattern);
8101+
//string[] keywords = { "漢籍全文", "中國哲學書電子化計劃", "Chinese Text Project" };
8102+
//var foundKeywords = keywords.Where(keyword => title.Contains(keyword));
8103+
}
8104+
8105+
void forEachTabChectTitle()
8106+
{
8107+
//《漢籍全文資料庫》網頁介面
8108+
foreach (var item in driver.WindowHandles)
8109+
{
8110+
driver.SwitchTo().Window(item);
8111+
try
8112+
{
8113+
if (driver.Title.Contains("漢籍全文")) break;
8114+
}
8115+
catch (Exception exx)
8116+
{
8117+
switch (exx.HResult)
8118+
{
8119+
case -2146233088:
8120+
if (exx.Message.StartsWith("unknown error\nfrom no such execution context:"))//unknown error
8121+
//from no such execution context: frame does not have execution context
8122+
// (Session info: chrome = 128.0.6613.138)
8123+
continue;
8124+
break;
8125+
default:
8126+
Console.WriteLine(exx.HResult + exx.Message);
8127+
Form1.MessageBoxShowOKExclamationDefaultDesktopOnly(exx.HResult + exx.Message);
8128+
break;
8129+
}
8130+
}
8131+
}
8132+
if (!driver.Title.Contains("漢籍全文"))
8133+
{
8134+
title = string.Empty;
8135+
foreach (var item in driver.WindowHandles)
8136+
{
8137+
try
8138+
{
8139+
if (driver.SwitchTo().Window(item).Url.StartsWith("https://ctext.org/wiki.pl?if="))//https://ctext.org/wiki.pl?if=gb&res=、https://ctext.org/wiki.pl?if=en&res=
8140+
{ title = driver.Title; break; }
8141+
}
8142+
catch (Exception exx)
8143+
{
8144+
switch (exx.HResult)
8145+
{
8146+
case -2146233088:
8147+
if (exx.Message.StartsWith("unknown error\nfrom no such execution context:"))//unknown error
8148+
//from no such execution context: frame does not have execution context
8149+
// (Session info: chrome = 128.0.6613.138)
8150+
continue;
8151+
break;
8152+
default:
8153+
Console.WriteLine(exx.HResult + exx.Message);
8154+
Form1.MessageBoxShowOKExclamationDefaultDesktopOnly(exx.HResult + exx.Message);
8155+
break;
8156+
}
8157+
}
8158+
8159+
}
8160+
}
8161+
}
8162+
8163+
#endregion
8164+
8165+
8166+
80768167
try
80778168
{
80788169
//不要切到Chrome瀏覽器!可以在等結果的時候做別的工作。20240915
80798170
//driver.SwitchTo().Window(driver.CurrentWindowHandle);
80808171
title = driver.Title;//避免誤關出錯
8172+
if (!checkTitle(title)) forEachTabChectTitle();
8173+
if (title.IsNullOrEmpty())
8174+
{
8175+
Form1.MessageBoxShowOKExclamationDefaultDesktopOnly("請開啟《漢籍全文資料庫》網頁檢索介面,再開始操作");
8176+
return true;
8177+
}
80818178
}
80828179
catch (Exception ex)
80838180
{
@@ -8096,65 +8193,11 @@ internal static bool Hanchi_CTP_SearchingKeywordsYijing()
80968193
}
80978194
break;
80988195
default:
8099-
8100-
//《漢籍全文資料庫》網頁介面
8101-
foreach (var item in driver.WindowHandles)
8196+
forEachTabChectTitle();
8197+
if (title.IsNullOrEmpty())
81028198
{
8103-
driver.SwitchTo().Window(item);
8104-
try
8105-
{
8106-
if (driver.Title.Contains("漢籍全文")) break;
8107-
}
8108-
catch (Exception exx)
8109-
{
8110-
switch (exx.HResult)
8111-
{
8112-
case -2146233088:
8113-
if (exx.Message.StartsWith("unknown error\nfrom no such execution context:"))//unknown error
8114-
//from no such execution context: frame does not have execution context
8115-
// (Session info: chrome = 128.0.6613.138)
8116-
continue;
8117-
break;
8118-
default:
8119-
Console.WriteLine(exx.HResult + exx.Message);
8120-
Form1.MessageBoxShowOKExclamationDefaultDesktopOnly(exx.HResult + exx.Message);
8121-
break;
8122-
}
8123-
}
8124-
}
8125-
if (!driver.Title.Contains("漢籍全文"))
8126-
{
8127-
title = string.Empty;
8128-
foreach (var item in driver.WindowHandles)
8129-
{
8130-
try
8131-
{
8132-
if (driver.SwitchTo().Window(item).Url.StartsWith("https://ctext.org/wiki.pl?if="))//https://ctext.org/wiki.pl?if=gb&res=、https://ctext.org/wiki.pl?if=en&res=
8133-
{ title = driver.Title; break; }
8134-
}
8135-
catch (Exception exx)
8136-
{
8137-
switch (exx.HResult)
8138-
{
8139-
case -2146233088:
8140-
if (exx.Message.StartsWith("unknown error\nfrom no such execution context:"))//unknown error
8141-
//from no such execution context: frame does not have execution context
8142-
// (Session info: chrome = 128.0.6613.138)
8143-
continue;
8144-
break;
8145-
default:
8146-
Console.WriteLine(exx.HResult + exx.Message);
8147-
Form1.MessageBoxShowOKExclamationDefaultDesktopOnly(exx.HResult + exx.Message);
8148-
break;
8149-
}
8150-
}
8151-
8152-
}
8153-
if (title == string.Empty)
8154-
{
8155-
Form1.MessageBoxShowOKExclamationDefaultDesktopOnly("請開啟《漢籍全文資料庫》網頁檢索介面,再開始操作");
8156-
return true;
8157-
}
8199+
Form1.MessageBoxShowOKExclamationDefaultDesktopOnly("請開啟《漢籍全文資料庫》網頁檢索介面,再開始操作");
8200+
return true;
81588201
}
81598202
break;
81608203
}
@@ -8166,9 +8209,9 @@ internal static bool Hanchi_CTP_SearchingKeywordsYijing()
81668209
"咸恆","老陰", "老陽", "少陰", "少陽","十翼","四象","兩儀",
81678210
"无妄", "彖", "象曰", "象傳", "象日", "象云","小象", "筮",
81688211
"初九","九二","九三","九四","九五","上九","初六","六二","六三","六四","六五","上六","用九","用六", "繇辭","繇詞",
8169-
"隨時之義","庖有魚","包有魚","精義入神","豶豕","童牛","承之羞","雷在天上","錫馬", "蕃庶","晝日","三接","懲忿","窒欲","敬以直內","義以方外","迷後得主","利西南","品物咸章","天下大行","益動而", "日進無疆","頻巽","豚魚","頻復", "懲窒","閑邪","存誠","乾乾","悔吝","憧憧", "類萬物","柔順利貞","比之匪人","貞厲","履貞","履道坦坦","貞吉","悔亡","時義","健順", "內健而外順", "內健外順", "外順而內健", "外順內健","敦復","直方","開物成務","窮神知化", "夕惕","惕若","研幾極深","極深研幾","一陰一陽","允升","木上有水","勞民勸相","索而得","我有好爵","言有序","有聖人之道四","長子帥師","弟子輿尸","無悶","日用而不知","之道鮮","原始反終", "寂然不動", "感而遂通","朋從", "朋盍", "容民畜眾","有過則改","見善則遷",
8212+
"隨時之義","庖有魚","包有魚","精義入神","豶豕","童牛","承之羞","雷在天上","錫馬", "蕃庶","晝日","三接","懲忿","窒欲","敬以直內","義以方外","迷後得主","利西南","品物咸章","天下大行","益動而", "日進無疆","頻巽","豚魚","頻復", "懲窒","閑邪","存誠","乾乾","悔吝","憧憧", "類萬物","柔順利貞","比之匪人","貞厲","履貞","履道坦坦","貞吉","悔亡","時義","健順", "內健而外順", "內健外順", "外順而內健", "外順內健","敦復","直方","開物成務","窮神知化", "夕惕","惕若","研幾極深","極深研幾","一陰一陽","允升","木上有水","勞民勸相","索而得","我有好爵","言有序","有聖人之道四","長子帥師","弟子輿尸","無悶","日用而不知","之道鮮","原始反終", "寂然不動", "感而遂通","朋從", "朋盍", "容民畜眾","有過則改","見善則遷","養正","養賢","知臨","臨大君", "默而成之","黙而成之","不言而信", "存乎德行","通天下之志","履正", "繼之者善", "仁者見之", "知者見之", "智者見之",
81708213
"象義",
8171-
"伏羲","伏𦏁","庖𦏁","宓𦏁","伏犧","庖犧"};
8214+
"伏羲","伏𦏁","庖羲","庖𦏁","宓𦏁","宓羲","宓犧","伏犧","庖犧"};
81728215

81738216
//異體字處理(只用在《中國哲學書電子化計劃》,因為《漢籍全文資料庫》已俱。)
81748217
if (title.EndsWith("中國哲學書電子化計劃") || title.EndsWith("Chinese Text Project"))
@@ -8261,23 +8304,27 @@ internal static bool Hanchi_CTP_SearchingKeywordsYijing()
82618304
driver.Navigate().Back();
82628305
returnValue = false;
82638306
}
8264-
else//有結果-中國哲學書電子化計劃
8307+
else//檢索有結果-中國哲學書電子化計劃
82658308
{
82668309
returnValue = true; Clipboard.SetText(keyword); ActiveForm1.KeyinTextmodeSwitcher();
82678310
//有文本的文字框
82688311
//Thread.Sleep(800);
8312+
ActiveForm1.TopMost = false;
8313+
driver.SwitchTo().Window(driver.CurrentWindowHandle);
82698314
if (new StringInfo(keyword).LengthInTextElements > 1)
82708315
FindPageAndPaste2Find(driver, keyword);
82718316
else
82728317
HighlightKeywords(keyword);
82738318
}//ActiveForm1.HideToNICo(); }
82748319

82758320
}
8276-
else//有結果-中國哲學書電子化計劃
8321+
else//檢索有結果-中國哲學書電子化計劃
82778322
{
82788323
returnValue = true; Clipboard.SetText(keyword); ActiveForm1.KeyinTextmodeSwitcher();
82798324
//有文本的文字框
82808325
//Thread.Sleep(800);
8326+
ActiveForm1.TopMost = false;
8327+
driver.SwitchTo().Window(driver.CurrentWindowHandle);
82818328
if (new StringInfo(keyword).LengthInTextElements > 1)
82828329
FindPageAndPaste2Find(driver, keyword);
82838330
else

0 commit comments

Comments
 (0)