好久都沒用這套系統…生灰了。 這次,想說練一練生疏的C++,不過顯然選錯對象,不知道能撐多久。 嘛,反正我很喜歡靠盃別人,就看看能不能用對微軟怨念搞完這專案吧。

緣起(?)

Text Service Framework,就資料來看是微軟在XP時期就引入的東西。 但它真正成為預設的輸入法管理框架是從Vista開始。 而到了Win10的時候,你會發現某些客制輸入法沒辦法在開始功能表使用,這代表新一代的程式不再接受舊的框架。 當然,這是指那些使用微軟最新最炫炮的程式設計方式來講,但商業程式都有自己的包袱在,所以這一兩年應該也還好。 但之後嘛,誰知道?

更何況對現在的我來說實在是受不了,我可以一天不上哈哈姆特,但不能一天不打字。 但這個gcin,以日常使用來說手感還不是很好,除了不能在新程式上打字外,在某些極端的情形下也會當掉。 沒有什麼理由等作者放出TSF版。

目前看到的

微軟在Vista時代時釋出範例程式和教學文件,但目前只剩範例還在,教學的連結全掛了。 所以我不得不從其中的散裝的Reference和範例碼來學習。 哦,我為什麼不查一下英文?嗯,我早就查了。 很明顯的,因為除了CJK之外沒什麼語言需要用到那麼複雜的功能,沒需求的話何必去寫相關的程式? 日本人也許會吧?但我日文比C++還差,算了吧。

反正,範例程式用regsvr32註冊後會發現多出來的是中國(簡體)。 然後你打什麼就丟什麼出來,除了可以讓你切換全形半形、標點符號外什麼都沒實作。

唉,算了,反正再怎樣範例也不會全給你a1到a10的鳥命名方式吧?除了很蠢的在類別前加C。 Register.cpp?所以你要註冊什麼? 啊,看來這邊是在處理一些安裝的東西

pITfInputProcessorProfileMgr->UnregisterProfile(Global::SampleIMECLSID, TEXTSERVICE_LANGID, Global::SampleIMEGuidProfile, 0);

參數找一找,發現到TEXTSERVICE_LANGID正是定義了這個輸入法會放在哪一個語言底下。 把它改成繁中,野!現在它是繁中輸入法了(被巴)。

P.S.

不曉得為什麼,現在就連範例碼的連結都有點問題。省點麻煩,我這邊上傳到mega

話說,這東西簡稱TSF,我好像在哪看過?