- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在将一些函数转换为与 Windows 7 功能相关的 DLL。我无法通过 DLL 传递 TForm,因此我需要传递它的句柄。除了,一旦我在另一侧有了该句柄,如何将其重建回 TForm 实例?另外,通过 Delphi DLL 传递句柄 (HWND) 以兼容从 C# 调用的适当方法是什么?
如果不可能,那么我至少需要知道如何仅使用 Windows API 来更改窗口的颜色,而不引用 TForm。目标是在这个 DLL 中,它需要以某种方式改变表单的颜色。将句柄传递给 DLL 没有问题,但是如何使用该句柄来处理该句柄所代表的形式呢?
我具体做的就是将一个 DLL 放在一起,其中包含使 Delphi7 应用程序与 Windows7 兼容所需的一切,例如,绘制玻璃、在任务栏中正确显示多个表单(以及最小化表单)、显示绿色任务栏图标中的进度以及可能涉及的其他内容。但此类工作需要修改表格。我需要能够从 DLL 内进行这些修改。
最佳答案
一般来说,您可以转换 HWND
到 VCL TWinControl
-使用VCL的FindControl()
派生对象指针Controls
中的函数单元。然后您可以检查 TWinControl
是否实际上是一个TForm
使用is
运算符。
然而,正如其他人所说,通过 DLL 边界传递 VCL 对象通常是危险的,如果 EXE 和 DLL 不是使用完全相同的 VCL 版本、RTL 版本、内存管理器等编译的,则可能会导致问题。 VCL 对象安全地越过 DLL 边界,将 DLL 项目更改为 BPL 包项目,并确保在 EXE 和 BPL 中启用动态 RTL。
关于delphi - 如何从句柄获取 TForm 实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8190224/
我想在下面的代码中添加一个distinct。我无法弄清楚确切的语法。提前致谢。 var testdates = (from o in db.FMCSA_ME_TEST_DATA
我是一名优秀的程序员,十分优秀!