Kingston-DataTraveler® Kyson™ 32GB

Kingston-DataTraveler® Kyson™ 32GB
Kingston-DataTraveler® Kyson™ 32GB
Kingston-DataTraveler® Kyson™ 32GB
Kingston-DataTraveler® Kyson™ 32GB
CrystalDiskMark
CrystalDiskMark

手多多落單買Kingston 32GB號称『讀』每秒200MB. 支持『USB3.2』要剪爛包裝拎U盤出蒞.用 CrystalDiskMark測『讀』每秒達196MB.

DTKN/32GB 『讀』Read MB/s 『寫』Write MB/s
Seq Q32 T1 196.7 26.3

默認FAT32, 上世紀WIN98己用FAT32檔案系統, 單壹文檔受4BYTE尋址影响极限4GB, 所以自WinNT用NTFS檔案系統, 高清4K電影可超過4GB. 需NTFS或exFAT支持, 『exFAT』優勢係『Windows』同『MAC』皆支持.

檔案系統 操作系統
FAT32 Window9X
NTFS WindowNT
exFAT WindowNT同MAC

 

SEAGATE 16TB Exos™ X16 ST16000NM001G

SEAGATE 16TB Exos™ X16 ST16000NM001G
SEAGATE 16TB Exos™ X16 ST16000NM001G
SEAGATE 16TB Exos™ X16 ST16000NM001G
SEAGATE 16TB Exos™ X16 ST16000NM001G
SEAGATE 16TB Exos™ X16 ST16000NM001G
SEAGATE 16TB Exos™ X16 ST16000NM001G

前兩年買『SEAGATE 8TB EXOS™ ST8000NM0055』畀影片逼爆. 又唔舍得刪. 本蒞諗住砌台NAS. 估價成萬蚊. 冇米諗唔掂.

睇啱『SEAGATE 16TB Exos™ X16 ST16000NM001G』.16TB畀8TB大壹倍. 应刻可撑多两年先砌NAS.

Windows10磁碟分區. PMR垂直式-氦氣密封設計.CrystalDiskMark測寫230MB讀230MB

型號 X16 ST16000NM001G
接口類型 SATA3 6Gb/S
容量 16TB
轉速 7200RPM
緩存 256MB
工作負荷評級 TB/年
平均故障間隔時間 250萬小時
231.9MB/S
231.7MB/S

 

 

Windows10-Smart Fingerprint Reader

Windows10-Smart Fingerprint Reader
Windows10-Smart Fingerprint Reader
Windows10-Smart Fingerprint Reader
Windows10-Smart Fingerprint Reader
Windows10-Smart Fingerprint Reader
Windows10-Smart Fingerprint Reader
ELAN Finger Print - Biometric
ELAN Finger Print – Biometric

Kensington指紋鎖』識認差又貴又唔好,係网買雜牌『指紋鎖』, 智能学習每次登入补缺指紋. 其触摸面比『Kensington』大. 即使手指有水亦可識認指紋.

需装ELANTECH触摸板驱动. 稳新版舊版識認唔到, 下載『.cab』并解壓.

指紋鎖驅動
ELAN Finger Print – Biometric – 3.10.11001.10606
https://www.catalog.update.microsoft.com/Search.aspx?q=elan+fingerprint

可能要手動装

  1. 『装置管理員』
  2. 撳『ELAN:Fingerprint』->『更新驅動程式』
  3. 撳『瀏覧電腦上驅動程式-手動尋找并安装驅動程式』
  4. 撳『讓我從電腦上的可用驅動程式清單中挑選-此清單將會顯示與装置相容可用驅動程式, 以及與装置屬於同類別所有驅動程式』
  5. 撳『從磁片安装』
  6. 撳『瀏覧』.
  7. 驅動程式『檔䅁位置』含『inf』.撳『确定』.
  8. 撳『下壹步』装驅動.

 

設置『Windows Hello指紋』

  1. 『設置』->『賬戶』->『登入選項』
  2. 『Windows Hello指紋』->『設定』
  3. 若冇識別指紋鎖需裝驅動程式『ELAN WBF Fingerprint Sensor
  4. 輸入『PIN碼』.
  5. 『觸碰指紋感應器』手指重複擺在感應後又移開, 直到設定成功.

 

Windows10-RadeonSoftware.exe丟失QT5webenginecore.dll

Windows10-RadeonSoftware.exe丟失QT5webenginecore.dll
Windows10-RadeonSoftware.exe丟失QT5webenginecore.dll
Windows10-RadeonSoftware.exe丟失QT5webenginecore.dll
Windows10-RadeonSoftware.exe丟失QT5webenginecore.dll
Windows10-RadeonSoftware.exe丟失QT5webenginecore.dll
Windows10-RadeonSoftware.exe丟失QT5webenginecore.dll

近蒞Win10頻頻死幾, 收屘仲話稳唔到『QT5webenginecore.dll』, 次次入Win10彈出蒞,

RadeonSoftware.exe-系統錯誤
程式碼執行冇法繼續, 事因稳唔到『QT5webenginecore.dll』重装程式或可修正.

睇蒞係『ATI-Radeon RX550 Series』驅動損壞, 去AMD网下載. 重新装. 可能係Win10 -Update覆盖ATI驅動導至頻頻死幾.

amd-software-adrenalin-edition-22.4.1-win10-win11-april5.exe

 

Windows10 搜尋辰咗

Windows10 搜尋辰咗
Windows10 搜尋辰咗

唔知幾時Windows10『搜尋』辰咗,填唔到字.睇蒞又係更新造成. 微軟己畀出修復方案, 修正注册表.

  1. 啟『‪C:\Windows\System32\cmd.exe』
撳『WIN+R』執行『CMD』
  1. 填下列命令
reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Search /v BingSearchEnabled /t REG_DWORD /d 0 /f
reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Search /v CortanaConsent /t REG_DWORD /d 0 /f
  1. 重啟Windows 10

衡山毛筆フォント草書

衡山毛筆フォント草書
衡山毛筆フォント草書

書法家『青柳衡山』揮毫. 登録漢字最多草書字庫. 約萬餘字,公開免費,商業領域冇制限使用.有『TrueType』『OpenType』版. 將『KouzanBrushFontSousyo.ttf』『KouzanSoushoOTF.otf』字庫複製係『C:\Windows\Fonts』

衡山毛筆フォント草書 (揮毫/青柳衡山)
https://opentype.jp/kouzansousho.htm

 

衡山毛筆フォント

衡山毛筆フォント
衡山毛筆フォント

『經倫羅盤』需『漢字庫』, 書法家『青柳衡山』揮亳書寫. 登録萬三漢字.公開免費,商業領域冇制限使用.有『TrueType』『OpenType』版. 將『KouzanMouhituFont.ttf』『KouzanMouhituFontOTF.otf』字庫复制係『C:\Windows\Fonts』

衡山毛筆フォント
https://opentype.jp/kouzanmouhitufont.htm
C:\Windows\Fonts
毛筆體

 

 

Windows10伺服器拒絕連線

Windows10伺服器拒絕連線朋友發信息畀我,話台電腦冇法上網.Firefox顯示『Proxy 伺服器拒絕連線』.拋開網絡硬體網線問題. 更大可能軟體設定錯誤. Win10有hosts檔案用于記錄『Domain Name』輿『 IP』對應影射.冇需透過DNS伺服器獲取.以本文方式開啟hosts檔案.『127.0.0.1       localhost』將所有『Domain Name』影射到本機.刪此行後保存hosts即可.而『127.0.0.1       localhost』多為『自由門』退出時遺留.重啟『自由門』後再退出可自行刪除.

檔案 位置
hosts C:\Windows\System32\drivers\etc

 

Firefox Proxy 伺服器拒絕連線
IE Proxy 伺服器沒有回應
Edge 無法連線到 Proxy 伺服器

 

Firefox Proxy 伺服器拒絕連線

Firefox 無法與您設定的 Proxy 伺服器連線。

請檢查 Proxy 設定是否正確。

與您的網路管理員聯絡,確定 Proxy 伺服器正常運作。

IE Proxy 伺服器沒有回應

檢查您的 Proxy 設定 127.0.0.1:8580
移至 [工具] > [網際網路選項] > [連線]。若您位在區域網路上,請按一下 [LAN 設定]。

請確定您的防火牆設定不會封鎖您的網頁存取。

要求您的系統管理員提供協助。

Edge 無法連線到 Proxy 伺服器

試試看

確定您的防火牆設定不會封鎖您的網頁存取

要求您的系統管理員提供協助

 

Visual Studio之 error C4996 ‘sprintf’

Visual Studio之 error C4996 'sprintf'今日用Visual Studio寫段暴力碰撞運算破解數學問題.用sprintf()將結果輸出命令行.掟C4996錯,語法明明冇錯.源於C4996,警告此類C函式,無安全檢測可能會記憶體越界讀寫.其實問題根本無甘嚴重.最好方法禁用此類錯誤檢測.

#pragma warning(disable:4996)

 

error C4996: ‘sprintf’: This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.

 

Visual Studio 2019建立新专案C/C++

Visual Studio 2019建立新专案C/C++是時候啓動『風水羅盤』工程.本安裝Visual Studio 2017但睇到有2019版與時并進.到微軟官網下載Microsoft Visual Studio 2019並安裝.

  1. 啓動Visual Studio 2019
  2. 撳『檔案』->『新增』->『專案』/『建立新專案』
語言 『C++』
平臺 『Windows』
類型 『空白專案』

『使用適用於Windows的C++從頭開始,不會提供任何起此檔案』

  1. 撳『下一步』
專案名稱 『工程代號』
位置 專案位置即『檔案夾』
解決方案名稱 與『專案名稱』一致
將解決方案與專案置於相同目錄中 若工程簡單則勾選激活.

激活:『方案』文檔位於專案『位置』

禁用:『方案』文檔位於『解決方案名稱』

  1. 按『確認』製作專案
  2. 滑鼠右擊『解決方案名稱』->『屬性』開啓『屬性頁』
一般/字元集 使用Unicode字元集
連接器/系統/子系統 圖形界面『Windows(/SUBSYSTEM:WINDOWS)』

命令行界面『主控台(/SUBSYSTEM:CONSOLE)』

  1. 滑鼠右擊『方案』撳『加入』->『新的篩選條件』填『main』
  2. 滑鼠右擊『main』撳『加入』->『現有項目』選『main.c』
副檔名『.c』 C編譯器
副檔名『.cpp』 C++編譯器

 

VS安裝檔案資料夾 C:\Program Files (x86)\Microsoft Visual Studio\
VS應用程式 C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\devenv.exe

 

Windows10 專業版之Lenovo

Windows10 專業版之Lenovo Windows10 專業版之Lenovo之前幫朋友台Lenovo.預裝Win10 Home版,台機裝得太多垃圾.想重新裝Win10 Pro OEM版.居然無法裝Pro版.本應挂載Win10 U盤時可選Pro或Home版.台機跳過此步.而裝後自動激活為Home版.通過『變更産品金鑰』亦無法升級爲Pro版.

