如何在Delphi中获得CWnd对象的窗口句柄?
问题描述:
我有史诗编辑器返回的句柄窗口(见下方plugin_1 Java代码):如何在Delphi中获得CWnd对象的窗口句柄?
int handle = com.arbortext.epic.Application.getActiveWindow().getNativeHandle();
事实上,这种手柄CWnd *
指针。它直接传输到本地插件2不起作用。相反,我们必须使用dll与MFC支持呼叫
HWND __stdcall GetHandle(CWnd *cp)
{
HWND hWnd = cp->GetSafeHwnd();
return hWnd;
}
我怎样才能重写这个代码在没有MFC的Delphi?我的意思是从指针提取窗口句柄到CWnd
对象。
答
你不能用安全的方式在Delphi中编写它。这是因为CWnd
是一个C++类,您不能将C++类导入到Delphi代码中。我想你可以对CWnd
的内存布局进行逆向工程,但我会对这种方法的智慧表示怀疑。我的建议是坚持使用MFC DLL。
从VC++以外的任何语言使用的DLL中导出MFC类类型对他们是非常短视的。 – 2012-04-05 22:25:39