我想將更改保存在剪貼板中。所以我註冊了我的應用程序以獲取剪貼板發生的所有更改。剪貼板監聽器事件被調用兩次
使用
[DllImport("User32.dll")]
protected static extern bool AddClipboardFormatListener(int hwnd);
然後
protected override void WndProc(ref Message m)
{
switch (m.Msg)
{
case WM_CLIPBOARDUPDATE:
OnClipboardChanged();
break;
...
}
}
private void OnClipboardChanged()
{
if (Clipboard.ContainsText())
{
MessageBox.Show(Clipboard.GetText().ToString());
}
}
存在的問題是: 當從如Visual Studio或Firefox,所述OnClipboardChanged()的應用程序複製文本功能將被調用兩次或3倍有時。
我認爲那些應用程序會以不同的格式將數據寫入剪貼板,這就是爲什麼該函數被多次調用。 但是,我將如何防止保存相同的數據,因爲OnClipboardChanged()被多次調用?
Message(m)參數中是否存在與寫入剪貼板的每個實例相同的屬性?也許是ID?如果是這樣,也許你可以忽略這個消息,如果你已經處理了該消息/ ID? –
嗨鮑勃, 我找不到任何有關msg id或類似的東西..這是一個真正的好主意,並且如果每個msg都有一個「call id」謝謝 – lebhero