設定->啓用->變更產品金鑰

細想之下可能Lenovo在BIOS寫入Home 版KEY ID.每裝Win10都自動安裝Home版.按照網上介紹在檔案夾『sources』加入『ei.cfg』.同樣未能安裝Pro版.最後只能退回『專業版』PRO加錢買『企業版』FRE解決.

Windows10 企業版 64Bit漢化版

Windows10 企業版 64Bit漢化版 Windows10 企業版 64Bit漢化版DVD Windows10 企業版 64Bit漢化版KEY

Windows10_FRE_64Bit_HK

Windows10 企業版 64Bit漢化版

之前買Windows10 RRO 64BIT 漢化版在台聯想電腦裝來裝去都是Home版.只好加錢賣Windows 10 Enterprise 64Bit OEM.OEM簡包只有DVD與KEY號.順利激活但冇自帶IE.連『iexplore.exe』都冇.

C:\Program Files\internet explorer\iexplore.exe

 

Windows10刪除開機引導選項

Windows10刪除開機引導選項Windows10刪除開機引導選項BOOTICE今日幫師兄台手提電腦重裝Win7,嬾用原裝Win7系統光碟重轉.想用 GHO鏡像重灌.在網絡下載Ghost程式.在我台Win10運行按Ghost後居然自動重啓.在Win10開機引導選項中增加多左引導項『1KEY Ghost』.世上流氓如此多實在防不勝防.實在厭惡此等行為.

可通過BOOTICE 編輯BCD文檔刪除.

  1. 開啓BOOTICE
  2. 切換『BCD編輯』頁面
  3. 勾選『當前系統BCD(S)』
  4. 按『智慧編輯模式(C)』
  5. 點選『1KEY GHOST v2018.06.08』按『刪除』鍵
  6. 按『保存當前系統設置』
  7. 按『關閉』退出

Windows10 Microsoft Store 『市集』網絡錯誤

重置市集緩存 解除Microsoft Store後重裝 調整 Internet 選項近日師兄台Windows10啓動後連不上網.部電腦岩岩入厰重裝Windows10翻來.睇來是因Application Store自更新整壞.可按下列三部嘗試解決.

重置市集緩存
1.           按『Win+R』鍵, 鍵入『CMD』啓動『命令提示字元』
2.           重置市集緩存鍵入『WSReset.exe』

 

調整 Internet 選項
1.       啓動IE『C:\Program Files\internet explorer\iexplore.exe』
2.       工具->網際網路選項->進階
3.       勾選『SSL 3.0』『TLS 1.0』『TLS 1.1』『TLS 1.2』按『套用』

 

解除Microsoft Store後重裝
1.           『以系統管理員身份執行』開啓Windows Powershell
2.           解除市集鍵入『get-appxpackage *store* | remove-Appxpackage』
3.           重裝市集鍵入『add-appxpackage -register “C:\Program Files\WindowsApps\*Store*\AppxManifest.xml” -disabledevelopmentmode』

 

Windows10游戲黑屏與缺失d3dx9_43.dll

Windows10游戲黑屏與缺失d3dx9_43.dll

在Windows10安裝『要塞3』啓動時缺失『d3dx9_43.dll』. 彈出『系統錯誤』視窗如下:

系統錯誤
程式碼執行無法繼續,因爲找不到d3dx9_43.dll 重新安裝程式或許可以修正此問題.

在網上單獨下載『d3dx9_43.dll』將其放置在遊戲檔案下. 其地圖編輯器『MapEditor.exe』可正常啓動.但遊戲可開啓但黑屏.『d3dx9_43.dll』其實是Driect3D模塊.即DirectX Runtime無完整安裝.

  1. 去微軟官網下載DirectX End-User Runtime Web執行檔『exe』
  2. 啓動『exe』自動安裝DirectX Runtime

 

進如遊戲若自動退出.可通過設置『相容模式』解決.

  1. 滑鼠右擊遊戲執行檔exe『內容->相容性->相容模式』
  2. 勾選『以相容模式執行這個程式』
  3. 勾選WindowsXP(Service Pack3)/Windows 7
  4. 按『套用』後運行遊戲

Windows10更新後滑鼠可移不可點

Windows10更新後滑鼠可移不可點

重裝Windows10後發現羅技滑鼠可移動.但『開此菜單』有焦點.但左右鍵均無法『點選』『點擊』.而桌面可以『點擊』 細想之下Windows10圖形介面用3D特效.因為滑鼠即插即用,可能無正確安裝滑鼠驅動造成.果然安裝羅技驅動即『 點擊』問題

滑鼠 驅動
微軟 Microsoft IntelliPoint 8.2 Mouse Software for Windows – 64 bit
羅技 Logitech Options

 

Windows10手寫輸入

Windows10手寫輸入
Windows10手寫輸入

Windows10支持手寫輸入漢字.但經過好幾次改版.與Android全屏手寫輸入相比. 依然相差很遠.而且要較長時閒適應

  1. 你需要『手寫板』否則用『滑鼠』仲煩.
  2. 將手寫筆兩按鍵分別設定『ESC』與『Backspae』熱鍵
  3. 取消『ESC』用於確認
  4. 退格『Backspae』用於刪除
  5. 設定右手輸入『設定->裝置->手寫筆與Windows Ink->選擇你用來寫字那只手』選『右手』
  6. 切換輸入法『Win+Space』改為『微軟速成』或『微軟注音』
  7. 勾選『顯示觸控式鍵盤按鈕』
  8. 點選右下角『觸控式鍵盤』
  9. 將『觸控式鍵盤』改為『手寫板』
  10. 將『觸控式鍵盤』固定在『下側』
  11. 手寫時由左自右不斷寫,與手寫筆『ESC』與『Backspae』熱鍵配合使用

Windows10之以全螢慕方式使用[開始]畫面

Windows10之以全螢慕方式使用[開始]畫面
Windows10之以全螢慕方式使用[開始]畫面
重裝Windows10發現『開始』畫面非全螢慕.只能在『平板電腦模式』切換為全螢慕模式.其實在『桌上電腦模式』也可以設為全螢慕模式.

  1. Windows設定->個人化->開始
  2. 啓用『全螢慕方式使用[開始]畫面』

Windows10之Administrator管理員權限

Windows10大量操作需要『管理員權限』.下面總結出已知方法.

啓用Administrator權限 效期
Ctrl + Shift + Enter 單次
滑鼠右擊『以系統管理員權限身分執行』 單次
內容->相容性->以系統管理員的身分執行此程式 永久
直接以Administrator管理員登入Windows10 永久

 

Windows10以Administrator登入

Windows10以Administrator登入

Administrator使用者默認被『停用』.你要手動啓用它,才能以Administrator登入

  1. 啓用『檔案總管』Win+E
  2. 控制台\所有控制台項目\系統管理工具
  3. 或者輸入路徑『C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Administrative Tools』
  4. 啓用『電腦管理』
  5. 電腦管理->系統工具->本機使用者和群組->使用者
  6. 滑鼠雙擊『Administrator』
  7. 取消『帳號已停用』即『啓用』
  8. 按『套用』後『確定』
  9. 重啓電腦即可睇到『Administrator』使用者並登入

Windows10下載與安裝

Windows10下載與安裝
Windows10下載與安裝
Windows10下載與安裝
Windows10下載與安裝
Windows10下載與安裝

Windows10下載與安裝
Windows10下載與安裝

微軟自1993年推出WinNT到現在.都基於當年WinNT架構.發展到當今Win10已非常成熟.與Win9x架構相比系統崩潰機率已大幅減小.Windows安裝也越來越容易.因只120GB磁碟裝Windows10略欠不足.剛好淘汰只固態混合型500GB磁碟.用於做Windows10系統盤剛合適.

  1. 製作Win10 USB安裝盤
  2. 在電腦底板設定USB啟動插入win10安裝盤.彈出『Windows安裝程式』
  3. 『請輸入語言與其他喜好設定』安裝語言『正體』,時間及貨幣格式『正體香港』.健盤與輸入法『微軟速成』.按『下一步』後點選『立即安裝』
  4. 『啟用Windows』需輸入Windows10產品金匙.印在包裝盒標簽.選擇『我沒有產品金匙』
  5. 『選取您要安裝作業系統』選『Windows10專業板X64』
  6. 『MICROSOFT軟體授權條款』構選『我接受授權條款』
  7. 『刪除』原有分割然後.然後雙擊『磁碟機0未配置空間』.『大小』無需修正按『套用』建立碟機分割.磁盤被分割為兩部分.『分割1』為『系統保留』無需格式化.而『分割2』則式用於安裝按『格式化』
  8. 跳到『正在安裝Windows』等待會自動重啟
  9. 『先從區域開此』選擇你所在地區.此項會影響所接收『Microsoft新聞』
  10. 『鍵盤配置』設置輸入法首選項
  11. 家用『設定供個人使用』以此得完全控制權.
  12. 『使用Microsoft帳號登入』輸入Outlook電郵地址
  13. 『輸入密碼』Outlook電郵密碼
  14. 『建立PIN碼』若電腦無法上網.則可使用PIN碼登入
  15. 『連結手機和電腦』此項未使用
  16. 『選擇裝置隱私設定』除『位置』用於接受天氣信息 .其他意義不大.按『接受』等待Win10完成設定.

 

 

 

Windows10之設定BIOS 啟動USB安裝

Windows10之設定BIOS 啟動USB安裝
保存並退出

若用U盤重裝Win10.你需要進入底板BIOS設定USB啟動

  1. Windows10安裝U盤插入電腦USB接口
  2. 啟動電腦按『Delete/F1/F2/F10/ESC』鍵進入大多底板都是這幾個鍵.唔清楚就多試幾次
  3. 進入BOOT選擇介面SETTINGS->Boot
  4. 『設定啟動順序優先順序』FIXED BOOT ORDER Priorities將啟動首選項『Boot Option#1』設為『UEFI USB Key:UEFI: XXX』
  5. 保存並退出『SETTINGS->Save & Exit』按 『Save Changes and Reboot』
  6. 當安裝Win10後需將『Boot Option#1』設為『UEFI Hard Disk』或者『Hard Disk』

Windows10製作USB安裝盤

Windows10製作USB安裝盤
Windows10製作USB安裝盤

