如何在Window(Win32)中保留自定义文本

时间:2011-01-04 12:53:32

标签: c++ windows winapi window

我们可以设置窗口文本:

BOOL WINAPI SetWindowText(
  __in      HWND hWnd,
  __in_opt  LPCTSTR lpString
);

这个窗口由另一个应用程序发送

int WINAPI GetWindowText(
  __in   HWND hWnd,
  __out  LPTSTR lpString,
  __in   int nMaxCount
);

我不想更改我的表单标题,但我想在窗口中保留自定义文本,并通过同一程序的另一个实例获取此文本。我怎样才能做到这一点?

3 个答案:

答案 0 :(得分:3)

一种简单的方法是:

  1. 定义您自己的WM_APP message,您的应用的实例A将用于告诉实例B的窗口“将您的私人文本发送给我”。
  2. 当实例B收到此消息时,它可以使用WM_COPYDATA向实例A的窗口发送回复。
  3. 实例A从WM_COPYDATA接收数据并使用它执行所需的操作。
  4. 此方案允许您发送任意数据(只要它不包含指针),前提是数据相当小(比如几KB顶部)。它也很容易实现。它缺少的是安全控制,所以如果你必须防止坏人从你的应用程序中检索这些数据,你将需要使用更重的东西。

答案 1 :(得分:1)

我不确定,但我认为你必须使用openProcess打开其他进程,然后在进程句柄上使用一些函数来获取标题文本。获得文本后,您可以在应用程序中使用它。要获得所需流程的流程,您可以使用EnumProcess,这是一个完整的示例:http://msdn.microsoft.com/en-us/library/ms686701%28v=vs.85%29.aspx

答案 2 :(得分:1)

最简单的方法可能是在WM_APP范围内定义一条Windows消息,并将其从一个实例发送到另一个实例。你必须使用像GlobalAlloc这样的东西进行自己的编组。