将未保存的图像或图像从剪贴板发送到程序作为参数

时间:2013-05-09 11:53:21

标签: vb.net image parameters clipboard

问题可能写得不好。

我有一个图像查看程序,我希望能够将图像发送到另一个程序,如Photoshop。

如果图像有保存的源,我可以这样做,但无法找到将未保存的图像发送到另一个程序的方法。 目前我正在将图像添加到剪贴板,然后将粘贴命令发送到加载的应用程序 - 这是在程序启动后执行粘贴命令的条件下工作的。对于MSPaint,一个简单的线程睡眠就可以了。但是对于那些花费不可预测且长时间打开的程序 - 比如gimp和Photoshop - 除非我设置足够高的睡眠值,否则这不起作用。

所以我的问题是 - 我可以将剪贴板中的图像作为参数发送到程序,还是有办法以某种方式知道程序是否已完全加载? 我已经考虑过首先将图像保存为临时图像并发送 - 但我宁愿程序在按下保存时不会尝试保存到临时目录。

1 个答案:

答案 0 :(得分:1)

“有没有办法以某种方式知道程序是否已完全加载?”

我认为最接近的通用答案是使用Process.WaitForInputIdle()

  

使用WaitForInputIdle()强制处理您的应用程序   等到消息循环返回空闲状态。当一个   正在执行用户界面的进程,其消息循环执行   每次通过操作将Windows消息发送到进程时   系统。然后,该过程返回到消息循环。一个过程是   当它在等待内部消息时,据说处于空闲状态   消息循环。 此状态非常有用,例如,当你的状态   应用程序需要等待启动过程才能完成创建   应用程序与之通信之前的主窗口   窗口。

所以你可以这样做:

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

请记住,并非所有应用程序都以相同的方式加载,因此应用程序在完全加载之前可能会进入“空闲”状态......这只取决于它的设计方式。