當Win9x盛行年代系統經常崩潰.安裝Windows從最早磁盤引導加載光驅.記得有同學因無法加載光驅驅動,而將Win95分多張1.44磁盤安裝.後期光驅直接引導安裝Windows.到現在USB啟動安裝已很方便.下面以製作Win10安裝U盤為例

  1. 首先去微軟官網 下載 『Windows10安裝程式MediaCreationTool.exe
  2. 運行MediaCreationTool有兩個選項給你『立即升級此電腦』或『建立另一部電腦的安裝媒體(USB快閃磁碟機、DVD或ISO檔案)』.選後者重裝win10染後按『下一步』
  3. 『選取語言、架構與版本』.取消『為此電腦使用建議的選項』.『語言』選『繁體』.而『架構』選『64位元(x64)』即可.按『下一步』
  4. 『選擇要使用的媒體』.若安裝Windows10須建立安裝媒體,然後用安裝煤體安裝.此步有兩選項, 選『ISO檔案』須之後使用UltraISO燒入U盤.建議直接選『USB快閃磁碟機』但能不小於按『下一步』
  5. 『選取USB快閃磁碟機』選擇燒錄U盤.數據將會被刪除.按『下一步』
  6. 『正在下載Windows10』等待當進度達100% 時間視網速而定
  7. 『你的USB快閃磁碟機已就緒』按『完成』拔出U盤

火狐之書簽導入與導出

火狐之書簽導入與導出

Windows10安裝新版本『火狐』Firefox後.經一番努力先穩到書簽『導入』與『導出』選項.火狐將書簽導出為json文檔.用於JavaScript文本數據格式

『導出』書簽

  1. 啟用『火狐』按ALT鍵.彈出菜單.
  2. 『書簽->顯示所有書簽』或者按Ctrl+Shift+B彈出『收藏庫』
  3. 『匯入與備份->備份』json文檔

『導入』書簽

  1. 『匯入與備份->回復->選擇檔案』選你備份json文檔

3DStudioMax9之相容Windows10

3DStudioMax9之相容Windows10

因為『Deep UV』與『Deep Paint 3D』需要3DSMAX9協助.但在Windows10下安裝卻耗費我多日時間,故將其步驟記錄.

  1. 安裝3DSMAX9-English-32bit後此時還不能在Windows10運行.若安裝64bit版本後『dlu』插件會出錯
  2. 安裝3DSMAX9-SP2-32bit需以系統管理員權限執行exe滑鼠右擊彈出菜單點『以系統管理員身分執行』即可安裝

Windows10安裝Photoshop CS

Windows10安裝Photoshop CS
Windows10安裝Photoshop CS

近日在Windows10-64Bit安裝早年『PS7、PhotoshopCS、PhotoshopCS2』等.但安裝程式『Setup.exe』一直在後臺等待居然無法轉到前臺,它等屬Win32程式Win10理應支持.可以肯定有某個程式佔用系統造成阻塞

  1. 按『CTRL+ALT+Delete』打開『工作管理員』睇到PS7安裝嚮導『exe』一直在後臺等待
  2. 滑鼠右擊『exe』彈出菜單啟用『分析等待鏈接(a)』
  3. 『分析等待鏈接』顯示『exe正在等待另一個處理程式(Thunder.exe)』.原來是『訊雷』造成程式阻塞
  4. 勾選『exe』後按『結束處理程序』PS7安裝嚮導隨即彈出運行

而PhotoshopCS2安裝後無法啟動則可通過『相容模式』解決.

  1. 按『WIN+E』啟用『檔案總管』打開PhotoshopCS2安裝位置『C:\Program Files (x86)\Adobe\Adobe Photoshop CS2\Photoshop.exe』
  2. 滑鼠右擊『exe』彈出菜單按『內容』彈出『Photoshop.exe內容』對話框
  3. 在『相容模式』勾選『以相容模式執行這個程式』下拉菜單選『Windows7』按『確定』

 

Windows10磁碟基準測速

Windows10磁碟基準測速
Windows10磁碟基準測速

當想對『磁碟』測速.而手邊又無安裝CrystalDiskMark.可借助Windows10內置測速工具:

  1. 以系統管理員身份執行命令視窗CMD
  2. 『winsat disk -drive d』

D是盤符.但對希捷酷鷹2TB監控盤測量,結果可能有問題.讀取速度達7802.15MB/S

命令 簡介
winsat disk -drive d 執行下列所有讀寫測試
winsat disk -drive d -ran -read 磁盤隨機讀取16 MB時間

Disk Random 16.0 Read

winsat disk -drive d -seq -read 磁盤順序讀取64 MB時間

Disk Sequential 64.0 Read

winsat disk -drive d -seq -write 磁盤順序寫取64 MB時間

Disk Sequential 64.0 Write

winsat disk -drive d -flush -seq 循序寫入的平均讀取時間
winsat disk -drive d -flush -ran 隨機寫入的平均讀取時間

 

WORD之複製丟失

WORD之複製丟失

裝Win10後發現怪事WORD『複製』文本丟失.

  1. 『複製』文本Ctrl+C.關閉WORD文檔.
  2. 然後在其它WORD文檔『貼上』Ctrl+V.發現丟失.

此現象時有時無,剛開此還以為鍵盤壞左.主要是WORD介入『剪貼簿』管理.它調用SetClipboardData()寫入文本給『剪貼簿』但退出WORD時卻清空『剪貼簿』.其實只要『複製』文本後不要關閉WORD『剪貼簿』就不會丟失

剪貼簿管理 加速鍵
剪下 Ctrl+X
複製 Ctrl+C
貼上 Ctrl+X

 

Windows10啟用全新磁碟分區並格式化

『儲存空間』建立分區並格式化

『磁碟管理』建立分區並格式化

若你購買全新磁碟非返修盤,必定是未建立分區.當你連結電源與SATA還需要建立分區.在Windows10有兩種方法分別是『儲存空間』與『磁碟管理』

使用『儲存空間』建立分區並格式化

  1. 控制台->所有控制台項目->儲存空間
  2. 建立新集區與儲存空間
  3. 『名稱』隨意填漢字也可
  4. 『磁碟機代號』不要選『A:』與『B:』應選『D:』或其之後盤符
  5. 『檔案系統』只可選NTFS
  6. 『備緩類型』選擇『簡單(無備緩)』.若使用其它備緩raid 1鏡像會浪費空間
  7. 『儲存空間大小(上限)』填總『集區容量』即可
  8. 點擊『建立儲存空間』.等待『格式化儲存空間』後即可.

使用『磁碟管理』建立分區並格式化

  1. 控制台->所有控制台項目->系統管理工具->電腦管理
  2. 電腦管理(本機)->存放裝置->磁盤管理
  3. 右擊『磁碟』->『格式化』
  4. 『磁碟區標簽』隨意填寫
  5. 『檔案系統』維一選擇NTFS
  6. 『配置單位』使用預設即可.或者選4096
  7. 勾選『執行快速格式化』
  8. 按『確定』等待『格式化』即可

Windows10刪除暫存檔案

Windows10刪除暫存檔案

你明明沒有在C盤安裝很多『軟件』或『遊戲』.卻Windows10經常報『磁盤空間不足』首先刪除所有『臨時文檔』和『禁用休眠

  1. 刪除『C:\Windows\Temp』下所有文檔
  2. 刪除『C:\Users\XXX\AppData\Local\Temp』下所有文檔

若依然如事.可以嘗試查找大於128M

  1. win+e打開『檔案總管』
  2. 打開『C:』磁盤
  3. 在查找中輸入『大小:>128m』
  4. 刪除廢棄安裝文檔與緩存

Windows10禁用休眠

Windows10禁用休眠

近日發現Photoshop經常報『暫存磁盤』不足.睇來C盤空間不足.一睇『設定->系統->本機C:->系統與保留->休眠檔案』佔用25.5GB. 『休眠』只是將記憶體保存在磁盤,開機時從磁盤載入以提高開機速度.其實Windows10開機速度還是要睇硬件驅動.現只要禁用『休眠』即可釋放大量磁盤空間以解燃眉之急.

  1. 系統管理員身份執行命令視窗CMD
  2. 禁用休眠系統『powercfg –h off』
  3. 重啟Windows10

 

重啟休眠系統『powercfg –h on』

休眠檔案壓縮50%『 powercfg –h size 50』

Visual Studio之編譯宏定義

Visual Studio之編譯宏定義

在未有win64出現之前只需要編譯x86程式.但出現win64後需要分別編譯x86與x64兩個版本.你需要分開進行編譯.

Visual Studio分別為平臺生成全域宏:

x86下編譯定義_WIN32宏

x64下編譯定義_WIN64宏

#ifdef _WIN64

// x64平臺

#else

// x86平臺

#endif

 

Visual Studio調試模式生成全域宏:

調試模式下編譯定義_DEBUG宏

發行模式下編譯無_DEBUG宏定義

#ifdef  _DEBUG

//調試模式

#else

//發行模式

#endif

 

Windows10之滑鼠衝突

Windows10之滑鼠衝突

近日發現Windows10下的滑鼠出現奇怪問題,如『開始畫面』點選無反應(重新關開滑鼠可恢復).瀏覽器的tab分頁自動切換(跳轉).這種現象又唔似中毒,霖左好幾日.因為貪方便裝左兩隻無線滑鼠問題才出現的.果斷拔掉一隻滑鼠所有問題都自動消失.原來是兩隻無線滑鼠(Logitech&Microsoft)衝突引起.

FPS

FPS

FPS全稱為Frames Per Second.用於統計遊戲與影片每秒的渲染畫面(幀)次數.此值越高畫面越流暢,電影以每秒24格菲林進行播放.所以你的遊戲要流暢無停頓感.需要不低於24幀最好高於30幀.當然幀數越高越好.

FPS算法如下:

FPS = 100 * Frequency / (currentTime – startTime);

Frequency為時鐘頻率. currentTime與 startTime為前後兩次時鐘

 

Windows下你需要高精度計數器:

返回硬件級高精度時鐘頻率,若返回0代表系統不支持.

BOOL QueryPerformanceFrequency(LARGE_INTEGER *lpFrequency);

返回硬件級高精度計數器,若返回0代表系統不支持.

BOOL QueryPerformanceCounter (LARGE_INTEGER *lpCount);

LARGE_INTEGER:為64BIT結構

 

此兩個函式需要winbase.h頭文檔和Kernel32.LIB庫

#include <winbase.h>

#pragma comment(lib, “Kernel32.LIB”)

 

定義如下FPS結構:

typedef struct FPS_TYP {

LARGE_INTEGER  Frequency;// 計數器的頻率

LARGE_INTEGER  startTime;// 啟動時鐘

float Frames;// 每秒渲染幀數

int n;// 臨時幀計數器

}FPS,*FPS_PTR;

 

初此化高精度定時器

bool Init_FPS(FPS_PTR fps)

{

// 返回硬件支持的高精度計數器的頻率

if (QueryPerformanceFrequency(&fps->Frequency) == false)

return false;

// 獲取啟動時鐘

QueryPerformanceCounter(&fps->startTime);//

return true;

}

 

計算每秒渲染幀數,每100幀進行一次計算

float Get_FPS(FPS_PTR fps)

