我想要用C#编写的父进程和子进程之间的通信.它应该是异步的,事件驱动的.我不希望在处理非常罕见的通信的每个进程中运行一个线程.
什么是最好的解决方案?
我可以做这个:
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"的一部分?你去哪儿看?
我正在尝试使用 ActiveX 为 SAP b1 创建自定义控件。
我的用户控件如下所示:
[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# 构建一个类库 (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 相关的内容。
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