2016年3月12日 星期六

一個構思,二十四小時的堅持

昨天凌晨想到希望能在 PowerDesigner RQM ,讓使用者可以選取某一字串並把它傳到 Clipboard ,VBS 在到 Clipboard 裡取出,然後建立 Glossary Class

User 選取字串後,按右鍵點選選單上的功能,透過 SendKeys("^{c}") 可以模擬 copy 的動作,並將該字串送到 Clipboard ,但發現VBS 並不支援 Clipboard 物件,且執行完SendKeys("^{c}") 馬上去進行讀取動作,好像 SendKeys("^{c}") 也有問題,一定要有延遲的指令才可以, VBS  也無Sleep 指令

經過一整天的測試和尋找資料,終於找到解決的方法,方法如下 

選取字串後執行

Dim WshShell,objHTM, ClipboardText ,strClipboard

   set WshShell= CreateObject("WScript.Shell") 

   WshShell.SendKeys("^{c}")  ‘將選取的字串送到 Clipboard  

  WshShell.Run " ",0   '一定要執行,資料才會真的寫到Clipboard ,延遲時間,利用空字串,就不會一定執行一個程式

   '確實可以取得 Clipboard 裡的資料,因為vbs 沒支援使用 Clipboard 物件,所以利用htmlfile 來間接取得Clipboard 的資料

   Set objHTM = CreateObject("htmlfile")

  strClipboard = objHTM.ParentWindow.ClipboardData.GetData("Text")    

  ClipboardText=""+strClipboard+"

msgbox  ClipboardText

   set WshShell=Nothing

   set objHTM=Nothing

經過二十四小時馬拉松式的測試,終於找到的解法方法,真是大快人心

沒有留言:

張貼留言