From 4de32f835a91a17300ca955d0801c4b9c5f38d0e Mon Sep 17 00:00:00 2001 From: "Scott E. Graves" Date: Thu, 16 Feb 2017 00:14:08 -0600 Subject: [PATCH] Try to get JS working --- SiaDrive/Resource.h | Bin 593 -> 1540 bytes SiaDrive/SiaDrive.htm | 8 ++-- SiaDrive/SiaDrive.rc | Bin 11378 -> 11706 bytes SiaDrive/SiaDrive.vcxproj | 1 + SiaDrive/SiaDrive.vcxproj.filters | 3 ++ SiaDrive/SiaDriveDlg.cpp | 68 +++++++++++++++++++++++++++++- SiaDrive/SiaDriveDlg.h | 2 + SiaDrive/res/code.js | 17 ++++++++ 8 files changed, 95 insertions(+), 4 deletions(-) create mode 100644 SiaDrive/res/code.js diff --git a/SiaDrive/Resource.h b/SiaDrive/Resource.h index 4b9965dceae16101493a390baa51d4464574bed6..d1a325ca42a6c62645100bff6fc60593086310dd 100644 GIT binary patch literal 1540 zcmbu9(QeZ~5Jm4Z68~U{Mb`rHuR-48ssA?srDImnJ1Lv-(6sfie zs#dF=9nYQ_&(7@cUjq&FgOTY(rA8WS%FKe4DbX>zLO&T#^#t32BBfeusaiMMFe}}n zTcF!$t8-nkOZ1!(>9bb4X4dF$SufG8(JZmrvRkpQ&|D$C*zquj)mUHXJ2nM2=fqUA z-UZtl#(hLyp9Pv(_7@TNh&W3P^_D-IYZlg1zU(&+^i2nhnAyc2J%Vp;H@SEuIqr?Q zAUi|yld~?kU*Eem6EgL_CqIt)u#-H6Q$R@c3FZvBgqksDNbleu<6(@ihc{sI%T996 z`43Q1&fCZTL~rt|UUC{D%ZM;XN{R4cd~KSTT)gQeev%D!O4y*LZ&ydTxt$!>*zuYgTu`SJoR{=nL`^+f86LJ>1mv8vBM9@$XaOozW|< z2EPWry#x8otorU{4BdhMh3H-KRa+lh7$(gZEL%o>eYMOH^ z335p!uFyI1ZmujlUq^eB6R0U;h&Oj|H#dTN2>A#P`^Ig0#vkP2fBWgp8_@m=wB@8A YpRUh;Mcw4YZ&wqw-{4DL#;SGy2g*Lha{vGU literal 593 zcmZvYU2lRg6o#+IuV~_>i4I--02j&sZ!NRt1_U=wCFMga$Trd z??;V!J$wS86I|<~n$@X!wkDa%b*TWwf%Fk&>j3%Wp+C<2X+(XARy+zpAdoq-~|(?uLXyQbt3$M${v? z-vlnKJ_4prEin5gUD1MLQgo^Tc~yf_eSqrluF|%-Mxt{g0kjoigefkBVusKo#P diff --git a/SiaDrive/SiaDrive.htm b/SiaDrive/SiaDrive.htm index e8c269a..7045e33 100644 --- a/SiaDrive/SiaDrive.htm +++ b/SiaDrive/SiaDrive.htm @@ -76,9 +76,10 @@ @@ -92,5 +93,6 @@ + diff --git a/SiaDrive/SiaDrive.rc b/SiaDrive/SiaDrive.rc index 17e2280b1468f06106d8bb78a8a48163f8d8f2ec..509a6cca7ab2cc48528fbdb5b4259f858f73955e 100644 GIT binary patch delta 76 zcmewqu`7B*g$i>PL-AyLWzoq8#8_Cp7=jrLCkOH?vMMlu#DT2I3H&_LN(@B|sSL#o YF+iBikk60; + true diff --git a/SiaDrive/SiaDrive.vcxproj.filters b/SiaDrive/SiaDrive.vcxproj.filters index 8903ffe..35ca4c7 100644 --- a/SiaDrive/SiaDrive.vcxproj.filters +++ b/SiaDrive/SiaDrive.vcxproj.filters @@ -50,6 +50,9 @@ Resource Files + + Resource Files + diff --git a/SiaDrive/SiaDriveDlg.cpp b/SiaDrive/SiaDriveDlg.cpp index 60d69b4..e29582b 100644 --- a/SiaDrive/SiaDriveDlg.cpp +++ b/SiaDrive/SiaDriveDlg.cpp @@ -61,7 +61,7 @@ BEGIN_DHTML_EVENT_MAP(CSiaDriveDlg) DHTML_EVENT_ONCLICK(_T("CreateWalletButton"), OnButtonCreateWallet) DHTML_EVENT_ONCLICK(_T("ConfirmSeedButton"), OnButtonConfirmSeed) DHTML_EVENT_ONCLICK(_T("UnlockWalletButton"), OnButtonUnlockWallet) - DHTML_EVENT_ONCLICK(_T("UnlockWalletButton"), OnButtonUnlockWallet) + DHTML_EVENT_ONCLICK(_T("MountButton"), OnButtonMount) END_DHTML_EVENT_MAP() @@ -167,6 +167,62 @@ void CSiaDriveDlg::OnPaint() } } +BOOL CSiaDriveDlg::CallClientScript(LPCTSTR pStrFuncName, CStringArray* pArrFuncArgs, CComVariant* pOutVarRes) +{ + BOOL bRes = FALSE; + CComVariant vaResult; + CComPtr pIDoc2; + if (SUCCEEDED(this->GetDHtmlDocument(&pIDoc2))) //Uses CDHtmlDialog as 'this' + { + //Getting IDispatch for Java Script objects + CComPtr spScript; + if (SUCCEEDED(pIDoc2->get_Script(&spScript))) + { + //Find dispid for given function in the object + CComBSTR bstrMember(pStrFuncName); + DISPID dispid = NULL; + if (SUCCEEDED(spScript->GetIDsOfNames(IID_NULL, &bstrMember, 1, LOCALE_USER_DEFAULT, &dispid))) + { + COleSafeArray ar; + ar.CreateOneDim(VT_VARIANT, pArrFuncArgs->GetSize()); + for (long i = 0; i < pArrFuncArgs->GetSize(); i++) + { + CComVariant v(pArrFuncArgs->GetAt(i)); + ar.PutElement(&i, &v); + } + + long l = 0; + COleSafeArray sa; + sa.CreateOneDim(VT_VARIANT, 1); + sa.PutElement(&l, ar); + + //Putting parameters + DISPPARAMS dispparams; + memset(&dispparams, 0, sizeof dispparams); + dispparams.cArgs = 1; + dispparams.rgvarg = sa; + dispparams.cNamedArgs = 0; + + EXCEPINFO excepInfo; + memset(&excepInfo, 0, sizeof excepInfo); + UINT nArgErr = (UINT)-1; // initialize to invalid arg + + //Call JavaScript function + if (SUCCEEDED(spScript->Invoke(dispid, IID_NULL, 0, DISPATCH_METHOD, &dispparams, &vaResult, &excepInfo, &nArgErr))) + { + //Done! + bRes = TRUE; + } + } + } + } + + if (pOutVarRes) + *pOutVarRes = vaResult; + + return bRes; +} + // The system calls this function to obtain the cursor to display while the user drags // the minimized window. HCURSOR CSiaDriveDlg::OnQueryDragIcon() @@ -217,6 +273,16 @@ HRESULT CSiaDriveDlg::OnButtonUnlockWallet(IHTMLElement* /*pElement*/) return S_OK; } +HRESULT CSiaDriveDlg::OnButtonMount(IHTMLElement* /*pElement*/) +{ + CStringArray driveList; + driveList.Add(L"S"); + driveList.Add(L"T"); + CallClientScript(L"setAvailableDrives", &driveList, nullptr); + + return S_OK; +} + bool IsRefreshKeyMessage(const MSG *message) { return message diff --git a/SiaDrive/SiaDriveDlg.h b/SiaDrive/SiaDriveDlg.h index 00914ff..6f5cce3 100644 --- a/SiaDrive/SiaDriveDlg.h +++ b/SiaDrive/SiaDriveDlg.h @@ -27,6 +27,7 @@ public: HRESULT OnButtonCreateWallet(IHTMLElement* pElement); HRESULT OnButtonConfirmSeed(IHTMLElement* pElement); HRESULT OnButtonUnlockWallet(IHTMLElement* pElement); + HRESULT OnButtonMount(IHTMLElement* pElement); // Implementation protected: @@ -56,6 +57,7 @@ private: bool UpdateUi(const bool& refresh = true); HRESULT GetDomNodeAndElementById(const String& id, CComPtr& node, CComPtr& elem); HRESULT GetDomNodeById(const String& id, CComPtr& node); + BOOL CallClientScript(LPCTSTR pStrFuncName, CStringArray* pArrFuncArgs, CComVariant* pOutVarRes); private: CSiaDriveConfig _siaConfig; diff --git a/SiaDrive/res/code.js b/SiaDrive/res/code.js new file mode 100644 index 0000000..d212550 --- /dev/null +++ b/SiaDrive/res/code.js @@ -0,0 +1,17 @@ + + +function setAvailableDrives(driveList) { + alert(driveList[0]); + var sel = document.getElementById("MountDrives"); + sel.innerHTML = ""; + + for (var i in driveList) { + if (driveList.hasOwnProperty(i)) { + var drive = driveList[i]; + var option = document.createElement("option"); + option.innerText = drive + ":"; + sel.appendChild(option); + } + } +} +
- - - + + + +