這是我什至認為不可能的事情,但是就這樣。我試圖學習如何在 Visual Basic 中使用 Windows API 來使用系統呼叫,而
uj5u.com熱心網友回復:
聽起來你錯過了一個CloseClipboard(),保持剪貼板鎖定,因為 Windows 認為程式正在讀取或寫入它。這將阻止其他程式使用剪貼板,因為一次只有一個程式可以訪問它。如果 Access 仍然打開,您可以嘗試CloseClipboard在即時視窗中運行,否則,我建議重新啟動。
在這樣的代碼上,始終添加一個錯誤處理程式,該處理程式呼叫CloseClipboard()以防止在發生意外情況時使剪貼板保持打開狀態。請注意,在使用 WinAPI 時,您可能會遇到可能不會呼叫錯誤處理程式的硬崩潰,因此請始終三重檢查您的指標并期待崩潰和重新啟動。
您找到的代碼也未針對 64 位使用進行調整,因此請注意。如果您只是通過敲擊PtrSafe函式來使其作業,您最終可能會得到可能導致 Access 崩潰的無效指標,從而使剪貼板處于打開狀態且無法使用。
您發現的代碼雖然是由 Microsoft 撰寫的,但質量并不是特別好。我建議首先使用EnumClipboardFormats檢查剪貼板上是否有文本,然后僅在剪貼板上確實有文本時才請求文本。
請注意,通過 VBA 使用 WinAPI 很困難,這不是初學者的東西,尤其是在剪貼板方面。
請注意,作業系統如此容易崩潰并不是使用 WinAPI 時應有的態度。您直接與作業系統互動,沒有托管語言提供的任何安全性,并手動使用指標。如果你做了一些無效的事情,它可以而且將會破壞。大多數人使用庫來抽象出危險的東西是有原因的,如果你不這樣做,所有的賭注都沒有了。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/422681.html
標籤:
