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

請問如何得知Ctrl C +Ctrl V已經完整的複製好文字??

尚未結案
qubeley2004
一般會員


發表:52
回覆:71
積分:24
註冊:2004-07-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-07-07 20:21:58 IP:211.76.xxx.xxx 未訂閱
因為要複製pdf上面的文字,我是使用Ctrl C + Ctrl V和AcroPDFLib_OCX去模擬    原本在於Ctrl C 和 Ctrl後面加上一個轉換到另外一個form的指令,可是變成    還沒有複製好文字就已經轉換過去了..    請問要如何讓他知道Ctrl C +Ctrl V已經完整的複製好了呢??     
void __fastcall TfmPdf::N1Click(TObject *Sender)
{
     AcroPDF1->SetFocus();
    keybd_event(VK_CONTROL, 0, 0, 0); // 按下 Ctrl
    keybd_event(65, 0, 0, 0); // 按下 A
    Sleep(10);
    keybd_event(65, 0, KEYEVENTF_KEYUP, 0); // 放開 A
    keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0); // 放開 Ctrl
    Sleep(10);        keybd_event(VK_CONTROL, 0, 0, 0); // 按下 Ctrl
    keybd_event(67, 0, 0, 0); // 按下 C
    keybd_event(67, 0, KEYEVENTF_KEYUP, 0); // 放開 C
    keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0); // 放開 Ctrl
    Sleep(10);        form1->Show();
}
 
s1937kk
一般會員


發表:2
回覆:15
積分:8
註冊:2004-11-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-07-07 21:09:15 IP:61.219.xxx.xxx 未訂閱
你好,這樣的變通方式或許可行吧^^" 請參考看看... #include "Clipbrd.hpp"//引入標頭檔
void __fastcall TfmPdf::N1Click(TObject *Sender)
{
    int iTimeOut = 0;
    Clipboard()->Clear();//清空剪貼簿        AcroPDF1->SetFocus();
    keybd_event(VK_CONTROL, 0, 0, 0); // 按下 Ctrl
    keybd_event(65, 0, 0, 0); // 按下 A
    Sleep(10);
    keybd_event(65, 0, KEYEVENTF_KEYUP, 0); // 放開 A
    keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0); // 放開 Ctrl
    Sleep(10);        keybd_event(VK_CONTROL, 0, 0, 0); // 按下 Ctrl
    keybd_event(67, 0, 0, 0); // 按下 C
    keybd_event(67, 0, KEYEVENTF_KEYUP, 0); // 放開 C
    keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0); // 放開 Ctrl
    Sleep(10);
    
    while (Clipboard()->HasFormat(CF_TEXT) == false)//判斷剪貼簿內容是否為文字格式
    {
        Application->ProcessMessages();
        Sleep(50);            if (iTimeOut > 50)//逾時
        {
            ShowMessage("複製發生錯誤!");
            break;    
        }
        iTimeOut   ;
    }        form1->Show();
}
發表人 - s1937kk 於 2005/07/07 21:11:02 發表人 - s1937kk 於 2005/07/07 21:14:07
qubeley2004
一般會員


發表:52
回覆:71
積分:24
註冊:2004-07-13

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-07-08 16:37:09 IP:211.76.xxx.xxx 未訂閱
引言: 你好,這樣的變通方式或許可行吧^^" 請參考看看... #include "Clipbrd.hpp"//引入標頭檔
void __fastcall TfmPdf::N1Click(TObject *Sender)
{
    int iTimeOut = 0;
    Clipboard()->Clear();//清空剪貼簿        AcroPDF1->SetFocus();
    keybd_event(VK_CONTROL, 0, 0, 0); // 按下 Ctrl
    keybd_event(65, 0, 0, 0); // 按下 A
    Sleep(10);
    keybd_event(65, 0, KEYEVENTF_KEYUP, 0); // 放開 A
    keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0); // 放開 Ctrl
    Sleep(10);        keybd_event(VK_CONTROL, 0, 0, 0); // 按下 Ctrl
    keybd_event(67, 0, 0, 0); // 按下 C
    keybd_event(67, 0, KEYEVENTF_KEYUP, 0); // 放開 C
    keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0); // 放開 Ctrl
    Sleep(10);
    
    while (Clipboard()->HasFormat(CF_TEXT) == false)//判斷剪貼簿內容是否為文字格式
    {
        Application->ProcessMessages();
        Sleep(50);            if (iTimeOut > 50)//逾時
        {
            ShowMessage("複製發生錯誤!");
            break;    
        }
        iTimeOut   ;
    }        form1->Show();
}
發表人 - s1937kk 於 2005/07/07 21:11:02 發表人 - s1937kk 於 2005/07/07 21:14:07
哈~原來還可以這樣使用~~ 謝謝您的方法,我把時間調大再加上一個Application->ProcessMessages(); 於我後面的程式碼就可以使用了,感謝~
系統時間:2024-04-26 12:02:17
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!