Proe二次開發中,vc調用vb編寫的com

#include <io.h>
#include <Stdio.h>
#import "E://vs//Projects//comtest1//ClassLibrary1//bin//Debug//ClassLibrary1.tlb" no_namespace //引入com組件

HWND ProWnd;
int newbuttonac();
uiCmdAccessState filter1(uiCmdAccessMode access_mode);
extern "C" int user_initialize()
{
ProFileName msgfilebuff;
ProStringToWstring(msgfilebuff,"KEmsg.txt");

uiCmdCmdId newbuttonid;
ProMenubarMenuAdd("New Menu","New-M-L","Help",PRO_B_TRUE,msgfilebuff);//添加一個新的菜單。定義的名字爲“New Menu”,而實際顯示的名字爲在text文檔中定義的“New-M-L”的值。定義菜單的位置在“Help”的右方。參考的text文件爲msgfilebuff。
ProCmdActionAdd("New-Menu-AC",(uiCmdCmdActFn)newbuttonac,uiCmdPrioDefault,filter1,PRO_B_FALSE,PRO_B_FALSE,&newbuttonid);
ProMenubarmenuPushbuttonAdd("New Menu","New Push Button","N-B-L","N-B-H",NULL,PRO_B_TRUE,newbuttonid,msgfilebuff); //在New Menu菜單下添加一個新的按鈕。

ProWnd=GetActiveWindow();
SetTimer(ProWnd,1,1000,TimerProc);
return 0;

}

extern "C" void user_terminate()
{
}

VOID CALLBACK TimerProc(HWND hWnd,UINT uMsg,UINT idEvent,DWORD dwTime)
{
if(_access("D://PKTest//TK_F4.ini",0)==0) return;
if(_access("D://PKTest//TK_BU4.ini",0)==0)
{
rename("D://PKTest//TK_BU4.ini","D://PKTest//TK_F4.ini");
newbuttonac();
}
}

int newbuttonac()
{
CoInitialize(NULL);//COM Pool初始化
CLSID clsid,iid;//定義classid和interfaceid
_bstr_t pRetr;//定義com函數回傳值類型
_comtest2 *pRet=NULL;//定義COM Interface類型
HRESULT hr;//定義COM Instance回傳類型
CLSIDFromString(L"{34d6550c-2c89-466f-99f4-7ad8b9261f99}",&clsid);//取出classid
CLSIDFromString(L"{b68d60a9-7ecb-4cdf-8fe6-e5ea1dd17c56}",&iid);//取出interfaceid
hr=CoCreateInstance(clsid,NULL,CLSCTX_ALL,iid,(VOID**)&pRet);//COM Interface接口建立
  if(SUCCEEDED(hr))
{
    // COM 函數執行與回傳值
    pRetr=pRet->comUI() ;
    // 回傳值型別轉換
    strcpy_s(rtn, (char*)pRetr);
    // 字串比對
     /* if(strcmp(rtn,"ok")==0)
      {
         ProMessageDisplay(msgfile,"Form_start_ok");
       }
       else
       {
          MessageBox(NULL,rtn,"Error",MB_OK);
        }*/
        // COM 接口釋放
        pRet->Release();
        }
        else
        {
          MessageBox(NULL,"Error","Error",MB_OK);
         }
        // COM Pool 結束
        CoUninitialize();
        return 0;
}

發佈了39 篇原創文章 · 獲贊 3 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章