zoukankan      html  css  js  c++  java
  • .NET中调用COM的一些问题

    因为不想花太多的时间去迁移VB6写的COM组件到.NET,所以考虑用InterOp,导入很顺利,声明也可以,但在获取窗口的Handle(.NET)的时候,卡住了。

    问题1:handle
    因为COM中声明的hwnd为long,对应.NET的integer,但.NET中的handle类型为IntPtr,是指针,后来查看了相关文档,应该这样处理(VB.NET):

    objYourCOM.hwnd=objYourDOTNET.IntPtr.ToInt32

    问题2:multi-thread
    要在VB6里面实现安全线程是比较困难的事情,为了最大限度榨取.NET的潜力,我把多线程部分挪到.NET中实现,实际上,VB.NET中的多线程调用跟VB6的很类似,都是用AddressOf,不过差别在于:VB6中必须声明为公共Function,VB.NET中要声明为Sub,私有共有皆可。

        Private t As Threading.Thread
        Private WithEvents m As MyObject


        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            m.ParentHwnd = Me.Handle.ToInt32
            t = New Threading.Thread(AddressOf m.YourFunction)
            t.Start()
        End Sub


    稍后我会介绍怎样把VB6的代码迁移到VB.NET,虽然很多人都谈过,但我会把实际项目代码作为例子,覆盖面比较广,应该能让大家更好地认识.NET。

  • 相关阅读:
    Android.02.Button
    Android.01. TextView
    Android.00.IDEA中Android开发环境搭建
    Java34.Marven
    CSS 滚动条样式
    不常用的HTML和CSS 记录
    JS 规则
    svg转化成canvas以便生成base64位的图片
    ArcGIS Server 10.1 安装教程
    ArcGis API JS 4.X 本地化部署
  • 原文地址:https://www.cnblogs.com/unruledboy/p/18786.html
Copyright © 2011-2022 走看看