線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1215
推到 Plurk!
推到 Facebook!

如何在已開啟的Word的最後加上一段文字~~~

尚未結案
hunggto
一般會員


發表:9
回覆:10
積分:3
註冊:2003-05-30

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-10-14 11:33:20 IP:211.76.xxx.xxx 未訂閱
如何利用BCB在已開啟的Word的最後加上一段文字~~~
gemi0305
版主


發表:81
回覆:564
積分:629
註冊:2003-05-11

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-10-16 00:26:09 IP:61.224.xxx.xxx 未訂閱
試試以下程式碼: 不過要先開word,不然抓不到Handle~ < class="code"> #include #pragma hdrstop #include "Unit1.h" #include "Clipbrd.hpp" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { HWND Word = FindWindow(NULL,"文件1 - Microsoft Word"); //這裡可改成你word文件的title if (ShowWindow(Word,SW_SHOWNORMAL)) { TClipboard *pClipboard = new TClipboard; pClipboard->AsText="Hello Word!!"; BringWindowToTop(Word); keybd_event(VK_CONTROL, 0, 0, 0); keybd_event(VK_END, 0, 0, 0); keybd_event(VK_END, 0, KEYEVENTF_KEYUP, 0); keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0); keybd_event(VK_RETURN, 0, 0, 0); keybd_event(VK_RETURN, 0, KEYEVENTF_KEYUP, 0); keybd_event(VK_CONTROL, 0, 0, 0); keybd_event('V', 0, 0, 0); keybd_event('V', 0, KEYEVENTF_KEYUP, 0); keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0); } else ShowMessage("Open Word first, please!。"); } 國泰平安
hunggto
一般會員


發表:9
回覆:10
積分:3
註冊:2003-05-30

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-10-16 01:19:51 IP:211.76.xxx.xxx 未訂閱
引言: 可以不用改檔名就可以抓到嗎~~~~~ 可以大概解釋一下嗎?? 有點懂~~~可是又不太懂~~~~@@
gemi0305
版主


發表:81
回覆:564
積分:629
註冊:2003-05-11

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-10-16 09:45:24 IP:210.66.xxx.xxx 未訂閱
這是FindWindow()的用法,    The FindWindow function retrieves the handle to the top-level window whose class name and window name match the specified strings. This function does not search child windows.    
HWND FindWindow(        LPCTSTR lpClassName,        // pointer to class name
    LPCTSTR lpWindowName         // pointer to window name
   );             
可以利用class name或是window name來抓程式的handle, 但是因為很多程式其實都有相同的class name,像是「網芳」和「我的電腦」 你用classname的方法,雖然可以不用指定檔名就可以抓到, 但是如果你同時開了兩個word,那它該抓那一個呢?? 所以用class name雖然方便,但不夠精準, 改用window name來抓的話,就可以避免上述的事情發生, 如果你想試試抓classname的方式, 把FindWindow那行改成這樣
hunggto
一般會員


發表:9
回覆:10
積分:3
註冊:2003-05-30

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-10-16 15:36:48 IP:211.76.xxx.xxx 未訂閱
BringWindowToTop(Word); keybd_event(VK_CONTROL, 0, 0, 0); keybd_event(VK_END, 0, 0, 0); keybd_event(VK_END, 0, KEYEVENTF_KEYUP, 0); keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0); keybd_event(VK_RETURN, 0, 0, 0); keybd_event(VK_RETURN, 0, KEYEVENTF_KEYUP, 0); keybd_event(VK_CONTROL, 0, 0, 0); keybd_event('V', 0, 0, 0); keybd_event('V', 0, KEYEVENTF_KEYUP, 0); keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0); ~~~~這幾行什麼意義?~~~~ 我看了說明檔可是還是不懂~~~~~@@~~ ~~~~可以改成在游標上的那個位址開始插入文字嗎 ? 發表人 - hunggto 於 2003/10/16 15:56:00
gemi0305
版主


發表:81
回覆:564
積分:629
註冊:2003-05-11

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-10-16 20:45:55 IP:61.224.xxx.xxx 未訂閱
引言: BringWindowToTop(Word); 把handle視窗帶到最上層 keybd_event(VK_CONTROL, 0, 0, 0); keybd_event(VK_END, 0, 0, 0); keybd_event(VK_END, 0, KEYEVENTF_KEYUP, 0); keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0); 模擬按下Ctrl End,就是把游標移到內文中最後一個字元。 keybd_event(VK_RETURN, 0, 0, 0); keybd_event(VK_RETURN, 0, KEYEVENTF_KEYUP, 0); 模擬按下Enter鍵 keybd_event(VK_CONTROL, 0, 0, 0); keybd_event('V', 0, 0, 0); keybd_event('V', 0, KEYEVENTF_KEYUP, 0); keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0); 模擬按下Ctrl V,就是「貼上」剛剛我們存到剪貼簿的字串 ~~~~這幾行什麼意義?~~~~ 我看了說明檔可是還是不懂~~~~~@@~~ ~~~~可以改成在游標上的那個位址開始插入文字嗎 ? 那就只要模擬按下Ctrl V「貼上」就好~ < face="Verdana, Arial, Helvetica"> 國泰平安
系統時間:2024-04-26 22:18:31
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!