{

++fps->n;

if (fps->n > 100)

{

LARGE_INTEGER currentTime;

// 返回高精度計數器

QueryPerformanceCounter(&currentTime);

fps->Frames = (float)100 * (float)fps->Frequency.QuadPart / ((float)currentTime.QuadPart – (float)fps->startTime.QuadPart);

fps->startTime = currentTime;// 重置時間

fps->n = 0;

}

return fps->Frames;

}

 

计算两次测量所花费时间

float Get_Counter_FPS(FPS_PTR fps){

LARGE_INTEGER currentTime;//当前时钟

// 返回高精度计数器

QueryPerformanceCounter(&currentTime);

float seconds = ((float)currentTime.QuadPart – (float)fps->startTime.QuadPart) / (float)fps->Frequency.QuadPart;

fps->startTime = currentTime;

return seconds;

}

 

互聯網之 Cloudflare推出免費DNS(1.1.1.1)

互聯網之 Cloudflare推出免費DNS(1.1.1.1)

互聯網公司Cloudflare推出免費的DNS服務,與APNIC進行合作使用它的IP位址(1.1.1.1), Cloudflare保證你使用它的DNS服務會絕對保證你的隱私,絕不會出售您的數據,或用來定位廣告,更不會記錄您的 IP 位址.

而且Cloudflare聲稱它的DNS服務比其它公司的DNS服務速度更快,比起GOOGLE的快最小兩倍.

DNS 響應速度
1.1.1.1 14.8ms
Cisco OpenDNS 20.6ms
Google Public DNS 34.7ms
Average ISP 68.23ms

在Windows10設定DNS伺服器IP位址

  1. Win+E打開『檔案總管』
  2. 點選打開『控制台\網路和網際網路\網路和共用中心』
  3. 點選『乙太網絡』
  4. 點選『內容』
  5. 雙擊打開『網際網路通信協定第4版(TCP/IPV4)』 勾選『使用下列的DNS伺服器位址』
  6. IPV4『慣用DNS伺服器』填1.1.1
  7. IPV4『其它DNS伺服器』填0.0.1
  8. 雙擊打開『網際網路通信協定第6版(TCP/IPV6)』勾選『使用下列的DNS伺服器位址』
  9. IPV6『慣用DNS伺服器』填 2606:4700:4700::1111
  10. IPV6『其它DNS伺服器』填 2606:4700:4700::1001
  11. 重啟瀏覽器

Windows10之功能更新版本1709錯誤碼0xc1900205

Windows10之功能更新版本1709錯誤碼0xc1900205

近日Windows10更新版本1709時總會彈出錯誤碼0xc1900205,使用『Windows Update』與『Windows10更新小幫手』均出錯並彈出下面的信息:

Microsoft 無法在您的電腦上安裝重要的安全性更新。

請連絡 Microsoft 支援服務以獲得解決此錯誤的協助。

請將此錯誤碼提供給支援人員: 0xc1900205

通過如下方法即可修復:

  1. 新增『文字文件.txt』輸入下面命令,並保存為『cmd』.(此方法適合大量類似問題)
  2. 以系統管理員身份執行CMD
net stop wuauserv

Dism.exe /online /Cleanup-Image /StartComponentCleanup

Dism.exe /online /Cleanup-Image /RestoreHealth

net start wuauserv

3.我已生成cmd文檔可以直接下載:

 

Windows10之以系統管理員身份執行命令視窗CMD

Windows10之以系統管理員身份執行命令視窗CMD

在Windows10下很多命令需要『系統管理員』Administrator的『權限』才能執行,有4中方法打開

  1. 快捷鍵『WIN+X+A』打開命令視窗(系統管理員:命令提示字元),此方法成功較低不建議使用
  2. 快捷鍵『WIN+E』打開『檔案總管』,按住『shift』鍵以鼠標右鍵點擊任意『檔案資料夾』彈出菜單『在此處開啟命令視窗』此方法無系統管理員權限
  3. 快捷鍵『WIN+E』打開『檔案總管』定位『C:\Windows\System32\cmd.exe』以鼠標右鍵點擊彈出菜單『以系統管理員身份執行』打開命令視窗
  4. 新增『文字文件』寫入你要執行的命令並保存,將『副檔名』改為『cmd』.以鼠標右鍵點擊彈出菜單『以系統管理員身份執行』打開命令視窗,此方法最為方便

 

星海爭霸 II之AI對戰延遲問題

星海爭霸 II之AI對戰延遲問題

很多網友都發現『星海爭霸II』的對戰AI非常嚴重延遲,每格幾秒就出現停頓,遊戲運行『延遲』無非是三個原因:

  1. 硬件問題:
  2. 網絡延遲:
  3. 3D模型多邊形複雜度:

而星海爭霸 II 的AI對戰是需要聯網的『UPD連接』,如果網絡延遲較大則造成運行網絡,你需要重新選擇鏈接的『伺服器』

  1. 啟動net(無需切換帳號)
  2. 地區/帳號:分別有『美洲』,『歐洲』,『亞洲』.選擇速度快的『伺服器』
  3. 再啟動遊戲

Windows之Microsoft屏幕放大鏡

Windows之Microsoft屏幕放大鏡

Windows其中一個最好用的工具是『Microsoft屏幕放大鏡』,通過win鍵與+鍵啟動.如果你有『Microsoft鼠標』可以通過安裝『IntelliPoint8.2』激活母指鍵啟動『Microsoft屏幕放大鏡』.安裝後要重啟電腦. 通過『檔案總管\控制台\所有控制台項目\滑鼠』設定『母指鍵』.在『全屏幕』下按『母指鍵』+『鼠標滑輪』用於梯相最好用.

快捷鍵 簡介
Win鍵與+鍵 方大/啟動放大鏡
Win鍵與-鍵 縮小
Win鍵與ESC鍵 關閉放大鏡
鼠標前母指鍵 啟動放大鏡/關閉放大鏡
鼠標前母指鍵+鼠標滑輪 方大/縮小(這個最好用)
CTRL+ALT+F 全屏幕
CTRL+ALT+L 透鏡
CTRL+ALT+D 以連接擴充座(分屏)
CTRL+ALT+SPACE 預覽全屏幕
CTRL+ALT+I 反色

 

Windows10輸入『』

Windows10輸入『』

「」與『』符號在標準的英語鍵盤中你是穩唔到這些按鍵,但可按以下方法輸入:

  1. 按CTRL+SHIFT切換到『微軟注音輸入法』
  2. 鼠標右鍵按『中/英』彈出菜單
  3. 按『輸入法整合器』
  4. 按『符』-『符號查詢『
  5. 『符號類別』選『標點符號』
  6. 選擇你想要的符號

如果在WORD可使用快捷鍵輸入,按住ALT鍵不放然後再按數字鍵,是唔是好方便呢.

字符 快捷鍵
ALT鍵+12302鍵
ALT鍵+12303鍵
ALT鍵+12300鍵
ALT鍵+12301鍵

 

 

Windows之ALT快捷鍵

Windows之ALT快捷鍵

之前一值無法使用ALT鍵,因查找唔到其VK_ALT對應的『VIRTUAL CODE』,近日把WinXP切底拋棄改用Win10,發現很多程式均使用ALT鍵展示或隱藏MENU. 細想VK_ALT即等於VK_MENU,下面是使用ALT鍵展示與隱藏MENU源代碼

1.在resource.h加入

#define IDALT                           1000

2.在resource.rc加入加速表,一定要加入ALT否則MENU會獲得焦點要按量下ALT鍵,另不要用VK_LMENU和VK_RMENU

ACCEL ACCELERATORS

BEGIN

VK_MENU,        IDALT,                  VIRTKEY, ALT, NOINVERT

END

3.在main()修改消息循環

MSG msg;//消息 msg是WINDOWS放置下一個消息的存儲器,

HACCEL hAccel; // 加速鍵表的句柄

hAccel =::LoadAccelerators(main_instance,”ACCEL”); // 加速鍵表的句柄

while(GetMessage(&msg,NULL,0,0)) //從事件對列中獲得消息

{  //由 PostQuitMessage(0) 發送的WM_QUIT消息,被PeekMessage()檢測到

if(msg.message == WM_QUIT)

break;// 跳出主循環

if(!::TranslateAccelerator(main_window,hAccel,&msg))// 處理加速鍵表

{

TranslateMessage(&msg);//處理和轉換加速鍵.

DispatchMessage(&msg);//調用WinProc對消息進行處理,從MSG結構取的參數並傳遞.

}

}

4.在WinProc加入

if(msg == WM_COMMAND)

{ // 處理菜單命令

if (LOWORD(wParam) == IDALT)

{     main_menu = ::LoadMenuA(NULL,”MAIN_MENU”);// 主菜單

if (::GetMenu(main_window) == NULL)

::SetMenu(main_window, main_menu);// 設定菜單

else

::SetMenu(main_window, NULL);// 設定菜單

}

}

Visual Studio 2017新增C專案

Visual Studio 2017新增C專案
Visual Studio 2017新增C專案

近日終於遠離最愛的VC6安裝VC2017,新增專案時居然無發現C/C++的選項,暈難道C已被拋棄?經一番鑽然才悟個中方法

  1. 運行Visual Studio 2017
  2. 『檔案/新增/專案』打開
  3. 『新增檔案/Visual C++/空白專案』
  4. 若無梯見請點按『開啟Visual Studio安裝程式』把與C++有關全部安裝
  5. 『名稱填』這裡填『OpenGL』
  6. 『位置填』這裡填『D:\C\』
  7. 取消勾選『為方案建目錄』單級目錄結構與VC6相若
  8. 按『確認』製作專案
  9. 右鍵點擊『OpenGL』打開屬性頁
  10. 打開『屬性頁/組態屬性/一般/字元集選則『使用Unicode字元集』.若選『使用多位元組字元集』則使用ANSI
  11. 打開『屬性頁/組態屬性/連接器/系統/子系統選則『Windows(/SUBSYSTEM:WINDOWS)』圖形界面。若選『主控台(/SUBSYSTEM:CONSOLE)』則為命令行界面
  12. 右鍵點擊『OpenGL』點擊『加入/新的篩選條件』填main
  13. 右鍵點擊『main』點擊『加入/新的篩選條件』
  14. 『名稱』填『main.c』副檔名為.c則使用C編譯器, 副檔名為.cpp則使用C++編譯器

 

 

Windows10之切底禁用Update Assistant

Windows10之切底禁用Update Assistant

『Windows10 Update Assistant』又稱為『Windows 10 更新小幫手』會自動彈出下載並安裝更新.但更新後卻把我的『港版Win10』變為『台版Win10』更新時還不能保留原有程式.最煩的是經常自動彈出.即使卸載Uninstall後還是會自動安裝. 經一番研究只禁『Windows10 Update Assistant』自動彈出,而『Windows10 Update』仍在後臺自動更新系統

  1. 『檔案總管\控制台\所有控制項目\程式和功能\ Windows10 Update Assistant』按兩下進行卸載Uninstall
  2. 『檔案總管\控制台\所有控制台項目\系統管理工具\工作排程器』按兩下啟動
  3. 『工作排程器\工作排程器程式庫\Microsoft\Windows\UpdateOrchestrator』按兩下打開
  4. 分別將『UpdateAssistant』『UpdateAssistantCalendarRun』『UpdateAssistantWakeupRun』按右側『停用』鍵把狀態設為『已停用』

 

