常用字串輸入程式 |
|
chtai
高階會員 發表:68 回覆:238 積分:116 註冊:2004-05-21 發送簡訊給我 |
[名稱] : 常用字串小程式 (476 KB) [版本] : v1.2 [網址] : http://www.csie.nctu.edu.tw/~chtai/software/Quick_String.zip [功能] 快速幫你輸入常用字串,表情,符號。 用在 MSN 或是 WORD 或留言板時應該挺方便的。 若要修改字串,只要去修改 FUS.ini 檔即可。 [用法] 1. 解壓縮至任何你喜歡的地方,執行本程式。 2. 在要輸入文字的地方點一下,讓它取得焦點。 (例如你在正用 MSN 傳訊,就在下方的打字區域點一下。) 3. 選擇一個你想送出的字串,對它點兩下。 4. 這時應該會看到你選擇的字串已送到目的地了。 [已知問題] 只能用在可打字的元件上 (就是有支游標在閃的地方), 也就是 edit, memo, richedit, combobox, listbox 之類, 無法用在 PCMan 或 KKMan 之類的軟體。 [ToDo] : 解決已知問題 ~XD [版本歷史] v1.2 : 修正切換類別之後會掉字的bug. 移除 "新增字串" 的功能, 要新增/修改字串或類別, 請直接去 FUS.ini 改. 減少一點點程式體積. v1.1 : 讓程式在不同解析度的螢幕都能出現在右下角. 改變一些程式外觀. 減少程式體積. v1.0 : First released!-- http://www.csie.nctu.edu.tw/~chtai/software.html 好用免費軟體的收集網頁,歡迎大家跟我分享或一同推廣免費軟體。 若您覺得這網頁不錯,也歡迎您將它傳出去 :)
------
My Web: http://nelson.csie.us My Blog: http://blog.nelson.csie.us
附加檔案:55878_常用字串輸入程式.zip
|
chtai
高階會員 發表:68 回覆:238 積分:116 註冊:2004-05-21 發送簡訊給我 |
網址的檔案是只有執行檔的連結,包含原始碼的完整檔案已上傳到站上,有興趣的朋友請由最上方的檔案連結下載 :) 會興起寫這程式的動機是因為小弟有在使用PCMan上BBS,覺得裡頭的常用字串功能非常方便,可惜只能用在該軟體上,所以就參考了該作者的另一支程式(標點符號輸入)的介面,再加上小弟自行收集的常用字串,而寫了這一支小程式。 主要的設計方向就是
1.利用INI檔Section的便利性來儲存不同分類的常用字串。
2.利用INI檔Key=Value的特性來避免存入重複字串。(考慮到增/改字串並不常用,故目前拿掉此功能)
3.利用WIN API找尋並傳送訊息至另一視窗。 以下這段就是送出字串到目的視窗的程式碼:
void __fastcall TformMain::ListBox1DblClick(TObject *Sender) { HWND HWnd = formMain->Handle; TClipboard* Clip = Clipboard(); Clip->AsText = ListBox1->Items->Strings[ListBox1->ItemIndex]; do { if( !(HWnd = GetWindow(HWnd, GW_HWNDNEXT)) ) break; } while( !(GetWindowLong(HWnd, GWL_STYLE) & WS_BORDER) || !IsWindowVisible(HWnd) || HWnd == ListBox1->Handle || HWnd == cbClass->Handle ); if( IsZoomed(HWnd) ) ShowWindow(HWnd, SW_SHOWMAXIMIZED); // 若是最大化, 就最大化顯示 else ShowWindow(HWnd, SW_SHOW); // 不然就直接顯示 SystemParametersInfo(SPI_SETFOREGROUNDLOCKTIMEOUT, 0, 0, SPIF_SENDCHANGE); SetForegroundWindow(HWnd); keybd_event(VK_CONTROL, 0, 0, 0); // 按下 Ctrl keybd_event(86, 0, 0, 0); // 按下 V keybd_event(86, 0, KEYEVENTF_KEYUP, 0); // 放開 V keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0); // 放開 Ctrl }可是目前小弟遇到兩個難題 - 有時候在多個視窗之間來去切換之後,會發生找錯目的視窗,或是把自己當成目的視窗的問題。 目前想到的可能解法是再加入ProcessID的判斷,若ProcessID是自己就再找下一個視窗。 - 送字串出去的方式,目前是先存入剪貼簿,再送出Ctrl V貼上。 可是有些軟體,如KKMan或PCMan,並非用Ctrl V當做貼上的熱鍵, 而且有些軟體,如telnet之類,根本沒有edit或memo之類的元件,也就根本不能使用Ctrl V貼上的方式了。 以上兩個問題,還望眾位前輩能代為解惑。 或是對本程式的程式碼有所建議或疑問的,也煩請反應給小弟知道 :) -- http://www.csie.nctu.edu.tw/~chtai/software.html 好用免費軟體的收集網頁,歡迎大家跟我分享或一同推廣免費軟體。 若您覺得這網頁不錯,也歡迎您將它傳出去 :)
------
My Web: http://nelson.csie.us My Blog: http://blog.nelson.csie.us |
conundrum
尊榮會員 發表:893 回覆:1272 積分:643 註冊:2004-01-06 發送簡訊給我 |
|
chtai
高階會員 發表:68 回覆:238 積分:116 註冊:2004-05-21 發送簡訊給我 |
引言:不好意思,不過我不太懂您的意思耶。 軟體有那麼多種,又怎有辦法去分類哪一種要用什麼方法貼上呢? 小弟猜想,應該還有更通用的方法,能夠 "傳送文字給別支程式,並讓它秀出來"才是吧。 -- http://www.csie.nctu.edu.tw/~chtai/software.html 好用免費軟體的收集網頁,歡迎大家跟我分享或一同推廣免費軟體。 若您覺得這網頁不錯,也歡迎您將它傳出去 :)引言: 而且有些軟體,如telnet之類,根本沒有edit或memo之類的元件,也就根本不能使用Ctrl V貼上的方式了那就先判斷程式執行緒先分類 再請利用 滑鼠 右鍵 參數 類似使用ssh時 這樣 貼上
------
My Web: http://nelson.csie.us My Blog: http://blog.nelson.csie.us |
conundrum
尊榮會員 發表:893 回覆:1272 積分:643 註冊:2004-01-06 發送簡訊給我 |
|
chtai
高階會員 發表:68 回覆:238 積分:116 註冊:2004-05-21 發送簡訊給我 |
可是軟體那麼多種,各軟體貼上的方式亦不同,
誰又能知道使用者會用哪一種軟體。 小弟想知道,是否有別種方式(不一定要用複製貼上),
告訴軟體要在編輯的焦點秀出一段文字。 --
http://www.csie.nctu.edu.tw/~chtai/software.html
好用免費軟體的收集網頁,歡迎大家跟我分享或一同推廣免費軟體。
若您覺得這網頁不錯,也歡迎您將它傳出去 :)
------
My Web: http://nelson.csie.us My Blog: http://blog.nelson.csie.us |
conundrum
尊榮會員 發表:893 回覆:1272 積分:643 註冊:2004-01-06 發送簡訊給我 |
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=51329
下方的資料看看 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=50997
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=47170
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=53717
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=53688
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=53687
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=43833 當使用某程式時 啟用快速鍵呼叫 輸入程式 此動態鎖定ap執行緒
在來就是API Hook的應用
|
ENIX007
高階會員 發表:28 回覆:274 積分:185 註冊:2003-11-27 發送簡訊給我 |
|
chtai
高階會員 發表:68 回覆:238 積分:116 註冊:2004-05-21 發送簡訊給我 |
感謝ENIX007兄的回應 :p
其實有時候我自己也會遇到這問題,
只要用滑鼠在編輯區再點一下,應該就能解決了。
若還是不行,在這兩支程式之間來回切換一下應該就可以了。
還是不行? 拍謝,我真的想不到為什麼了 Q_________Q 究其原因,應該是我以下程式碼的問題
HWND HWnd = formMain->Handle; do { if( !(HWnd = GetWindow(HWnd, GW_HWNDNEXT)) ) break; } while( !(GetWindowLong(HWnd, GWL_STYLE) & WS_BORDER) || !IsWindowVisible(HWnd) || HWnd == ListBox1->Handle || HWnd == cbClass->Handle ); if( IsZoomed(HWnd) ) ShowWindow(HWnd, SW_SHOWMAXIMIZED); // 若是最大化, 就最大化顯示 else ShowWindow(HWnd, SW_SHOW); // 不然就直接顯示 SystemParametersInfo(SPI_SETFOREGROUNDLOCKTIMEOUT, 0, 0, SPIF_SENDCHANGE); SetForegroundWindow(HWnd);這段程式碼是根據Z-order找出我的下一個視窗,若它是有邊界且可見的, 就帶到前面。 可是這在一些情況下會失敗, 例如我在自己這支程式的視窗點一下,再去雙擊字串,似乎就會送到自己了:p 例如我準備要送出時,剛好有些別的程式的pop-up跑出來,也會失敗。 例如ENIX007兄所提及的問題 :p 雖然這些問題,理論上,只要再切回目的視窗的編輯區再來雙擊字串,應該就解決了,可是這使得程式有點不好用,卻是不爭的事實 Q_Q 很可惜小弟是初次接觸跟windows相關的API,實在是力有未逮, 真的很誠心的希望各位站上的前輩同好們, 能對於上面那段找視窗判斷視窗的程式碼,或是這支程式的其他程式碼, 給與小弟一些幫助與意見。 當然小弟也有拜讀之前 conundrum 前輩提供的相關link,以及站上其他的文章,只是還在試著吸收,還在摸索當中哩 ~~:) -- http://www.csie.nctu.edu.tw/~chtai/software.html 好用免費軟體的收集網頁,歡迎大家跟我分享或一同推廣免費軟體。 若您覺得這網頁不錯,也歡迎您將它傳出去 :) 發表人 - chtai 於 2004/09/07 16:12:00
------
My Web: http://nelson.csie.us My Blog: http://blog.nelson.csie.us |
conundrum
尊榮會員 發表:893 回覆:1272 積分:643 註冊:2004-01-06 發送簡訊給我 |
http://delphi.ktop.com.tw/topic.php?topic_id=27086
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=34934
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=48943
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=47135
http://delphi.ktop.com.tw/topic.php?topic_id=43481
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=48753
http://delphi.ktop.com.tw/topic.php?topic_id=29551
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=31987
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=33312
http://delphi.ktop.com.tw/topic.php?method=AddScore14&topic_id=29172&ToMemberID=761
http://delphi.ktop.com.tw/topic.php?method=AddScore14&topic_id=19726&ToMemberID=2561 chtai 兄 你好
庵沒那摸老把
引言: 好用免費軟體的收集網頁,歡迎大家跟我分享或一同推廣免費軟體。我尬意 自由軟體 發表人 - conundrum 於 2004/09/07 23:05:12 |
pwipwi
版主 發表:68 回覆:629 積分:349 註冊:2004-04-08 發送簡訊給我 |
chtai你好:
我看到了之前幫你解答問題的程式...很可惜我提供的碼在這裡作用不良。看過你的源碼後,我把程式做了一些修改來解決這個問題,碼就 class="code">
//--------------------------------------------------------------------------- #ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include
|
pwipwi
版主 發表:68 回覆:629 積分:349 註冊:2004-04-08 發送簡訊給我 |
忘了一小段碼,
如果要適用於PCMan,上面的程式在key_event那邊換成
if(Caption.AnsiPos("PCMan")) { keybd_event(VK_MENU, 0, 0, 0); // 按下 Alt keybd_event(80, 0, 0, 0); // 按下 P keybd_event(80, 0, KEYEVENTF_KEYUP, 0); // 放開 P keybd_event(VK_MENU, 0, KEYEVENTF_KEYUP, 0); // 放開 Alt } else { keybd_event(VK_CONTROL, 0, 0, 0); // 按下 Ctrl keybd_event(86, 0, 0, 0); // 按下 V keybd_event(86, 0, KEYEVENTF_KEYUP, 0); // 放開 V keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0); // 放開 Ctrl }話說回來,這真是個好用的程式~~ (如果加上新增文字的使用者介面就更棒了,這樣就可以隨時加入新的文字) |
chtai
高階會員 發表:68 回覆:238 積分:116 註冊:2004-05-21 發送簡訊給我 |
引言: 話說回來,這真是個好用的程式~~ (如果加上新增文字的使用者介面就更棒了,這樣就可以隨時加入新的文字) >>< face="Verdana, Arial, Helvetica"> 感謝pwipwi大哥的指教 :p 您提供的解法目前實驗結果是可行的。 有個問題請教如下:public: // User declarations std::auto_ptr為什麼這裡要用 std::auto_ptr<....> 呢? 有什麼特別用意或功能嗎? 其實新增文字的介面已經有了,只是之前小弟覺得用處似乎不大所以就拿掉了,source code裡的 Unit2 就是新增文字的介面了, 小弟採用您的code之後重新上傳的檔案已加上 新增字串 的功能了 :p -- http://www.csie.nctu.edu.tw/~chtai/software.html 好用免費軟體的收集網頁,歡迎大家跟我分享或一同推廣免費軟體。 若您覺得這網頁不錯,也歡迎您將它傳出去 :) 發表人 - chtai 於 2004/09/08 12:19:30
------
My Web: http://nelson.csie.us My Blog: http://blog.nelson.csie.us |
pwipwi
版主 發表:68 回覆:629 積分:349 註冊:2004-04-08 發送簡訊給我 |
不好意思,改了你的碼,其實你原來的碼已經可以正常運作了 < class="code">
std::auto_ptr
|
chtai
高階會員 發表:68 回覆:238 積分:116 註冊:2004-05-21 發送簡訊給我 |
引言: 另外,OnFormClose不保證在程式關閉前一定會被執行到。一般建議是不用OnFormClose做delete物件的動作,而是用標準的解構子~formMain。有人問: 在程式前,有那種狀況是~formMain會被呼叫而OnFormClose不被呼叫嗎?... 這是有的(但我忘了是那個狀況...) 而我個人覺得最好的做法是直接在物件裡結合>>< face="Verdana, Arial, Helvetica"> 感謝pwipwi大哥指教,這樣我又多學了一樣東西了,STL真是博大精深呢~ 另外又有個問題想請教您了,小弟根據您的程式如法炮製, 寫出了以下的codeelse if(Caption.LowerCase().AnsiPos("putty")) { keybd_event(VK_SHIFT, 0, 0, 0); keybd_event(VK_INSERT, 0, 0, 0); keybd_event(VK_INSERT, 0, KEYEVENTF_KEYUP, 0); keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0); }原本我是希望用 PuTTY 或是 pputty 的人也可以使用, 所以我就送出 Shift Ins 鍵,這是它們貼上的熱鍵, 可是卻發現這樣做無法成功哩~ (我也試過用 mouse_event 送出右鍵,同樣失敗了) 不知您或是其他前輩是否知道有可能是為什麼呢 ? -- http://www.csie.nctu.edu.tw/~chtai/software.html 好用免費軟體的收集網頁,歡迎大家跟我分享或一同推廣免費軟體。 若您覺得這網頁不錯,也歡迎您將它傳出去 :)
------
My Web: http://nelson.csie.us My Blog: http://blog.nelson.csie.us |
conundrum
尊榮會員 發表:893 回覆:1272 積分:643 註冊:2004-01-06 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |