兔八哥极品软件园    运行: 4512天 | 文章:640 篇 | 评论:574 条 | 碎语:1条

C#实现自动注册Dll(OCX)控件的两种方法

作者:admin 发布于:2012-3-30 12:57 Friday 分类:.NET

尽 管MS为我们提供了丰富的.net framework库,我们的程序C#开发带来了极大的便利,但是有时候,一些特定功能的控件库还是需要由第三方提供或是自己编写。当需要用到Dll引用 的时候,我们通常会通过“添加引用”的方式将它们纳入到项目中,然后就可以像使用自己的类一样方便的使用它们了。但是,有些Dll库(OCX)文件是需要 注册到Windows注册表后才能正常添加和使用的。本文介绍两种为Dll库(OCX)自动注册的方法,为大家提供参考。

首先,大家都知道在Windows的“运行”中,输入“Regsvr32.exe 路径”这样的方法来手动注册Dll控件(OCX),显示这种方法对于程序的自动化部署等带来极大的不便,因此,今天我们着重介绍如何用C#实现自动注册。

方法一:调用Regsvr32法

既然可以在运行栏中输入“Regsvr32.exe 路径”的方法来注册,那么,一定可以在C#程序...

阅读全文>>

标签: c# dll ocx

评论(0) 引用(52) 浏览(23869)

VS自带的安装项目:已经安装了该产品的另一个版本解决方法

作者:admin 发布于:2012-3-29 18:17 Thursday 分类:.NET

重新安装问题:安装了产品的另一个版本

假如你已经在一台机器上安装了一个应用 程序, 版本1.0,后来这个应用程序有了新版本2.0,你想不用卸 载机器上?有1.0版本,运行2.0的安装程序时自动卸载以 前的版本,然后安装新版本。

其实Visual Studio对此功能提供了很好的支持。

具体做法是在Visual Studio中打开安装项目,在 解决方案资源管理器 中选中安装项目的项目文件,切换到 属性 窗口。
Version属性设置成比?先大的数,比如2.0,按 回车,这时会弹出一对话框,询问是否更改ProductCode, 选择是;
 然后将RemovePreviousVersions属性设置为True. 最后重新编译安装项目即可。

阅读全文>>

评论(0) 引用(526) 浏览(70337)

c#多线,程子线程委托主线程MessageBox.Show()方法

作者:admin 发布于:2012-3-29 14:38 Thursday 分类:.NET

一、MessageBox.Show(this,e.ErrorMsg, "错误提示", MessageBoxButtons.OK,MessageBoxIcon.Error);

这种情况是在这个方法是以事件形式来给另一线程操作的吧!


二、MessageBox过程放到 form里面,用一个函数封装起来

在线程里面 BeginInvoke它

还有,MessageBox.Show有个参数,是IWin32Window owner
MSDN里面这么说:

可 以使用 owner 参数指定一个特定对象,该对象实现 IWin32Window接口,而该接口充当对话框的顶级窗口和所有者。消息框是一种模式对话框,这表示除了该模式窗体上的对象之外,不能对其他对象进行 任何输入(通过键盘或鼠标单击)。该程序必须隐藏或关闭有模式窗体(通常是响应某个用户操作),然后才能对另一窗体进行输入。

在消息框中最多...

阅读全文>>

标签: MessageBox

评论(0) 引用(51) 浏览(33279)

子线程使用委托与UI线程的通信

作者:admin 发布于:2012-3-29 14:23 Thursday 分类:.NET

由于项目中存在这样的载入的画面:在界面上有显示载入信息的Label控件和进度条,如果采用单线程则在载入数据的时候UI界面会被锁死,造成假死的感觉。为了给一个更友好的界面,因此有必要引入多线程技术,使得软件更加“人性化”。

但随后在子线程中访问界面上的控件的时候会出现异常,不能操作主线程所控制的UI界面。看来这得用到委托技术了!

首先我们定义委托:

public delegate void loadin(string data, int progress);

定义委托用delegate关键字,随后跟着一个返回值(这里void就是没有返回值了)loadin是委托名,后面带着两个参数,分别代表显示载入的数据和载入进度条的数值!

在窗体的Load事件里面我们定义一个子线程,用于在后台载入数据并显示载入情况。

定义线程:

ThreadStart ts = newThreadStart(Downin);...

阅读全文>>

标签: 委托

评论(0) 引用(112) 浏览(21060)

(模态)子线程中的MessageBox在主线程之上显示

作者:admin 发布于:2012-3-29 14:07 Thursday 分类:.NET

1.创建类,继承接口IWin32Window

public class WindowWrapper : System.Windows.Forms.IWin32Window
{
        private System.IntPtr _hwnd;
        public WindowWrapper(System.IntPtr handle)
        {
            _hwnd = handle;
        }
        public System.IntPtr Handle
        {
            get { return _hwnd; }
        }
} 

2.然后封装系统获取主窗体API

[System. Runtime. InteropServices. DllImport ( "user32")]
public st...

阅读全文>>

标签: MessageBox

评论(0) 引用(115) 浏览(49025)


Powered by 兔八哥极品软件 苏ICP备12049267号 sitemap