2013-03-16 36 views
0

Clipboard.getText()不刷新速度不夠快,我使用此代碼C#

int X = Cursor.Position.X; 
int Y = Cursor.Position.Y; 
DoMouseClick(X, Y); 
SendKeys.Send("^a"); 
SendKeys.Send("^c"); 
clipText = Clipboard.GetText(); 

public void DoMouseClick(int x,int y) 
{ 
    int X = Cursor.Position.X; 
    int Y = Cursor.Position.Y; 
    mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, (uint)x , (uint)y, 0, 0); 
} 

鼠標下的複製文本,並將其保存爲「clipText」。

這裏的問題是,我沒有從剪貼板中得到新的文本,但我得到的文本,我先前複製。但是如果我稍後在程序中調用Clipboard.text(),或者如果我按下CRTL + P,我會得到正確的文本(我用上面的代碼複製的文本)。

有沒有辦法刷新cliaboard,所以我可以得到最新的文字。

+0

你可以發佈DoMouseClick嗎? – VladL 2013-03-16 21:44:39

+0

public void DoMouseClick(int x,int y) int X = Cursor.Position.X; int Y = Cursor.Position.Y; mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP,(uint)x,(uint)y,0,0); } – Bertoncelj1 2013-03-16 21:49:02

+0

[在沒有延遲的情況下放入和退出剪貼板]的可能重複(http://stackoverflow.com/questions/15441188/put-in-and-get-out-of-clipboard-in-a -loop-without-delay) – 2013-03-16 21:54:58

回答

0

這就是爲什麼SendKeys類有SendWait() method。直到目標窗口實際處理了擊鍵,它纔會返回。

+0

謝謝你回答我正在使用這段代碼:檢查剪貼板是否發生了變化:while(cliText.Equals(Clipboard.GetText())) { Thread.Sleep(10); } – Bertoncelj1 2013-03-17 13:33:12