delphi 中 findwindow('c# childform Thandle');
好像可以。
找到句柄,不过你的C#子窗口要先实例化。
好像可以。
找到句柄,不过你的C#子窗口要先实例化。
解决方案 »
- PictureBox 控制大小
- vs2008+oracle 开发
- .net 加水印 图片变大很多,原图300 KB 缩略图竟然500kb 什么世道?
- c# webbrowser控件载完一个页面后,如何将此页面的图片从内存中读出?
- 怎样gridview获得鼠标所在列 或者在鼠标点击表头时知道是点了哪个
- 正则表达式的问题,急!!!
- winform窗体不在任务栏显示,用alt+tab切换时的图标怎么改,改来改去总是显示默认的,谢谢。
- c#初学者的疑惑
- 抓取到网页内容后的分页问题
- 求助:如何解决c#多线程写入sqlite的 SQLite error (5): database is locked 错误?
- 字节的前位为224,是什么字符??
- 一个关于DataGridView控件的问题~~
2. 用C#创建DLL类库。 New->Project->Visual C#->Class Library
3. 定义一个接口IA,并且公开为COM接口。这个接口作为Delphi调用子画面的COM接口 Sample
[ComVisible(true)]
[Guid("51929553-A1A9-49cf-B438-FDFA16FABCA5")]
public interface IA
{ ....}
4. 定义一个接口IB,并且公开为COM接口。这个接口由Delphi主程序实现。
5. 根据需要增加画面,并且实现IA,可以通过IB接口访问主程序。
6. 注册COM组件
7. Delphi创建该COM对象实例,并且将IB实现类传递给子画面8. 主程序通过IA接口访问子画面
步骤1:首先用C#开发一个托管类:
namespace Test
{
public class ClassHello
{
public ClassHello()
{
return;
}
public string GetText()
{
return "Hello word";
}
}
}
-------------------------------------------------------------------------------- 步骤2:使用VC2005开发动态链接库:
1)选择新建MFC DLL;
2)在属性页中 属性配置->常规->公共运行语言库支持->公共语言运行库支持(/clr)
3)在属性页中 属性配置->常规->MFC使用->在共享 DLL 中使用 MFC
4)在此项目中引用 步骤1开发的C#项目
5)添加接口函数如下:
int WINAPI GetHello(wchar_t* r)
{
//声明托管类型
Test::ClassHello^ c=gcnew Tone::Class1();
//从托管类型中获取数据
CString s= c->GetText();
wcscpy(r,s.GetBuffer());
delete c;
return s.GetLength(); }
-------------------------------------------------------------------------------- 步骤3在delphi7中调用步骤2开发的dll
function GetHello(r:pwchar):integer ;stdcall;External 'VCTest.dll'; //声明
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
a:pWchar;
begin
try
getmem(a,256);
gets(a);
Application.MessageBox(a,'从C#中传来的",MB_OK);
freemem(a);
except end;
end; end.