Windows10之徹底禁用Windows Defender

Windows10之徹底禁用Windows Defender

Windows Defender是Windows10內置免費的既時保護查找惡意程式,但它卻經常錯報誤報影響日常工作,而且暫用大量資源,需然可然暫時關閉既時保護.『設定/更新與安全性/Windows Defender/既時保護/關閉』但更新病毒資料庫後又會開啟,你需要停止系統服務

  1. WIN+R輸入並運行msc
  2. 『本機群組原則編輯器\電腦設定\系統管理範本\Windows元組\ Windows Defender』
  3. 按兩下『關閉Windows Defender防病毒軟體』
  4. 勾選『以啟用』按『確定』.Windows Defender則徹底禁用
  5. 若要啟用Windows Defender則勾選『尚未設定』

記憶體(RAM)之帶寬

記憶體(RAM)之帶寬
wmic memorychip

記憶體(RAM)容量對計算機性能起直接的影響,而另一個關鍵參數記憶體(RAM)帶寬(Bandwidth) ,帶寬越高與CPU之間交換數據更快,更有利提高計算機性能.

計算公式如下:

帶寬(Bandwidth)=工作頻率(DRAM Frequency)*位寬(DataWidth)

  公式 簡介
工作頻率Frequency 工作頻率=記憶體頻率*通道數量 相當於車速
位寬(DataWidth) SDRAM、DDR和DDR2、DDR3、DDR4的總線位寬均為64位 相當於路寬

可以通過命令行模式輸入『wmic memorychip』查看記憶體(RAM)的所有參數如上圖

ConfiguredClockSpeed DataWidth Voltage Speed TypeDetail
時鐘速度 位寬 電壓 工作頻率 記憶體容量

以DDR4-2400為例:

工作頻率:2400 MHz

位寬:64Bit=8Byte

 

例計算DDR4-2400記憶體(RAM)帶寬

2400MHz*64bit/8=19200 Mbyte/s=PC19200

例計算DDR400記憶體(RAM)帶寬

400MHz*64bit/8=3200Mbyte/s=PC3200

Windows資源文檔的編譯與讀取

Windows資源文檔的編譯與讀取

Windows程式就是單獨的.exe執行文件.但若程式需要讀取文檔才能運行.可以將其與.exe文件一起放置,但這樣就失去保密性.更好處理方法是將文檔編譯進.exe執行文件.這樣執行程式就無需附帶其它文檔.以VC為例:

把資源文檔編譯進.exe執行文件

  1. 在VC工程目錄創建名為”res”的目錄(其它名都可以)
  2. 把資源文檔當拷貝進”res”的目錄
  3. 以文本方式編輯rc文檔,寫入資源文檔的路徑
  4. name/ID flag   path
  5. 編譯器把所以資源文檔編譯成.RES文檔,最後與其它.obj文檔連接並生.exe執行文件
定義資源文檔 簡介
resources.rc

Heightmap  RAW  “res\\heightmap.raw”

通過字符串名定義

RAW為類型名

Heightmap為資源名

resource.h

#define  ID_MAP   1500

resources.rc

ID_MAP  RAW  “res\\heightmap.raw”

通過整數標識符定義

ID_MAP為資源ID

也可直接使用數字

讀取資源文檔示例

  1. 查找資源FindResource()
  2. 加載資源LoadResource()
  3. 獲取文檔的長度SizeofResource()
  4. 鎖定資源並獲取指針LockResource()

C代碼版本

hInstance:程式的實例句柄

filename:資源文檔名

type:類型名

PBYTE Read_RES(HINSTANCE hInstance,char *filename,char * type)

{//  查找資源

HRSRC hRsrc =::FindResource((HMODULE)hInstance,filename,type);

if(hRsrc == NULL)

return false;

//加載資源

HMODULE hGlobal = (HMODULE)::LoadResource((HMODULE)hInstance,hRsrc);

// 獲取文檔的字節長度

int size =::SizeofResource((HMODULE)hInstance,hRsrc);

// 鎖定資源並獲取指針

PBYTE res = (PBYTE) ::LockResource(hGlobal);

// 分配內存空間

PBYTE data = (PBYTE)malloc(size);

// 拷貝數據

memcpy(data,res,size);

if(hGlobal)

FreeResource(hGlobal); // 釋放資源句柄

return data;

}

Windows菜單之多選與單選

Windows菜單之多選與單選

Windows菜單可以通過實現單選(點選)與多選(勾選)展現當前狀態.你無需更改MENU結構,只需運行時更改菜單項MENUITEM的標記.

菜單多選與單選(函式示例) 簡介
HMENU menu = GetSubMenu(main_menu,1); 獲取子菜單句柄
CheckMenuRadioItem(

menu,

ID_FIRST,

ID_LAST,

ID_CHECK,

MF_BYCOMMAND);

單項選擇

ID_FIRST第一個菜單

ID_LAST最後一個菜單ID

ID_CHECK單選(點選)菜單ID

 

CheckMenuItem(menu,

ID_CHECK,

MF_BYCOMMAND|MF_CHECKED);

選擇多個菜單項(多項選擇)
CheckMenuItem(menu,

ID_CHECK,

MF_BYCOMMAND|MF_UNCHECKED);

取消選擇菜單項(多項選擇)

 

 

 

 

 

 

 

Windows訪問鍵盤

Windows訪問鍵盤

此程式用於查閱鍵消息的虛擬代碼(Virtual Code)與按鍵狀態(Key state)如上圖:下載程式

在Windows訪問鍵盤有五種方法

  1. 接收WM_CHAR消息
  2. 接收WM_KEYDOWN消息
  3. 接收WM_KEYUP消息
  4. 調用GetAsyncKeyState()函式,需要輸入虛擬代碼(Virtual Code)
  5. DirectInput
Windows鍵盤消息 觸發條件
WM_CHAR 按下鍵盤
WM_KEYDOWN 按下鍵盤
WM_KEYUP 鬆開鍵盤
GetAsyncKeyState() 任何時候都可讀取鍵盤

 

Windows鍵盤消息 wParam lParam
WM_CHAR ASCII碼(ASCII Code) 按鍵狀態Key state
WM_KEYDOWN 虛擬代碼(Virtual Code)
WM_KEYUP

 

按鍵狀態Key state(BIT) 變量 簡介
0~15 整數 按鍵重複次數(repeat count)
16~12 整數 掃描碼(scan code)
24 bool 擴展鍵標識,若為1為該鍵為擴展鍵,如右側的ALT鍵和CTRL鍵
25~28 無使用
29 bool 若為1則ALT鍵被按下,否則為0
30 bool 前一個鍵的狀態
31 bool 若為1鍵被釋放,若為0鍵被按住.

 

Microsoft Visual C++之鍵盤快捷鍵

Microsoft Visual C++之鍵盤快捷鍵

因為VC是最好用的基於Windwos的 C編譯器,但如果配合快捷鍵使用將會事半功倍

快捷鍵 簡介
CTRL+U 選擇文本轉為小寫
CTRL+SHIFT+U 選擇文本轉為大寫
CTRL+F Find(查找字符串),但Find In Files顯示輸出欄Output比Find更好用
CTRL+H 替換字符串,VC最好用的文本編輯工具
CTRL+C 拷貝文本
CTRL+V 粘貼文本
CTRL+Z 撤消文本
CTRL+Y 恢復文本
CTRL+A 全選文本
CTRL+R 編輯資源文檔resources.rc
CTRL+S 保存文檔,使用率最高的快捷鍵.良好使用習慣
F7 編譯所有文檔
CTRL+F7 編譯當前文檔
ALT+F7 工程設置(Project Settings)較小使用
ALT+2 顯示輸出欄Output
ALT+0 打開並把焦點切換到workspace
CTRL+W 嚮導無用
CTRL+G Go to很小使用
ATL+F2 BOOKMARKS書簽
CTRL+F2 標記
F11 單步調試
CTRL+F10 Run to cursor運行到遊標
F5 把修改項編譯並執行程式,或斷點後繼續執行,常用鍵之一.
CTRL+F5 不重新編譯只執行程式,用於編譯時長耐工程
CTRL+ SHIFT+8 View whitespace在空格加入或刪除”~”無用的工能只會讓人困惑.
CTRL+SHIFT+SPACE Parameter info查看函式的參數,最好用的快捷鍵之一
CTRL+T Type Info查看函式或變量的類型信息,最好的用快捷鍵之一
CTRL+ALT+T 自動彈出全局變量與全局函式,按::也可自動彈出,最好用的快捷鍵之一

 

URL編解碼器

URL編解碼器

URL連接只支持ASCII碼進行傳送,若要傳送非ASCII碼則需進行編碼.很多時因網絡問題,需要進行URL編碼與解碼.所以便製作URL編解碼器.代碼是我在2010寫的下載軟件移植過來.支持下列類型編解碼

類型 簡介
thunder 迅雷
flashget 快車
qqdl QQ旋風
Binary 所有代碼進行編碼
http 標準編碼
ALL 對\ : & =進行編碼

Win32版下載

Windows之設置EDITTEXT為只讀模式

Windows之設置EDITTEXT為只讀模式

近日需要把文本輸入框(EDITTEXT)設為不可編輯,也就是只讀模式.發現在Dialog下無法啟用,並且在WM_INITDIALOG設置STYLE也無作用.下面給出設置方法:

  1. HWND hWnd = CreateDialog();創建Dialog後
  2. hWnd hEdit= ::GetDlgItem(hWnd,IDDEIT);
  3. SendMessage(hEdit,EM_SETREADONLY,true,0);
  4. WPARAM設為TRUE則啟用只讀模式,設為FALSE則啟用編輯模式

Windows文件拖放

Windows文件拖放

近日要實現文件拖放,如果只實現接收則較為簡單,下麵把實現原理記下.

  1. 令主窗口可以接受文件拖放::DragAcceptFiles(hWnd,TRUE);
  2. 處理WM_DROPFILES消息wParam為HDROP文件拖放句柄
  3. 獲取拖放文件的個數::DragQueryFile(hdrop,-1,NULL,0);
  4. 獲取拖放文件的路徑DragQueryFile(hdrop,File_Index,File_Path,sizeof(File_Path));
  5. 處理拖放文件File_Path
  6. 重複第四第五步提取拖放文件的路徑
  7. 釋放拖放空間::DragFinish(hdrop);

 

int Query_DragAndDrop(HDROP  hdrop,PROC_DRAGANDDROP Proc_DragAndDrop)

