2013-05-09 45 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

相关问题