2013-05-09 50 views
0

問題可能寫得不好。將未保存的圖像或圖像從剪貼板發送到程序作爲參數

我有一個圖像查看程序,我希望能夠發送圖像到另一個程序,如Photoshop。

我可以做到這一點,如果圖像有一個保存的來源,但不能找出一種方式發送未保存的圖像到另一個程序。 目前我正在將圖像添加到剪貼板,然後向加載的應用程序發送一個粘貼命令 - 這是在程序啓動後執行粘貼命令的情況下工作的。對於MSPaint,一個簡單的線程睡眠很好。但對於那些需要很長時間才能開啓的程序,比如gimp和Photoshop,除非設置足夠高的睡眠值,否則這種方式無效。

所以我的問題是 - 我可以將剪貼板中的圖像作爲參數發送給程序,還是有辦法以某種方式知道程序是否已完全加載? 我想過先將圖像保存爲臨時圖像併發送 - 但我寧願程序在按下保存按鈕時不要嘗試保存到臨時目錄。

回答

1

「有沒有辦法以某種方式知道程序是否已完全加載?」

我認爲最接近的通用的答案,你會得到的是使用Process.WaitForInputIdle()

使用WaitForInputIdle()來強制應用程序的處理 等到消息循環返回到空閒狀態。當正在執行帶有用戶界面的 進程時,每次通過運行 系統將Windows消息發送到進程時,其消息循環都會執行 。該過程然後返回到消息循環。一個進程是 表示處於空閒狀態時它正在等待消息循環內的消息 。 此狀態非常有用,例如,當您的應用程序需要等待啓動進程在應用程序與該窗口通信之前完成其主窗口的創建。

所以,你可以這樣做:

Dim P As Process = Process.Start("someAppHere") 
    P.WaitForInputIdle() 

請記住,但是,並不是所有的應用程序加載相同的方式,使之前完全加載應用程序可能會進入「閒置」狀態..它只取決於它的設計。

+0

哇謝謝,這比我期待的要簡單得多。 – 2013-05-15 12:06:40

相關問題