{

int  File_Num;

TCHAR File_Path[2056];

int  File_Index;

File_Num = ::DragQueryFile(hdrop,-1,NULL,0);// 獲取文件個數

for(File_Index = 0; File_Index < File_Num; ++File_Index)

{ // 獲取拖放文件

::DragQueryFile(hdrop,File_Index,File_Path,sizeof(File_Path));

Proc_DragAndDrop(File_Path);// 處理文件

}

::DragFinish(hdrop);// 釋放空間

return 1;

}

HASH校驗器

HASH校驗器

HASH(哈希碼)用於生成文件的指紋,如果兩個文件的哈希碼一致,則代表文件是相同的.令外也用於生成密碼指紋.此軟件用於生成文件的哈希碼,支持SHA1,SHA256,SHA384,SHA512,MD5,MD4,MD2,CRC32,CRC64.大部分的哈希校驗碼是我在2009年所寫.所以此軟件製作較順利.加入文件拖放和拷貝剪貼板,全部使用純C代碼所寫速度快,體積小.

Win32版下載:HASH

 

Windows設置按扭圖標

Windows設置按扭圖標

按扭BUTTON可以設定圖標,但有幾點需要需注意:

  1. 準備一張ICO圖標
  2. 在你VC工程目標下創建ICON文件夾,把ICO圖標複製於此.
  3. 把ICO圖標編譯進程序,在RC文件加上IDR_LOGO ICON        “ICO\\logo.ico”
  4. 按扭BUTTON樣式style需加上BS_ICON
  5. 獲取應用實例句柄HMODULE hModule = ::GetModuleHandle(0);
  6. 獲取ICON圖標句柄HICON hIcon = ::LoadIcon(hModule,_T(”IDR_LOGO”));
  7. 設置按扭圖標::SendMessage(hWnd, BM_SETIMAGE, IMAGE_ICON, (LPARAM)hIcon);

SEO外鏈蜘蛛

SEO外鏈蜘蛛

外鏈即指向您的網站的連結,它確定你從搜索引擎獲得多小流量.但要獲得大量的外鏈並不容易,而對於個人Blog(博客)應把精力集中于文章的質量而不是把精力用於增加外鏈.但個人博客主可以通過域名查詢網站增加外鏈,通過查詢域名流下查詢記錄,並產生一條指向你域名鏈接,而域名查詢網站首頁也會產生最新查詢鏈接,如果搜索引擎剛好來訪,你的外鏈就會增加.但天天查詢網站域名更會耗費大量精力,不過你可以製作全自動化域名查詢蜘蛛.下麵給出軟件的製作思路.

  1. 把域名查詢網站保存於文本數據庫
  2. 在圖形界面放置ComboBox下拉文本輸入框,用於輸入域名.
  3. 域名前面不加”HTTP://”後面不添加”/”
  4. 獲取默認瀏覽器路徑
  5. 創建新的線程_beginthread()
  6. 讀取一條記錄fgets()
  7. 啟動瀏覽器並打開網頁
  8. 等待30秒
  9. 關閉瀏覽器
  10. 重複第6至9步

Windows對話框圖標

Windows對話框圖標

對話框圖標在模板中不能設置,需要

1.       準備一張512×512圖片

2.       使用IconWorkshop轉換成ICO圖標

3.       分辯率勾選48×48,32×32,24×24,16×16,位數32Bit(RGBA),16Bit,8Bit(256色)即可.

4.       在你VC工程目標下創建ICON文件夾,把ICO圖標複製於此.

5.       在RSOURCE.RC文件加上,要注意第一條記錄也是應用圖標

IDR_MAINFRAME     ICON        “ICO\\logo.ico”

6.       在對話框WM_INITDIALOG設置

HICON hIcon = LoadIcon(main_instance,_T(“IDR_MAINFRAME”));//載入圖標

::SendMessage(hWnd, WM_SETICON, true, (LPARAM)hIcon);//設置大圖標

::SendMessage(hWnd, WM_SETICON, false, (LPARAM)hIcon);//設置小圖標

Windows輕量級文本數據庫

Windows輕量級文本數據庫

如果程式需要讀取大量數據可使用SQLite3關係數據庫,但如果只是讀寫小量文本數據,則使用文本一行行地保存文本更方便,擴展名最好改為.db下麵給設計思路.

讀取文本數據

  1. 以文本只讀方式打開文件_wfopen(),使用寬字符版路徑帶有中文也可打開,
  2. 讀取一行文本fgets()並進行處理
  3. 循環第二步,如返回NULL則讀取完畢.
  4. 關閉文件句柄fclose()

寫入文本數據

  1. 以文本寫入方式打開文件_wfopen(),模式使用w代表文件長度清零,否則使用a在文件尾寫入數據
  2. 寫入一行文本fputs()
  3. 寫入換行fputs(“\n”,stream);
  4. 循環第二第三步,如返回NULL則讀取完畢.
  5. 關閉文件句柄fclose()

 

讀取文本的C代碼

bool Read_DB()

{

FILE * stream=NULL; // 文件流句柄

char text[2056];

stream = _wfopen(L”text.dat”,L”r+t”);// 以文本方式打開文件

if(stream == NULL)

return false;// 無法打開文件

// 讀取一行

while(fgets(text,sizeof(text),stream) != NULL)

{  //去除字符串中最後面 “換行符”  “空格”

TrimRight(text);

// 處理文本

// ……….

}

fclose(stream); // 關閉文件句柄

return true;

}

追加一行文本的C代碼

bool Save_DB(char * text)

{

FILE * stream=NULL; // 文件流句柄

// 以文本方式打開文件

stream = _wfopen(L”text.dat”,L”a+t”);

if(stream == NULL)

return false;// 無法打開文件

::fputs(text,stream);// 寫入數據

::fputs(“\n”,stream);// 換行

fclose(stream);// 關閉文件句柄

return true;

}

Windows對話框在屏幕居中顯示

Windows對話框在屏幕居中顯示

對話框(DIALOG)模板可以設定顯示位置,但因屏幕大小不一,總想讓對話框在屏幕居中顯示.

  1. 獲取窗口的矩形區域GetWindowRect(),計算窗口的寬和高
  2. 獲取屏幕寬和高GetSystemMetrics()
  3. 重新設置窗口位置

下面給出C源代碼便於移值到其它工程

bool CentreWindow(HWND hWnd)

{

RECT rect;

int width,height;

int x,y;

if(IsWindow(hWnd) == false)

return false;

::GetWindowRect(hWnd,&rect); // 獲取窗口的

width  = rect.right – rect.left; // 計算窗口寬度

height = rect.bottom – rect.top; // 計算窗口高度

x = GetSystemMetrics(SM_CXSCREEN)/2-width/2;// 計算窗口居中X

y = GetSystemMetrics(SM_CYSCREEN)/2-height/2;// 計算窗口居中Y

SetWindowPos(hWnd,HWND_TOP,x,y,0,0,SWP_NOSIZE);  // 移動窗口

return true;

}

Windows啟動瀏覽器並打開網頁

Windows啟動瀏覽器並打開網頁

啟動瀏覽器最簡單的方法是使用ShellExecute(),但無返回進程句炳,要關閉瀏覽器只能查找窗口.更好的方法是CreateProcess()啟動瀏覽器新進程並打帶網頁,並返回進程句柄,方便關閉瀏覽器.

BOOL CreateProcess(LPCTSTR lpApplicationName,//執行模塊名填空NULL即可

LPTSTR  lpCommandLine,//命令行填”瀏覽器Path+空格+網頁URL”

LPSECURITY_ATTRIBUTES lpProcessAttributes,//進程屬性  LPSECURITY_ATTRIBUTES lpThreadAttributes,//線程屬性

BOOL bInheritHandles,  //繼承進程句柄false

DWORD dwCreationFlags, //創建標誌填CREATE_NEW_CONSOLE

LPVOID lpEnvironment, //進程環境

LPCTSTR lpCurrentDirectory,// 進程的工作路徑填NULL

LPSTARTUPINFO lpStartupInfo, //STARTUPINFO結構

LPPROCESS_INFORMATION lpProcessInformation//PROCESS_INFORMATION結構

);

  1. 要注意的是命令行lpCommandLine:瀏覽器Path+空格+網頁URL
  2. 命令行最好使用寬字符Unicode否則路徑有漢字或非ASCII碼則無法運行
  3. 返回不為false則調用成功
  4. 保存lpProcessInformation返回瀏覽器新進柄

 

下麵給打開網頁源代碼,便於

bool Open_Url(char * url,char * browser_Path)

{

int result = 0;

char CommandA[2056];

WCHAR CommandW[2056];

int length;

SECURITY_ATTRIBUTES Security_Attributes_Process;// 進程屬性

SECURITY_ATTRIBUTES Security_Attributes_Thread;// 線程屬性

STARTUPINFO        Startup_Info;// 啟動信息

PROCESS_INFORMATION Process_Information;//  進程信息

strcpy(CommandA,browser_Path);

strcat(CommandA,” “);

strcat(CommandA,url);

// 轉換UNICODE

length = MultiByteToWideChar(CP_ACP, NULL, CommandA, strlen(CommandA), CommandW, sizeof(CommandW));

CommandW[length] = NULL;

// 進程屬性

Security_Attributes_Process.nLength              = sizeof(SECURITY_ATTRIBUTES);

Security_Attributes_Process.lpSecurityDescriptor = NULL;

Security_Attributes_Process.bInheritHandle       = true;

// 線程屬性

Security_Attributes_Thread.nLength               = sizeof(SECURITY_ATTRIBUTES);

Security_Attributes_Thread.lpSecurityDescriptor  = NULL;

Security_Attributes_Thread.bInheritHandle        = true;

// 啟動信息

ZeroMemory( &Startup_Info, sizeof(STARTUPINFO) );

Startup_Info.cb = sizeof(STARTUPINFO);

ZeroMemory( &Process_Information, sizeof(PROCESS_INFORMATION) );

// 創建進程

result = CreateProcessW(NULL,

CommandW,

&Security_Attributes_Process,

&Security_Attributes_Thread,

FALSE,

CREATE_NEW_CONSOLE,

NULL,

NULL,

&Startup_Info,

&Process_Information);

// 獲取進程句柄

if(result != 0)

return true;

else

return false;

}

Windows 默認瀏覽器路徑

Windows 默認瀏覽器路徑

Windows默認瀏覽器的路徑在註冊表(REGEDIT.EXE)的HKEY_CLASSES_ROOT\http\shell\open\command\,提取數據需要使用下面三個註冊表操作函數.並給出設計思路源碼

  1. 打開註冊表句柄RegOpenKeyEx()
  2. 提取數據RegQueryValueEx()
  3. 關閉註冊表句柄RegCloseKey()
  4. 提取在雙引號中的瀏覽器路徑

 

char   Browser_Path[2056];// 瀏覽器路徑

// ————————————————————–

