C# 使用全域鉤子實作螢幕鍵盤(二):滑鼠鉤子結構體與 SendInput API 封裝
前言 本文為系列第二篇,定義滑鼠/鍵盤/硬體輸入結構體,封裝 SendInput、GetTickCount、GetKeyState 等 Win32 API,為後
C# 使用全域鉤子實作螢幕鍵盤(三):安裝鍵盤與滑鼠鉤子完整流程
前言 本文為系列第三篇,詳細說明如何使用 SetWindowsHookEx 安裝低階鍵盤(WH_KEYBOARD_LL)與滑鼠(WH_MOUSE_LL)全域鉤子
C# 使用全域鉤子實作螢幕鍵盤(四):安全卸載鉤子與錯誤處理
前言 全域鉤子安裝後必須正確卸載,否則會導致系統資源洩漏、甚至影響其他程序穩定。本文詳細說明卸載流程、錯誤碼獲取與例外處理最佳實務。 完整卸載程式碼 publ
C# 使用全域鉤子實作螢幕鍵盤(五):模擬鍵盤輸入與按鈕整合
前言 前四篇已完成全域鍵盤鉤子的安裝、攔截與卸載。本文將示範如何透過 SendInput API 模擬鍵盤輸入,並整合自訂 KeyboardButton 控制項
C# 使用 IOCP 完成端口基礎入門(一)
前言 I/O 完成端口(IOCP)是 Windows 高效能非同步 I/O 模型的核心。本文為系列第一篇,介紹三大核心 API:CreateIoCompleti
C# 使用 IOCP 完成端口實作執行緒間資料傳遞(二)
前言 本文為系列第二篇,深入剖析 GetQueuedCompletionStatus 參數意義、GCHandle 運作機制,並提供完整的執行緒池與完成端口互動範
C# 使用 IOCP 完成端口傳遞物件參考完整範例(三)
前言 承接前兩篇,本文解決 IOCP 完成端口在 managed/unmanaged 邊界傳遞物件參考的核心難題:利用 GCHandle 取得物件指標,配合 P
C# Stopwatch 類別效能測試實戰(二):控制計時器啟停與重置
前言 接續上篇,本文詳細說明 Stopwatch 的核心控制方法:Start、Stop、Reset,並展示如何正確累加多段計時時間。 基本控制流程 using
C# Stopwatch 類別效能測試實戰(三):結果讀取與精度選擇
前言 承接前兩篇,本文著重於 Stopwatch 計時結束後的結果讀取,詳細比較三種屬性的精度與適用場景,並提供完整範例程式碼。 核心屬性比較 屬性回傳型
C# 利用 Windows API 實現 Big5 繁體轉 GB2312 簡體
前言 .NET Framework 內建編碼轉換雖支援 Big5 與 GB2312 互轉,但在某些舊版系統或特殊需求下,仍需呼叫 Windows 核心函式 LC
C# 使用 SharpZipLib 實作檔案壓縮與解壓縮完整指南
前言 專案開發常需處理檔案壓縮與解壓縮。SharpZipLib 是 .NET 生態系中知名的開源壓縮庫。本文將詳細說明如何利用 SharpZipLib 建立 Z
C# BitArray 類別深度解析:索引器實作與位元運算技巧
前言 在 System.Collections 命名空間中,BitArray 類別提供了一種緊湊的布林值陣列表示方式,其底層實際上是以 int[] 陣列儲存位元
C# 使用 Stopwatch 類別進行效能測試
前言:為何需要精確計時 軟體效能優化需先能量測。長時間流程易測量,但頻繁呼叫的微小常式(如千分之一秒執行、百萬次呼叫)累積影響巨大,需微秒級精度工具。 Sto
C# 發現之旅第十四講:VB.NET 腳本引擎(下)─ 主表單核心功能方法與腳本整合架構
主表單核心功能方法 txtEditor.SelectedText = ; 架構關係圖 腳本 (demo.vbs) ↓ 呼叫 document.T
C# 發現之旅第十四講:VB.NET 腳本引擎(下)─ 主表單檔案與編輯功能實作
檔案操作方法 public bool Function_New() { if (QuerySave()) { txtEditor.Text = ; t
C# 發現之旅第十四講:VB.NET 腳本引擎(下)─ DocumentClass 文件物件封裝
DocumentClass 完整定義 myForm.Function_SelectAll(); } 封裝設計重點 將主表單 frmMain 的文字編輯器
C# 發現之旅第十四講:VB.NET 腳本引擎(下)─ 全域物件容器與腳本引擎初始化
GlobalObject 全域物件容器 myDocument; } } StandardModuleAttribute 使成員成為全域可見 獨立命
C# 發現之旅第十四講:動態編譯 VB.NET 腳本引擎(下)
編輯腳本功能 工具列「編輯腳本」按鈕事件: private void btnLoadScript_Click(object sender, EventArgs