问题可能写得不好。
我有一个图像查看程序,我希望能够将图像发送到另一个程序,如Photoshop。
如果图像有保存的源,我可以这样做,但无法找到将未保存的图像发送到另一个程序的方法。 目前我正在将图像添加到剪贴板,然后将粘贴命令发送到加载的应用程序 - 这是在程序启动后执行粘贴命令的条件下工作的。对于MSPaint,一个简单的线程睡眠就可以了。但是对于那些花费不可预测且长时间打开的程序 - 比如gimp和Photoshop - 除非我设置足够高的睡眠值,否则这不起作用。
所以我的问题是 - 我可以将剪贴板中的图像作为参数发送到程序,还是有办法以某种方式知道程序是否已完全加载? 我已经考虑过首先将图像保存为临时图像并发送 - 但我宁愿程序在按下保存时不会尝试保存到临时目录。
答案 0 :(得分:1)
“有没有办法以某种方式知道程序是否已完全加载?”
我认为最接近的通用答案是使用Process.WaitForInputIdle():
使用WaitForInputIdle()强制处理您的应用程序 等到消息循环返回空闲状态。当一个 正在执行用户界面的进程,其消息循环执行 每次通过操作将Windows消息发送到进程时 系统。然后,该过程返回到消息循环。一个过程是 当它在等待内部消息时,据说处于空闲状态 消息循环。 此状态非常有用,例如,当你的状态 应用程序需要等待启动过程才能完成创建 应用程序与之通信之前的主窗口 窗口。强>
所以你可以这样做:
Dim P As Process = Process.Start("someAppHere")
P.WaitForInputIdle()
请记住,并非所有应用程序都以相同的方式加载,因此应用程序在完全加载之前可能会进入“空闲”状态......这只取决于它的设计方式。