Tag: interop

.NET中的IMAPI2 MsftFileSystemImage在创建ISO时不释放文件

我成功创建了iso映像,但是在调用此Create方法返回后,我尝试删除rootFolderPath中的文件时出现’文件正在使用’IO错误。 我错过了Marshal.ReleaseComObject调用吗? 谢谢, CW /// /// Create iso image from rootFolderPath and write to isoImageFilePath. Does not include the actual rootFolder itself /// public void Create() { IFileSystemImage ifsi = new MsftFileSystemImage(); try { ifsi.ChooseImageDefaultsForMediaType(IMAPI_MEDIA_PHYSICAL_TYPE.IMAPI_MEDIA_TYPE_DISK); ifsi.FileSystemsToCreate = FsiFileSystems.FsiFileSystemJoliet | FsiFileSystems.FsiFileSystemISO9660; ifsi.VolumeName = this.volumeName; ifsi.Root.AddTree(rootFolderPath, false);//use a valid folder //this will implement the Write method for […]

如何查看Word文件是否受密码保护?

我正在维护一个归档系统,必须将各种文档格式转换为tif。 我的问题是密码保护的Word文档。 如果文档受密码保护,则Word会弹出一个弹出窗口,要求我输入密码。 如果我可以告诉客户他需要对此做些什么,那么文档是否受密码保护是可以的。 问题是,如果Word提示输入密码,我将无法以编程方式注册。 下面的代码是在没有密码的情况下打开文档的标准互操作方式。 如果我没有输入密码或错误密码,那么我会通过弹出窗口通过Word提示我。 除了使用AutoHotKey查找弹出窗口之外,还有其他方式吗? 如果我可以在doc文件中查找一个字符串或字符来告诉它是否受到保护,那就没问题了。 // Open the document… this.document = wordApplication.Documents.Open( ref inputFile, ref confirmConversions, ref readOnly, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref visible, ref missing, ref missing, ref missing, ref missing); 解: 可以在Word中的VBA宏中执行此操作。 所以为了从C#中创建它,那么你将从C#创建宏并执行它。 我没试过。 但这里是代码: Sub MyMacro() […]

如何使用Word互操作为每个新页面在表格中创建标题?

我正在尝试创建一个带有标题的表。 我想要为表所采用的每个新页面重复此标题。 如何使用Word 2007 Interop在C#中执行此操作?

如何在C#源代码中生成COM互操作代理?

这个问题是保罗亚历山大回答“是否应签署互操作程序集”这一问题的后续问题。 。 根据Interop程序集的复杂程度 – 您可以将代理代码生成到单独的.CS / .VB文件中,并将其直接编译到程序集中。 然后,您不必担心强名称问题。 我如何将COM库的互操作代理代码生成为C#源代码? 我想可以用tlbimp完成,然后用Reflector提取源代码。 有人做过这个还是有更简单的方法?

PIA安装但仍然收到互操作错误

我正在尝试使用Microsoft.Office.Interop.xxxxxxx命名空间,但Visual Studio 2010不提供“interop”选项。 我已经为office12和office14安装了PIA,我已将它们包含在解决方案资源管理器的“参考”中,但它无法正常工作。 我试图调用命名空间的代码是: using Excel = Microsoft.Office…; 在“办公室”之后,我只能选择“核心”。 所以它看起来像这样 using Excel = Microsoft.Office.Core; 这匹配导入的引用…但使用此命名空间似乎没有用。 我的问题是如何让Microsoft.Office.Interop选项被接受并在intellisense中显示? 例: using Excel = Microsoft.Office.Interop.Excel; 收到“Interop”的错误消息=“名称空间’Microsoft.Office’中不存在类型或命名空间名称’Interop’(您是否缺少程序集引用?) 我在解决方案资源管理器中加载的程序集是“Microsoft Office 14.0对象库”TypeLib版本2.5。 程序集路径=“C:\ Program Files \ Common Files \ Microsoft Shared \ OFFICE14 \ MSO.DLL 谢谢你的任何建议!

我不能使用C#和Interop(P / Invoke)让SetSystemTime在Windows Vista中工作

