Tag: interop

C#和Excel Interop问题,保存excel文件不顺畅

我可以打开和写入excel文件,但是当我尝试通过传递路径来保存文件时,保存操作会提示“保存”对话框。 我希望它能够在指定的路径上保存文件 代码如下: excelApp.Save(exportToDirectory); excelApp.Quit(); 其中, exportToDirectory是:“C:\ files \ strings.xlsx”。 PS:我已经检查了excel版本和类似的问题。 谢谢

编组包含字符串的结构

我基本上想要从c#中的用户获取int name和string age并将其发送到用c编写的dll方法,其中包含int和char [50]参数并返回字符串.i创建以下场景但我失败了,任何正文都有代码 我有一个用c开发的dll,它有一个结构 struct Argument { int age; char name[50]; } ; 和方法 extern “C” { __declspec(dllexport) Argument FillData(Argument data) { Argument mydata; mydata.age=data.age; for(int i=0;i<=sizeof(data);i++) { mydata.name[i]=data.name[i]; } return mydata; } 我在Cs_dll.cs中的c#中声明它 [StructLayout(LayoutKind.Sequential,CharSet=CharSet.Ansi)] public struct Argument { public int age; [MarshalAs(UnmanagedType.TBStr)] //public char name; public char[] name; }; public class Cs_Dll { […]

如何使用C#应用程序查询MS Access数据库?

我有一个使用Microsoft.Office.Interop.Excel从Excel工作簿中提取数据的应用程序。 Excel工作簿中的信息已移至Access数据库,我的任务是更新应用程序,以便它在数据库中查找数据。 我找到了Microsoft.Office.Interop.Access参考,但是如何使用它来打开数据库并运行查询? MSDN上的这方面的文档似乎有点缺乏。 也许我正在寻找错误的地方……:\ C#应用程序使用的是.NET 3.5。 谢谢。

.NET Interop IntPtr与ref

可能是一个菜鸟问题但是互操作不是我的优点之一。 除了限制重载次数之外,还有什么理由我应该声明我的DllImports: [DllImport(“user32.dll”)] public static extern int SendMessage(IntPtr hWnd, int msg, int wParam, IntPtr lParam); 并像这样使用它们: IntPtr lParam = Marshal.AllocCoTaskMem(Marshal.SizeOf(formatrange)); Marshal.StructureToPtr(formatrange, lParam, false); int returnValue = User32.SendMessage(_RichTextBox.Handle, ApiConstants.EM_FORMATRANGE, wParam, lParam); Marshal.FreeCoTaskMem(lParam); 而不是创建目标重载: [DllImport(“user32.dll”)] public static extern int SendMessage(IntPtr hWnd, int msg, int wParam, ref FORMATRANGE lParam); 使用它像: FORMATRANGE lParam = new FORMATRANGE(); int returnValue = […]

Excel.Range.Find方法

我正在使用Excel互操作对象并尝试通过以下方法在指定范围内查找日期 Excel.Range rngFind = WS.get_Range(strFromRange, strToRange).Find(strFind, Type.Missing, Excel.XlFindLookIn.xlFormulas, Excel.XlLookAt.xlPart, Excel.XlSearchOrder.xlByRows, Excel.XlSearchDirection.xlNext, false, false, false); 但我得到rngFind为null总是我的strFind =“Sep-08”我尝试使用Excel.XlFindLookIn.xlFormulas和Excel.XlFindLookIn.xlValues 我的excel文件看起来像这样 Sep-08 Oct-08 Nov-08 Dec-08 Jan-09 Feb-09 Mar-09 Apr-09 May-09 Jun-09 Jul-09 如果当我点击08年9月的单元格我在Excel的公式字段中获得9/1/2008我也尝试搜索9/1/2008但它根据RegionalSettings Date格式按系统变化… 请帮我。 基本上我正在做的是获取查找字符串的单元格地址

禁用在Microsoft Office interop FileSaveAs方法中覆盖现有文件提示

我正在使用Ms Office Interop程序集来创建MS Project文件。 要保存创建的文件,我使用的是FileSaveAs方法,它会提示一条消息,说明是否要替换现有文件。 我想压缩消息,我没有在FileSaveAs方法中找到任何参数用于此目的。 有什么想法吗? 我使用C#作为我的编程语言。

从C#调用C ++函数,具有许多复杂的输入和输出参数

我是C#的新手,但他在C ++方面做了很多工作。 我有一个需要从C#调用的C ++函数。 在阅读了SO和一些谷歌搜索的一些答案之后,我得出结论,我需要为该函数创建一个纯C接口。 我已经这样做了,但我仍然对如何从C#调用它感到困惑。 C ++中的函数如下所示: int processImages( std::string& inputFilePath, // An input file const std::vector& inputListOfDirs, // Input list of dirs std::vector& vecInternalStruct, // Input/Output struct std::vector<std::vector >& OutputIntsForEachFile, std::vector< std::vector >& vecVecSmallStruct, // Output int verboseLevel ); 用C语言转换的相同函数如下所示: int processImagesC( char* p_inputFilePath, // An input file char** p_inputListOfDirs, // Input list […]

已经与其基础RCW分离的COM对象无法使用 – 为什么会发生?

我有时会遇到以下exception:无法使用已与其基础RCW分离的COM对象 示例代码: using (AdOrganizationalUnit organizationalUnit = new AdOrganizationalUnit(ADHelper.GetDirectoryEntry(ouAdDn))) { using (AdUser user = organizationalUnit.AddUser(commonName)) { //set some properties user.Properties[key].Add(value); user.CommitChanges(); user.SetPassword(password); //it is set using Invoke //must be set after creating user user.Properties[“UserAccountControl”].Value = 512; user.CommitChanges(); } } AdUser看起来像这样: public class AdUser : DirectoryEntry { public AdUser(DirectoryEntry entry) : base(entry.NativeObject) { } public bool SetPassword(string […]

从C#调用FORTRAN dll并将值分配给结构数组

我可以将一个C#结构传递给FORTRAN就好了。 我甚至可以在FORTRAN传递一个C#结构数组作为TYPE()数组。 我遇到麻烦的地方是当我试图将值返回到C# 。 这是一个例子: fortran dll是: MODULE TESTING TYPE VALUEREF INTEGER*4 :: A ENDTYPE VALUEREF CONTAINS SUBROUTINE TEST_REF(T,N) !DEC$ ATTRIBUTES DLLEXPORT :: TEST_REF !DEC$ ATTRIBUTES ALIAS:’TEST_REF’ :: TEST_REF !DEC$ ATTRIBUTES VALUE :: N IMPLICIT NONE INTEGER*4 :: A,I,N TYPE(VALUEREF) :: T(N) A = 100 DO I=1,N T(I)%A = A + I END DO END […]

C#获取非托管C dll导出列表

我有一个带有导出函数的C dll 我可以使用命令行工具dumpbin.exe / EXPORTS来提取导出函数的列表,然后在我的C#代码中使用它们(成功)调用这些函数。 有没有办法直接从.NET获取这个导出函数列表,而无需使用外部命令行工具? 谢谢