100分求助一个简单问题
Private Declare Function EbExecuteLine Lib "vba6.dll" (ByVal pStringToExec As Long, ByVal Unknownn1 As Long, ByVal Unknownn2 As Long, ByVal fCheckOnly As Long) As Long
Public Function ExecuteLine(sCode As String, Optional fCheckOnly As Boolean) As Boolean
ExecuteLine = EbExecuteLine(StrPtr(sCode), 0&, 0&, Abs(fCheckOnly)) = 0
End Function
如何改写为 VC 代码?
要求:传入 LPCTSTR 的字符串。
问题点数:100、回复次数:7Top
1 楼jiangsheng(蒋晟.Net[MVP])回复于 2005-08-04 08:08:53 得分 0
#import "C:\Program Files\DevStudio\VB\VBA6.dll" no_namespace,named_guidsk用生成包装类看看
Top
2 楼moloto2004()回复于 2005-08-04 10:46:43 得分 0
动态加载行么?Top
3 楼bobob(静思)回复于 2005-08-04 11:09:54 得分 0
typedef long(__stdcall EbExecuteLine)(void *,void *,void *,void *);
HINSTANCE hInst;
hInst = ::LoadLibrary("VBA6.dll");
EbExecuteLine *pFun = (EbExecuteLine *)GetProcAddress(hInst,"EbExecuteLine");
LPCSTR c1="111";
pFun(c1,NULL,NULL,NULL);Top
4 楼boyplayee()回复于 2005-08-05 00:12:40 得分 0
学习楼上两位前辈,MARK。Top
5 楼zhxxj(中华学习机)回复于 2005-08-05 01:42:32 得分 0
其实问题的关键是第一个参数是“指向BSTR的指针”,但是我无论怎么调都报错!Top
6 楼zhxxj(中华学习机)回复于 2005-08-05 01:43:46 得分 0
//#import "C:\Program Files\DevStudio\VB\VBA6.dll" no_namespace,named_guidsk用生成包装类看看
我是菜鸟,请详细说说好吗?Top
7 楼zhxxj(中华学习机)回复于 2005-08-05 04:59:22 得分 0
/////////////////////////////////////////////////////////////////////////////
// CCFXBasicView message handlers
void CCFXBasicView::OnProjRun()
{
// TODO: Add your command handler code here
typedef int(*EbExecuteLineProc)(void *, int, int, BOOL);
EbExecuteLineProc EbExecuteLine;
HINSTANCE hDll = LoadLibrary("C:\\Program Files\\Microsoft Visual Studio\\VB98\\vba6.dll");
EbExecuteLine = (EbExecuteLineProc)GetProcAddress(hDll, "EbExecuteLine");
char szCode[65536] = "";
CEdit &edtMain = CCFXBasicView::GetEditCtrl();
edtMain.GetWindowText((LPTSTR)&szCode, 65536);
BSTR strCode = _com_util::ConvertStringToBSTR(szCode);
EbExecuteLine(strCode, 0, 0, 0);
}
包含路径就可以脱离IDE运行。
从向导创建一个单文档工程,视图从CEditView派生,添加一个菜单,加入上面处理代码。
程序运行出错!
帮帮我吧!
解决了再给100分,决不食言!Top