我很难让SetSystemTime在我的C#代码中工作。 SetSystemtime是一个kernel32.dll函数。 我正在使用P / invoke(interop)来调用它。 SetSystemtime返回false,错误为“Invalid Parameter”。 我已经发布了以下代码。 我强调GetSystemTime工作正常。 我已经在Vista和Windows 7上对此进行了测试。根据一些新闻组post,我看到我关闭了UAC。 没有不同。 我已经做了一些搜索这个问题。 我找到了这个链接: http : //groups.google.com.tw/group/microsoft.public.dotnet.framework.interop/browse_thread/thread/805fa8603b00c267 报告问题但似乎没有找到解决方案。 请注意,还提到了UAC,但我不确定这是不是问题。 还要注意这个绅士没有得到实际的Win32Error。 有人可以在XP上试用我的代码吗? 有人能告诉我我做错了什么以及如何解决它。 如果答案是以某种方式以编程方式更改权限设置,我需要一个示例。 我本以为关闭UAC应该覆盖它。 我不需要使用这种特殊方式(SetSystemTime)。 我只是试图引入一些“时钟漂移”来进行压力测试。 如果有另一种方法,请告诉我。 坦率地说,我很惊讶我需要使用Interop来改变系统时间。 我原本以为有一种.NET方法。 非常感谢您的任何帮助或想法。 安德鲁 码: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Runtime.InteropServices; namespace SystemTimeInteropTest { class Program { #region ClockDriftSetup [StructLayout(LayoutKind.Sequential)] public struct SystemTime { […]

客户端请求中的SAML令牌后需要签名

我有一个序列化的SOAP请求消息,其中包含一个针对供应商服务的SAML令牌持有者。 我想在C#中创建一个演示程序来产生类似的请求。 为此,我想编写一个创建自己的SAML令牌的客户端。 我已经从自签名证书中成功创建了SAML2令牌,并且我能够使用ChannelFactoryOperations.CreateChannelWithIssuedToken方法(.Net 4.0)将其与请求相关联。 一切都运行良好,但我无法弄清楚在断言后放置签名所需的C#,并使用SAML令牌作为签名KeyIdentifier来签署时间戳。 我甚至不确定我在问什么,但似乎签名本身之后的签名应该是简单的部分。 但是,我在请求中获得SAML的唯一方法是声明它类型为BearerKey。 但BearerKey似乎在断言后省略了签名。 我似乎想要SymmetricKey,但令牌“没有键”。 如何在断言后出现这样的签名元素? 这里URI =“#_ 1”指的是上面的WS-Security时间戳(未示出)。

暴露给VBA(COM)的C#属性:运行时错误’424’:需要对象

这个C#代码在.NET 4.5 ComVisible程序集中: C#代码 [InterfaceType(ComInterfaceType.InterfaceIsDual)] [Guid(“22341123-9264-12AB-C1A4-B4F112014C31”)] public interface IComExposed { double[] DoubleArray { get; set; } object[] ObjectArray { get; set; } object PlainObject { get; set; } double ScalarDouble { get; set; } } [ClassInterface(ClassInterfaceType.None)] [Guid(“E4F27EA4-1932-2186-1234-111CF2722C42”)] [ProgId(“ComExposed”)] public class ComExposed : IComExposed { public double[] DoubleArray { get; set; } public object[] ObjectArray { […]

需要ClassInterfaceType.None?

从MSDN中得不到以下内容: ClassInterfaceType.None 表示没有为该类生成类接口。 如果没有显式实现接口,则该类只能通过IDispatch接口提供后期绑定访问。 这是ClassInterfaceAttribute的推荐设置。 使用ClassInterfaceType.None是通过类显式实现的接口公开function的唯一方法。 COM可见性必须[ComVisible(true)]吗?

如何使用Interop with C#将* .ppt,* .pptx文件保存为* .wmv?

我尝试使用下一个代码执行此操作: using Microsoft.Office.Core; using PowerPoint = Microsoft.Office.Interop.PowerPoint; using System.IO; using Microsoft.Office.Interop.PowerPoint; namespace SavePPT { class Program { static void Main(string[] args) { Application app = new PowerPoint.Application(); var pres = app.Presentations; var file = pres.Open(@”C:\Presentation1.pptx”, MsoTriState.msoTrue, MsoTriState.msoTrue, MsoTriState.msoFalse); file.SaveCopyAs(@”C:\presentation1.wmv”, PowerPoint.PpSaveAsFileType.ppSaveAsWMV, MsoTriState.msoCTrue); app.Quit(); } } } 但是这个解决方案创建了0 KB大小的文件,当然我无法播放它。