// 獲取系統默認瀏覽器路徑

// ————————————————————–

char * Get_WebBrowserPath_SEO(void)

{

long ret;

HKEY hKey;// 註冊表句柄

WCHAR path[2056];//

char  data[2056];

DWORD length;

// 打開註冊表

// HKEY_CLASSES_ROOT\http\shell\open\command

ret = RegOpenKeyExW(HKEY_CLASSES_ROOT,L”http\\shell\\open\\command”,0,KEY_ALL_ACCESS,&hKey);

if(ret != ERROR_SUCCESS)

return NULL;

// 獲取REG_SZ

DWORD type = REG_SZ;//類型

length = sizeof(path);//

ret = RegQueryValueExW(hKey,NULL,NULL,&type,(PBYTE)path,&length);

if(ret != ERROR_SUCCESS)

return NULL;

// 關閉註冊表句柄

RegCloseKey(hKey);

// 轉換為UTF-8

length  = WideCharToMultiByte(CP_UTF8, NULL, path, wcslen(path), data, sizeof(data), NULL, NULL);

data[length] = NULL;

// 清零

memset(Browser_Path,0,sizeof(Browser_Path));

// 提取路徑

for(int i = 0,index = 0;i<(int)length; ++i)

{

if(data[i] == ‘”‘ && index != 0)

break;// 讀取完畢跳出

if(data[i] != ‘”‘)

{

Browser_Path[index] = data[i];

++index;

}

}

return Browser_Path;// 返回路徑

}

Windows之ANSI和UNICODE與UTF8相互轉換

Windows之ANSI和UNICODE與UTF8相互轉換

因為Windows控件全部使用UNICODE編碼字符(或ANSI),而我文人卻喜歡使用UTF8編碼字符,所以需要在UTF8與UNICODE之間相互轉換,而我在2010年12月7日寫的一個字符轉換函式庫剛好派上用場.所有轉換MultiByteToWideChar()與WideCharToMultiByte()兩個函式完成,轉換後以NULL字符結尾.特將其簡化並記錄如下,便於以後移植使用.

多字節字符(ANSI/UTF-8)轉換寬字符(UNICODE)

int MultiByteToWideChar(

UINT CodePage,         // 代碼頁

DWORD dwFlags,         // 字符標誌, 默認設為0

LPCSTR lpMultiByteStr, //多字節字符

int cchMultiByte,      //多字節字符個數

LPWSTR lpWideCharStr,  // 寬字符輸出緩存

int cchWideChar        //寬字符緩存大小

);

寬字符(UNICODE)轉換多字節字符(ANSI/UTF-8)

int WideCharToMultiByte(

UINT CodePage,         //代碼頁

DWORD dwFlags,         // 字符標誌, 默認設為0

LPCWSTR lpWideCharStr, // 寬字符

int cchWideChar,       //寬字符長度

LPSTR lpMultiByteStr,  //多字節字符輸出緩存

int cchMultiByte,      //多字節字符緩存輸出大小

LPCSTR lpDefaultChar,  // 自定義寬字符,默認設為NULL

LPBOOL lpUsedDefaultChar   // 是否使用寬字符

);

//——————————————————————

// Ansi轉換Unicode

// Unicode:Unicode碼文本輸出

// Unicode_Size:Unicode碼輸出緩衝區WORD的長度

// Ansi:ANSI碼文本輸入,以NULL字符接尾

// Encode:ANSI文本字符編碼

// 返回值:Unicode 字符個數!(Unicode一個字符需兩個字節)

//——————————————————————

int Ansi_To_Unicode(WCHAR * Unicode,int Unicode_Size,char * Ansi,int Encode)

{

int Unicode_Length;// Unicode 字符個數!非字節數!

if(Unicode == NULL || Ansi == NULL)

return 0;

// Ansi轉換Unicode

Unicode_Length = MultiByteToWideChar(Encode, NULL, Ansi,strlen(Ansi), Unicode, Unicode_Size);// 轉換

Unicode[Unicode_Length] = 0;

return Unicode_Length;

}

 

//——————————————————————

//Unicode轉換Ansi

//Ansi:ANSI碼文本輸出

//Unicode_Size:Unicode碼輸出緩衝區WORD的長度

//Unicode:Unicode碼文本輸入

//返回值:Ansi所占字節數!

//——————————————————————

int Unicode_To_Ansi(char* Ansi,int Ansi_Size,PWORD Unicode)

{

int Ansi_Length;

if(Ansi == NULL || Unicode == 0)

return 0;

//Unicode轉換Ansi

Ansi_Length = WideCharToMultiByte(CP_ACP, NULL, Unicode, wcslen(Unicode), Ansi, Ansi_Size, NULL, NULL);

Ansi[Ansi_Length] = NULL;

return Ansi_Length;

}

 

//——————————————————————

// UTF-8 轉 Unicode

//Unicode:Unicode碼文本輸出

//Unicode_Size:Unicode碼輸出緩衝區WORD的長度

//Utf8:Utf-8文本輸入

//返回值:UTF-8字符個數!

//——————————————————————

int Utf8_To_Unicode(WCHAR * Unicode,int Unicode_SIze,char * Utf8)

{

int Unicode_Length;

if(Utf8 == NULL || Unicode == NULL )

return 0;

// UTF-8 轉 Unicode

Unicode_Length = MultiByteToWideChar(CP_UTF8, NULL, Utf8, strlen(Utf8), Unicode, Unicode_SIze);

Unicode[Unicode_Length] = NULL;

return Unicode_Length;

}

 

//——————————————————————

// UTF-8 轉 Unicode

//Utf8:UTF-8字符輸出

//Utf8_Size:UTF-8碼輸出緩衝區BYTE的長度

//Unicode:Unicode寬字符輸入

//返回值:Unicode所占字節數!

//——————————————————————

int Unicode_To_Utf8(char * Utf8,int Utf8_Size,WCHAR * Unicode)

{

int Utf8_Length;

if(Utf8 == NULL || Unicode == NULL)

return 0;

// UTF-8 轉 Unicode

Utf8_Length = WideCharToMultiByte(CP_UTF8, NULL, Unicode, wcslen(Unicode), Utf8, Utf8_Size, NULL, NULL);

Utf8[Utf8_Length] = NULL;

return Utf8_Length;

}

 

//—————————————————————————

//Ansi 轉 Utf8

//Utf8:UTF-8字符輸出

//Utf8_Size:UTF-8碼輸出緩衝區BYTE的長度

//Ansi:ANSI文本輸入

//Encode:ANSI文本字符編碼

//返回值:Utf8字節長度

//—————————————————————————

int Ansi_To_Utf8(char * Utf8,int Utf8_Size,char * Ansi,int Encode)

{

int Utf8_Length = NULL;

PWORD Unicode;

int   Unicode_Size;

int   Unicode_Length;

Unicode = (PWORD)Utf8;

Unicode_Size = Utf8_Size/2;

// Ansi 轉 Unicode

//Unicode_Length = Ansi_To_Unicode(Unicode,Unicode_Size,Ansi,Encode);

Unicode_Length = MultiByteToWideChar(Encode, NULL, Ansi,strlen(Ansi), Unicode, Unicode_Size);// 轉換

Unicode[Unicode_Length] = 0;

// Unicode 轉 Utf8

//Utf8_Length = ::Unicode_To_Utf8(Utf8,Utf8_Size,Unicode);

Utf8_Length = WideCharToMultiByte(CP_UTF8, NULL, Unicode, wcslen(Unicode), Utf8, Utf8_Size, NULL, NULL);

Utf8[Utf8_Length] = NULL;

return Utf8_Length;

}

//—————————————————————————

// Utf8 轉換 Ansi

// Ansi: ANSI文本輸出

// Ansi_Size:ANSI碼輸出緩衝區BYTE的長度

// Utf8: UTF-8字符輸入

// 返回值:Ansi字節長度

//—————————————————————————

int Utf8_To_Ansi(char * Ansi,int Ansi_Size,char * Utf8)

{

int Ansi_Length = NULL;

PWORD Unicode;

int   Unicode_Size;

int   Unicode_Length;

Unicode = (PWORD)Ansi;

Unicode_Size = Ansi_Size/2;

// Utf8 轉 Unicode

//Unicode_Length = Utf8_To_Unicode(Unicode,Unicode_Size,Utf8);

Unicode_Length = MultiByteToWideChar(CP_UTF8, NULL, Utf8, strlen(Utf8), Unicode, Unicode_Size);

Unicode[Unicode_Length] = NULL;

// Unicode 轉 Ansi

//Ansi_Length = ::Unicode_To_Ansi(Ansi,Ansi_Size,Unicode);

Ansi_Length = WideCharToMultiByte(CP_ACP, NULL, Unicode, wcslen(Unicode), Ansi, Ansi_Size, NULL, NULL);

Ansi[Ansi_Length] = NULL;

return Ansi_Length;

}

 

編碼類型 數值 說明
CP_ACP 0 默認ANSI代碼頁
CP_OEMCP 1 默認OEM代碼頁
CP_MACCP 2 默認MAC代碼頁
CP_THREAD_ACP 3 本線程ANSI代碼頁
CP_SYMBOL 42 SYMBOL轉換
CP_UTF7 65000 UTF-7轉換
CP_UTF8 65001 UTF-8轉換
CP_ANSI 1252 通用ANSI 代碼頁
ISO_8859_1 28591 西歐語言
ARABIC 1256 阿拉伯語
GENERAL 1252 通用
DUTCH 1252 荷蘭,德國
CZECH 1250 捷克斯洛伐克
HUNGARIAN 1250 匈牙利
ICELANDIC 1252 冰島
NORDIC 1252 北歐日耳曼民族的
NORWDAN 1252
POLISH 1250 波蘭
CYRILLIC 1251 西裏爾字母
SPANISH 1252 西班牙
SWEDFIN 1252
TURKISH 1254 土耳其語, 突厥語族
GREEK 1253 希臘
HEBREW 1255 希伯來語
JAPANESE 932 日本
KOREAN 949 朝鮮
BIG5 950 正體中文
GB2312 936 簡體中文
GBK 936 簡體中文
GB18030 54936 簡體中文
SLOVENIAN 1250 未開發

 

 

 

Windows之ANSI與UNICODE

Windows之ANSI與UNICODE

近日寫SEO應用程式,因現在目錄路徑可能會有中文字符或非ASCII字符,所以使用寬字符版的程式,但出現_T()與_TEXT()宏指令無定義:

error C2065: ‘_T’ : undeclared identifier

又不想直接使用L()宏指令定義寬自字符,百思不得其解.原來_T()與_TEXT()宏指令的定義在TCHAR.H文件,添加#include <TCHAR.h>即可解決.

VC使用#define _MBCS定義則使用ANSI字符,而定義#define _UNICODE 則使用UNICODE寬字符.如過想全局定義_MBCS或_UNICOD可在Settings設置如上圖.

