【问题标题】:Send unsaved image or image from clipboard to to a program as a parameter将未保存的图像或图像从剪贴板发送到程序作为参数
【发布时间】:2013-05-09 22:06:53
【问题描述】:

问题可能写得不好。

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

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

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

【问题讨论】:

    标签: vb.net image parameters clipboard


    【解决方案1】:

    “有没有办法知道程序是否已完全加载?”

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

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

    所以你可以这样做:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-11
      • 1970-01-01
      • 2021-01-14
      • 1970-01-01
      相关资源
      最近更新 更多