相关疑难解决方法(0)

2 C#进程之间最简单的进程间通信方法是什么?

我想要用C#编写的父进程和子进程之间的通信.它应该是异步的,事件驱动的.我不希望在处理非常罕见的通信的每个进程中运行一个线程.

什么是最好的解决方案?

c# ipc

57
推荐指数
5
解决办法
10万
查看次数

关于VB6/VBA中的CreateObject()的问题

我可以做这个:

Dim fso As New FileSystemObject
Run Code Online (Sandbox Code Playgroud)

或者我可以这样做:

Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Run Code Online (Sandbox Code Playgroud)

我如何知道CreateObject使用什么字符串?例如,我怎么知道使用"脚本"."Scripting.FileSystemObject"的一部分?你去哪儿看?

vb6 vba late-binding createobject

13
推荐指数
1
解决办法
1万
查看次数

为 SAP B1 创建自定义 ActiveX 控件

我正在尝试使用 ActiveX 为 SAP b1 创建自定义控件。

  1. 我创建了 Windows 窗体控件库
  2. 使项目程序集信息 COM 可见(项目属性 => 应用程序 => 程序集信息)
  3. 注册 COM 互操作(项目属性 => 构建)

我的用户控件如下所示:

[ComVisible(false)]
public delegate void OnCheckBoxClickEventHandler(string val);

[ProgId("MyComLib.Controls.TextBoxCheck")]
[ClassInterface(ClassInterfaceType.None)]
[ComSourceInterfaces(typeof(ITextBoxCheckEvents))]
public partial class TextBoxCheckClass : UserControl, TextBoxCheck
{
    public string PlaceHolder
    {
        get
        {
            return textBox1.Text;
        }
        set
        {
            textBox1.Text = value;
        }
    }

    public TextBoxCheckClass()
    {
        InitializeComponent();
    }

    public event OnCheckBoxClickEventHandler OnCheckBoxClick;

    private void checkBox1_CheckedChanged(object sender, EventArgs e)
    {
        textBox1.ReadOnly = checkBox1.Checked;
        OnCheckBoxClick?.Invoke(textBox1.Text);
    }

    private void TextBoxCheck_Load(object sender, …
Run Code Online (Sandbox Code Playgroud)

c# com activex add-on sapb1

13
推荐指数
0
解决办法
412
查看次数

使 C# 类库在 Visual Studio 2022 中 COM 可见

我的最终目标是用 C# 构建一个类库 (Calculator.dll),其中包含可通过 VBA 访问 Excel 的函数。

我本来希望避免注册 dll 的需要,而是在 VBA 代码中使用 Declare Function 语句,但显然这是不可能的,我的研究表明我需要使类库 COM-Visible,然后注册并将其添加为 VBA 项目的引用。在早期的 Visual Studio 版本中,这似乎是单击项目属性对话框中的框的问题,但我在 VS2022 中没有看到该框?!

这些是我对“玩具”示例采取的步骤,以及我遇到的问题。

(1) 我用一个计算类和一个简单的方法来添加两个整数,构建了以下 .dll。由于我们使用 32 位 Excel,因此我将其配置为 x86。

namespace ClassLibraryCalculator
{
    public class Calculate
    {
        public int Add(int a,int b){ return a + b; }
    }
} 
Run Code Online (Sandbox Code Playgroud)

(2) 在命令提示符下,以管理员身份运行,我尝试运行 regsvr32“ClassLibraryCalculator.dll”,但遇到错误“..已加载,但未找到入口点 DllRegisterServer”

经过搜索,据说解决这个问题的方法是修改项目属性,这是(在早期版本的VS中?)一个对话框 在此输入图像描述

带有一个复选框,但我在 Visual Studio 2022 项目属性中没有看到任何与 COM 相关的内容。

.net c# com dll com-interop

3
推荐指数
1
解决办法
2372
查看次数

标签 统计

c# ×3

com ×2

.net ×1

activex ×1

add-on ×1

com-interop ×1

createobject ×1

dll ×1

ipc ×1

late-binding ×1

sapb1 ×1

vb6 ×1

vba ×1