代码之家  ›  专栏  ›  技术社区  ›  Brad8118

如何访问进程上的公共字段?C.*

  •  2
  • Brad8118  · 技术社区  · 15 年前

    我正在使用c和process newprocess=process.start(“someprogram.exe”);

    这个someprogram.exe有一个具有公共文本框的窗体。

    我可以用newprocess设置文本框吗? 我希望会有像newprocess.getfield(textfield1)这样的东西。

    在调试过程中,我查看了process api和属性,但没有跳出任何内容。

    编辑: 我有someprogram.exe的源代码,所以我知道文本框字段是公共的。我无法编辑某个程序的源代码。 使用process.start的代码是下传的,如果我可以向新进程传递一些参数,我不想花时间更改它的工作方式。

    我真正的目标是当process.start(“someprogram.exe”)运行时,我可以在文本字段中放置文本,这样我就可以很懒,不必每次都键入用户名和pw。:)

    谢谢

    3 回复  |  直到 15 年前
        1
  •  0
  •   Reed Copsey    15 年前

    您不能直接访问它。

    成员仅在其运行的应用程序中是公共的。不能以这种方式(直接)访问其他应用程序中的类型。

    顺便说一句,这是件好事。如果允许您处理其他应用程序的内部操作,您将能够完全违反几乎任何应用程序中存在的任何安全模型。系统的安全性和稳定性将受到很大影响。

    此方案有两个选项:

    1. 如果另一个应用程序是您的,请将其构建为库,而不是单独的应用程序。直接出示申请表就行了。然后您就可以访问这些类型了。
    2. 使用某种形式的 Interprocess Communication 允许两个进程相互“交谈”,并按要求传递值。 Windows Communication Foundation 这方面做得很好。
        2
  •  2
  •   Community CDub    7 年前
        3
  •  0
  •   Nick    15 年前

    简短的回答可能是不,长的回答可能是。如果打开someprogram.exe并使用spy++,您可能能够收集有关窗口信息的信息,然后向右侧窗口句柄发送一条wm_*消息,该窗口句柄将模拟向该文本框键入文本。

    如果你没有someprogram.exe的源代码,我只会走这条路,这将允许你使用更传统的方法。