标签: com

无法访问c#中的excel文件

我的程序有问题,通过使用PIA打开excel文件.下面是我的示例代码; 有什么建议?

path = @"C:\\Test Template.xls";
wb = objExcel.Workbooks.Open(path, Missing.Value, Missing.Value , Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
Run Code Online (Sandbox Code Playgroud)

执行此代码后,程序返回错误消息"无法访问Test Template.xls".有人可以解释这个错误的原因,我很困惑..

.net c# com excel

0
推荐指数
1
解决办法
2419
查看次数

从Classic ASP转换到ASP.NET时销售高层管理人员

我的客户有一个用Classic ASP和COM +编写的应用程序.管理人员有兴趣将其迁移到ASP.NET MVC,但他们必须说服CIO这是一个很好的举措.旧的应用程序仍然可以正常工作,除了公司没有人可以维护它.我们如何从Classic ASP转售到ASP.net上面销售高层管理人员?提前致谢!

asp.net com asp.net-mvc asp-classic

0
推荐指数
1
解决办法
308
查看次数

如何强制32位应用程序在CreateObject中使用64位COM DLL?

以下代码的行为有所不同,具体取决于我是否使用32位或64位版本的wscript:

Set oSQLServer = CreateObject("SQLDMO.SQLServer")

For Each o in oSQLServer.ListInstalledInstances
    MsgBox o
Next
Run Code Online (Sandbox Code Playgroud)

在32位,它将列出我的32位服务器(SQL Server 2000)的实例,在64位我得到我的64位服务器(SQL Server 2008)的内容.我需要将此代码转换为C++(32位应用程序).但我需要展示64位服务器.如何强制创建的对象在注册表中使用64位dll和64位密钥?

sql-server com createobject 32bit-64bit

0
推荐指数
1
解决办法
555
查看次数

在CoCreateInstance之前调用QueryInterface?

以上可能吗?

我可以这样做:

IUnknown *punk;

punk->QueryInterface(IID_MyInterface, (void**)&m_pMyInterface);
Run Code Online (Sandbox Code Playgroud)

我以为这会告诉我MyInterface是否支持m_pMyInterface ...

c++ com interface

0
推荐指数
1
解决办法
889
查看次数

PHP会话问题

我正在使用PHP的第三方COM对象,我希望将对象保存在会话变量中,以便在将来的服务器调用中访问它.

如果我在会话中保存对象:

$_SESSION['collItem'] = $collItem;
Run Code Online (Sandbox Code Playgroud)

我可以$_SESSION['collItem']在定义之后立即访问它的方法和属性.

但是,在将来调用服务器时,如果我尝试使用$_SESSION['collItem'],我就无法再次访问它.

我在这里写了一些代码来澄清.

在我的脚本"functions.php"中初始化COM对象的方法:

public function setAppData() {

    try {
        $appD = new COM('ASData.CASDataApp');
        $appD->InitMasterData(true, 1, 91);
        $appD->DateMask = 'ymd';
        $_readDB = $appD->InitApp($this->readDB());
    } catch (Exception $e) {
        $err = 'Connection error: ' . htmlentities(addslashes(strip_tags($e->getMessage())));
        $this->setError($err);
        return false;
    }

    $appD->appPath = str_replace('\app\include', '', __DIR__);

    $this->iniciarCollections($appD);

    $this->appData = $appD;
}
Run Code Online (Sandbox Code Playgroud)

从我的脚本"edit_json.php"调用方法:

require_once('functions.php');

if (!session_id()) {
    session_start();
}

// We recover $mbw object saved in session and initialize COM object
if (isset($_SESSION['mbw'])) { …
Run Code Online (Sandbox Code Playgroud)

php com session

0
推荐指数
1
解决办法
91
查看次数

C++,COM和传递字符串

我正在调试其他程序员的Windows Media Player插件的源代码.这个插件有时会导致WMP崩溃,有时打开插件设置窗口需要很长时间.仅在播放音乐时打开设置窗口时才会出现此问题.如果播放器停止,它会立即打开.

在查看代码和调试时,我已经找到了代码行,这似乎是导致问题的原因.

属性页面具有以下成员变量:

CComPtr<IDsp_plugin> m_pDsp_plugin;
Run Code Online (Sandbox Code Playgroud)

初始化时的属性页调用COM对象的get_text方法:

unsigned char * txt = NULL;
//m_pDsp_plugin is a valid pointer to IDsp_plugin
HRESULT res = m_pDsp_plugin->get_text(&txt);
Run Code Online (Sandbox Code Playgroud)

此时,hres是"0x80010105:服务器引发异常." 和Visual Studio Debug输出显示"wmplayer.exe中0x764efbae的第一次机会异常:0x80010105:

get_text方法定义如下:

在Dsp_plugin.idl中

interface IDsp_plugin : IUnknown
{
    HRESULT get_text([out] unsigned char* *pVal);
...
Run Code Online (Sandbox Code Playgroud)

在Dsp_plugin.h中

class ATL_NO_VTABLE CDsp_plugin : 
    public CComObjectRootEx<CComMultiThreadModel>,
    public CComCoClass<CDsp_plugin, &CLSID_Dsp_plugin>,
    public IDsp_plugin,
    public IMediaObject,
    public IWMPPluginEnable,
    public ISpecifyPropertyPages
{

    STDMETHOD(get_text)(unsigned char* *txt);
...
Run Code Online (Sandbox Code Playgroud)

最后抛出此异常的方法本身:Dsp_plugin.cpp

STDMETHODIMP CDsp_plugin::get_text (unsigned char* *txt)
{
   ... // some code for copying a valid …
Run Code Online (Sandbox Code Playgroud)

c++ string com exception bstr

0
推荐指数
1
解决办法
369
查看次数

C#中可选(VB)参数的替代方案?

我被告知在C#中没有可选参数这样的东西.但是您可以使用重载功能并使用默认值输入变量,例如:

void Person(string name, int age)
void Person(string name)
Run Code Online (Sandbox Code Playgroud)

void Person(string name, int age = 30)
Run Code Online (Sandbox Code Playgroud)

我的问题是,当从VB6调用C#组件时,重载方法往往会将名称更改为例如"Person(字符串名称),Person _1(字符串名称,int age)"等,并且当使用时不能使用具有默认值的变量"出"变量.

但是怎么样

void Person(string name, [Optional] int age)
Run Code Online (Sandbox Code Playgroud)

??

有人可以向我解释这项工作是如何使用它来模拟VB6中的可选变量吗?

c# vb6 com com-interop optional-variables

0
推荐指数
1
解决办法
645
查看次数

如何从基于C++的COM对象写入VB6立即窗口?

我开发了一个基于C++的COM对象,以便在VB6应用程序中使用它.现在我需要添加一些日志来捕获一些bug.我从"如何在Visual Studio 6.0中调试COM对象"的问题中找到了我可以使用该OutputDebugString函数的问题.但是有可能以某种方式写入VB6立即窗口吗?

c++ vb6 com debugging logging

0
推荐指数
1
解决办法
1225
查看次数

何时以及为什么我们需要使用COM?

我想知道何时以及为何使用COM?

请告诉我在哪种情况下我需要使用com而不是普通的DLL.

c++ com winapi

0
推荐指数
1
解决办法
97
查看次数

从IDE中隐藏Delphi 7 COM命令,如Visual Studio?

我们公司有一大堆软件,它有很多非常有用的COM命令.我们有一个很好的基本设置,允许你基本上绕过GUI并获得你想要的信息,但我们也有一些已经为特定客户添加.

理想情况下,当我们的.exe被导入Visual Studio这样的东西时,我们想要将这些特定的COM命令"隐藏"给普通用户.因此,尽管他们是活跃的,但从理论上讲,唯一可以使用它们的人就是明确告诉他们的人.这将消除我们与客户使用的功能相关的许多问题,而这些功能并非真正设计为由他们使用,当然这意味着不必支持多个安装程序.

delphi com delphi-7

0
推荐指数
1
解决办法
161
查看次数