我的程序有问题,通过使用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".有人可以解释这个错误的原因,我很困惑..
我的客户有一个用Classic ASP和COM +编写的应用程序.管理人员有兴趣将其迁移到ASP.NET MVC,但他们必须说服CIO这是一个很好的举措.旧的应用程序仍然可以正常工作,除了公司没有人可以维护它.我们如何从Classic ASP转售到ASP.net上面销售高层管理人员?提前致谢!
以下代码的行为有所不同,具体取决于我是否使用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位密钥?
以上可能吗?
我可以这样做:
IUnknown *punk;
punk->QueryInterface(IID_MyInterface, (void**)&m_pMyInterface);
Run Code Online (Sandbox Code Playgroud)
我以为这会告诉我MyInterface是否支持m_pMyInterface ...
我正在使用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) 我正在调试其他程序员的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#中没有可选参数这样的东西.但是您可以使用重载功能并使用默认值输入变量,例如:
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++的COM对象,以便在VB6应用程序中使用它.现在我需要添加一些日志来捕获一些bug.我从"如何在Visual Studio 6.0中调试COM对象"的问题中找到了我可以使用该OutputDebugString
函数的问题.但是有可能以某种方式写入VB6立即窗口吗?
我们公司有一大堆软件,它有很多非常有用的COM命令.我们有一个很好的基本设置,允许你基本上绕过GUI并获得你想要的信息,但我们也有一些已经为特定客户添加.
理想情况下,当我们的.exe被导入Visual Studio这样的东西时,我们想要将这些特定的COM命令"隐藏"给普通用户.因此,尽管他们是活跃的,但从理论上讲,唯一可以使用它们的人就是明确告诉他们的人.这将消除我们与客户使用的功能相关的许多问题,而这些功能并非真正设计为由他们使用,当然这意味着不必支持多个安装程序.
com ×10
c++ ×4
c# ×2
vb6 ×2
.net ×1
32bit-64bit ×1
asp-classic ×1
asp.net ×1
asp.net-mvc ×1
bstr ×1
com-interop ×1
createobject ×1
debugging ×1
delphi ×1
delphi-7 ×1
excel ×1
exception ×1
interface ×1
logging ×1
php ×1
session ×1
sql-server ×1
string ×1
winapi ×1