Project Settings/C/C++/Category/General/Preprocessor definitions/ WIN32,_DEBUG,_WINDOWS,_UNICODE

平板電腦-安裝Windows10

平板電腦-安裝Windows10

我果台雜牌平板更換電池後獲得新的生命.平板本為雙系統Win8+Android.因為硬盤只有64GB再分給兩系統使用可利用率實在太低.故想重新分區安裝Win10.在微軟下載Windows10 ISO官方鏡像.版本號為1709居然無法安裝第三應用,只可以安裝在應用商店下載的應用或者購買專業版…暈!也就想激活Win10都無可能.之後安裝早期的Win10-ISO鏡像才成攻激活.

P2P下載慢之啟用UPNP

P2P下載慢之啟用UPNP

因為暑熱所以搬離屋企,安裝左”有線電視”的寬帶(139.gd),但總是發覺BT(BitTorrent)下載時比在屋企下載難,當時想是寬帶是內網的問題.但按使用BitComet是發現無法端口阻塞.”你的監聽端口無法被外網用戶連接,你的下載速度可能會受到影響,請檢查防火牆及NAT網關設置”並且”DHT已連接節點為0”

這講明你只能主動鏈接她人,而她人就無法鏈接你,而且DHT協議也是需要監聽端口.因為本人多年前寫過BT下載程序,這種情況當然不是本機的監聽端口無法打開,而網關(路郵)無幫你作端口影射.你需要在網關(路郵)啟用UPNP,這個協議可以幫助由程序向網關(路郵)請求端口影射.

 

以我這台”有線電視”的機頂盒為例啟動UPNP

  1. 在瀏覽器中輸入http://192.168.88.256進入網關(路郵)的WEB網管登錄界面
  2. 默人用戶名admin和密碼96956,進入管理介面
  3. 防火牆設置/UPNP設置
  4. 啟用UPNP
  5. 按確定保存
  6. 管理設置/重啟系統

 

有部分軟件並非自已生成UPNP連接,而是使用Windows自帶的服務.你需令外啟用.

  1. 網上鄰居/網絡任務/顯示聯網的UPNP設備圖標,”安裝組件”並”相關服務”
  2. 控制面板/添加或刪除程序/添加刪除Windows組件/Windows組件嚮導/網絡服務/詳細信息. “Internet網關設備發現和控制客戶端”和“UPnP用戶界面”組件
  3. 控制面板/管理工具/服務/SSDP Discovery Service啟動啟用UPNP設備的發現/狀態設為”已啟動”
  4. 控制面板/Windows防火牆/例外/勾選”UPnP 框架”服務
  5. 網絡連接/Internet連接/鼠標右鍵/屬性/常規/設置
  6. 點擊“添加”,輸入本機的IP地址與影射本機與網關的網絡端口,TCP與UDP需分別添加.

 

這樣你才能被沒有啟用UPNP的用戶peer連接,獲的更快的下速度.

Windows10禁用自動更新

Windows10禁用自動更新
Windows10禁用自動更新

自動更新作為Windows10的系統服務可以保卫,但整天更新也為我地的工作帶來麻煩,所以很多人都想把它禁用,但Windows10卻取消了禁用選項.下麵我介紹通過禁用系統服務達到禁用更新的目的

  1. Win+R打開運行窗口
  2. 輸入msc按確定啟動本地服務
  3. 找出WINDOW Update服務並雙擊
  4. 常規選項框的啟動類型選擇禁用
  5. 恢復選項框的第一次啟動失敗選擇無操作
  6. 重啟計算機
  7. 設置/Windows更新/更新狀態/檢查更新
  8. 會出現(安裝更新時出現一些問題,但我們稍後會重試)
  9. 若想恢復自動更新需把啟動類型設置為自動

Windows鍵盤快捷鍵

Windows鍵盤快捷鍵

為什麼使用滑鼠能完成操作,還要使用鍵盤去完成?假設你右手使用滑鼠完成所有的操作,你右手會很快會過勞而受損,通過左手的配合則能分擔一半勞動強度,而且能加快工作一倍速度。

 

快捷鍵 功能簡介
WIN或CTRL+ESC 打開開始菜單

WIN鍵是有微軟標誌的果個按鍵.

WIN+E 打開資源管理器,

這是我最常用快捷鍵之一,因為它太重要.

WIN+L 快速鎖定系統

暫時離開電腦時最快的鎖定電腦的方法

WIN+M 最小化所有視窗.
WIN+SHIFT+M 還原所有視窗,與WIN+M配合使用
WIN+D 最小化與還原所有視窗之間切換

這個比WIN+M更好用

WIN+F 打開查找視窗
WIN+R 打開運行視窗
WIN+U 打開助功能
WIN+CTRL+M  
WIN+CTRL+F 打開查找電腦視窗
WIN+Pause Break 打開系統屬性

比在資源管理器中打開快多了.

WIN+F1 單獨的打開幫助
WIN+TAB 迴圈切換任務欄上的按扭,但不彈出zh只切換焦點
CTRL+C或CTRL+INSERT 複製
CTRL+V或SHIFT+INSERT 粘貼
CTRL+X 剪切
CTRL+S 保存

這是使用率最高的,因為保存是好習慣

CTRL+A 全選

選擇所有文檔或文本或所有的

CTRL+F 查找

文檔內部查找最常用

DELETE 刪除,移入回收站
SHIFT+DELETE 直接刪除不移入回收站
CTRL+Z 撤銷,例如刪除後的恢復
CTRL+Y 恢復(暫不支持)
CTRL+P 列印文檔
CTRL+W 關閉當前焦點視窗視窗
CTRL+鼠标滚轮 縮小於放大

常用與網頁流覽與文檔編輯

LEFT(拖放)+ CTRL 複製文檔

LEFT滑鼠左鍵拖放文檔+ CTRL鍵

LEFT(拖放)+ CTRL+SHIFT 創建文檔的快捷方式

LEFT滑鼠左鍵拖放文檔+ CTRL鍵+ SHIFT鍵

CTRL+LEFT(選擇) 逐個選擇文檔

CTRL鍵+滑鼠左鍵選擇文檔

SHIFT+LEFT(選擇) 連續選擇文檔

SHIFT鍵+滑鼠左鍵選擇文檔

CTRL+SHIFT+LEFT(選擇) 連續逐個選擇文檔

CTRL鍵+SHIFT鍵+滑鼠左鍵選擇文檔

CTRL+HOME/HOME 移動游標到文檔的開始
CTRL+END/END 移動游標到文檔的結束
ALT+F4 關閉分頁窗口

只能關閉內部分頁視窗

CTRL+W 關閉當前焦點視窗視窗
ALT+F4 關閉當前焦點視窗視窗

能關閉所有視窗.

ALT+ESC 在活动的窗口链中切换
ALT+SHIFT 在輸入法之間切換這是最常用快捷鍵
ATL+TAB 迴圈切換視窗

按住ATL鍵,在按TAB鍵切換視窗

ATL+SHIFT+TAB 反向迴圈切換視窗

按住ATL鍵+SHIFT鍵,在按TAB鍵反向切換視窗

ALT+PRINT SCREEN 將當前焦點窗口截圖

這是最好用截圖工具,比第三方的截圖工具更好使用

PRINT SCREEN 將當前螢幕截圖

與ALT鍵配合使用根本無需第三方的截圖工具

SHIFT+F10 彈出當前焦點菜單
SHIFT+DELETE 直接刪除不移入回收站
F1 説明
F2 重命名檔案名

比滑鼠右鍵彈出功能表要好用

F3 查找

資源管理器中使用

F4 查閱

需與滑鼠配合使用,移動滑鼠到目標然後按F4鍵

F5 刷新

網頁上最常用

F6 窗口内部焦点切换
F10 把焦點切換到菜單欄
F11 視窗與全屏之間切換
F12 另存為

與CTRL+S保存配合使用

ESC 取消當前任務

 

文件保險箱

文件保險箱
文件保險箱

文件保險箱

文件保險箱不但可以讓別人無法看到保險箱下的內容,而且更無法刪除保險箱. 保險箱无法删除更能起到保護文件的作用,文件保險箱其實就是生成無發刪除的文件夹.只要檔夾中包含不規範字符既可.

 

文件保險箱

  1. 新建一個文本文件,寫入命令行指令.
  2. mkdir lock..\
  3. 将文本文件另存为cmd, 編碼選擇ANSI
  4. 双击运行则可生成文件夹,鼠标双击无法打开,也无删除

 

打开保险箱

  1. 新建一個文本文件,寫入命令行指令.
  2. start %cd%\lock..\
  3. 将文本文件另存为cmd, 編碼選擇ANSI
  4. 雙擊運行則可打開文件夹

 

删除保险箱

  1. 新建一个文本文件,寫入命令行指令.
  2. rd /s /q     %cd%\lock..\
  3. 将文本文件另存为cmd, 編碼選擇ANSI
  4. 雙擊運行則可刪除文件夾

 

強制刪除文件

強制刪除文件
強制刪除文件

強制刪除文件

在使用Windows的過程中我們可能會遇到無法刪除的文件,可能原因有:

  • 由於檔系統的損壞。
  • DOS保留文件名
  • 无效的文件名,如尾巴有空格,
  • 不规范的字符如\/:?*”<>|之一

我們可以使用命令行模式強制刪除文件和目錄.

 

 

  1. 新建一个文本文件,寫入命令行指令.
  2. edl /f /a /q \\?\%1
  3. rd /s /q    \\?\%1
  4. 将文本文件另存为,扩展名改为.bat或.cmd,文件名可以隨便起一個.
  5. 編碼選擇ANSI
  6. 把文件或目录拖放到这个文件的上方,即可删除.

 

 

下面講述命令行的作用

edl /f /a /q \\?\%1

rd  /s /q    \\?\%1

第一行命令edl刪除檔,參數f強制刪除, 參數q無需確認. 參數?避免Windows檢查文件名的合法性

第二行命令rd刪除目錄,參數s強制刪除目錄和所有子目錄下的所有檔, 參數q無需確認. 參數?避免Windows檢查文件名

Windows10兼容老舊遊戲

Windows10兼容老舊遊戲
Windows10兼容老舊遊戲

Windows10兼容老舊遊戲

如果想在Windows10玩老舊遊戲,嘗試更改程式兼容性,就能在全屏模式下運行.

  1. 用滑鼠右鍵點擊程式,彈出功能表後點擊屬性.彈出屬性視窗,用滑鼠左鍵點擊相容性頁面,
  2. 在”相容模式”中勾選”以相容模式運行這個程式”,在下拉功能表中選擇”作業系統”
  3. 在”設置”框中勾選”用640×480螢幕解析度運行”
  4. 如過遊戲屬於256色遊戲, 在”設置”框中勾選”簡化的顏色模式”,在下拉功能表中選擇”8位元256色”,否則跳過這一步.
  5. 點擊應用保存設置.