Skip to content

Commit

Permalink
hmJSやhmV8と同様に、jsmode 相当の関数群を追加した。
Browse files Browse the repository at this point in the history
  • Loading branch information
komiyamma committed Sep 3, 2022
1 parent 4454f7d commit 9d78de6
Show file tree
Hide file tree
Showing 55 changed files with 951 additions and 20 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# hmEdgeJS

![hmEdgeJS v1.9.3](https://img.shields.io/badge/hmEdgeJS-v1.9.2-6479ff.svg)
![hmEdgeJS v2.0.0](https://img.shields.io/badge/hmEdgeJS-v2.0.0-6479ff.svg)
[![Apache 2.0](https://img.shields.io/badge/license-Apache_2.0-blue.svg?style=flat)](LICENSE)
![Hidemaru 8.73](https://img.shields.io/badge/Hidemaru-v8.73-6479ff.svg)
![Node.js 8.9.3](https://img.shields.io/badge/Node.js-v8.9.3-6479ff.svg?logo=node.js&logoColor=white)
Expand Down
Binary file modified hmEdgeJS.src/Release/hmEdgeJS.dll
Binary file not shown.
4 changes: 3 additions & 1 deletion hmEdgeJS.src/Release/hmEdgeJS.dll.metagen
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
ImageRuntimeVersion: v4.0.30319
Assembly hmEdgeJS, Version=1.9.*, Culture=ロケールに依存しない言語 (ロケールに依存しない国):
Assembly hmEdgeJS, Version=2.0.*, Culture=ロケールに依存しない言語 (ロケールに依存しない国):
hash=SHA1, flags=PublicKey
Assembly mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089:
hash=None, flags=None
Expand All @@ -17,6 +17,7 @@ Class IEdgeJSStaticLib: AutoLayout, AnsiClass, Class, Public, BeforeFieldInit
OutputDebugStream(String): PrivateScope, Public, Static, HideBySig
CreateScope(): PrivateScope, Public, Static, HideBySig
BindDllHandle(IntPtr): PrivateScope, Public, Static, HideBySig
SetJSModeExpression(String): PrivateScope, Public, Static, HideBySig
SetTmpVar(Object): PrivateScope, Public, Static, HideBySig
PopTmpVar(): PrivateScope, Public, Static, HideBySig
DoFile(String): PrivateScope, Public, Static, HideBySig
Expand All @@ -33,6 +34,7 @@ Class hmEdgeJSDynamicLib: AutoLayout, AnsiClass, Class, Public, Sealed
SendMessage(IntPtr, UInt32, Int32, IntPtr): PrivateScope, Public, Static, HideBySig, PinvokeImpl
OutputDebugStream(String): PrivateScope, Public, Static, HideBySig
BindDllHandle(IntPtr): PrivateScope, Public, Static, HideBySig
SetJSModeExpression(String): PrivateScope, Public, Static, HideBySig
ModifyFuncCallByDllType(String): PrivateScope, Public, Static, HideBySig
SetTmpVar(Object): PrivateScope, Public, Static, HideBySig
PopTmpVar(): PrivateScope, Public, Static, HideBySig
Expand Down
Binary file modified hmEdgeJS.src/Release/hmEdgeJS.exp
Binary file not shown.
Binary file modified hmEdgeJS.src/Release/hmEdgeJS.lib
Binary file not shown.
Binary file modified hmEdgeJS.src/hmEdgeJS/Release/hmEdgeJS.res
Binary file not shown.
Binary file modified hmEdgeJS.src/hmEdgeJS/Release/hmEdgeJS.tlog/CL.command.1.tlog
Binary file not shown.
Binary file modified hmEdgeJS.src/hmEdgeJS/Release/hmEdgeJS.tlog/CL.read.1.tlog
Binary file not shown.
Binary file modified hmEdgeJS.src/hmEdgeJS/Release/hmEdgeJS.tlog/CL.write.1.tlog
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
#TargetFrameworkVersion=v4.5:PlatformToolSet=v140:EnableManagedIncrementalBuild=true:VCToolArchitecture=Native32Bit:WindowsTargetPlatformVersion=8.1
Release|Win32|C:\新しいフォルダー (4)\hm_nodejs\hm_nodejs\hmEdgeJS.src\|
Release|Win32|C:\新しいフォルダー\hm_nodejs\hmEdgeJS.src\|
Binary file modified hmEdgeJS.src/hmEdgeJS/Release/hmEdgeJS.tlog/hmEdgeJS.write.1u.tlog
Binary file not shown.
Binary file modified hmEdgeJS.src/hmEdgeJS/Release/hmEdgeJS.tlog/link.command.1.tlog
Binary file not shown.
Binary file modified hmEdgeJS.src/hmEdgeJS/Release/hmEdgeJS.tlog/link.read.1.tlog
Binary file not shown.
Binary file modified hmEdgeJS.src/hmEdgeJS/Release/hmEdgeJS.tlog/link.write.1.tlog
Binary file not shown.
Binary file modified hmEdgeJS.src/hmEdgeJS/Release/hmEdgeJS.tlog/rc.command.1.tlog
Binary file not shown.
Binary file modified hmEdgeJS.src/hmEdgeJS/Release/hmEdgeJS.tlog/rc.read.1.tlog
Binary file not shown.
Binary file modified hmEdgeJS.src/hmEdgeJS/Release/hmEdgeJS.tlog/rc.write.1.tlog
Binary file not shown.
24 changes: 24 additions & 0 deletions hmEdgeJS.src/hmEdgeJS/dllmain.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
#include <windows.h>

HMODULE hSelfDllModule = NULL;


#pragma unmanaged
BOOL APIENTRY DllMain(HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
hSelfDllModule = hModule;
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}

#pragma managed
22 changes: 21 additions & 1 deletion hmEdgeJS.src/hmEdgeJS/hmEdgeJS.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@
using namespace std;
using namespace System;

extern HMODULE hSelfDllModule;


// 上の手動のBindDllHandleを自動で行う。秀丸8.66以上
// 1回だけ実行すれば良いわけではない。dllが読み込まれている間にもdll値が変わってしまうかもしれないため。(将来の実装では)
Expand All @@ -29,6 +31,23 @@ static bool BindDllHandle() {
return false;
}

bool isExpressionLoaded = false;
static bool InitializeHandle() {
bool ret = BindDllHandle();
if (!isExpressionLoaded && hSelfDllModule) {
HRSRC res = FindResource(hSelfDllModule, TEXT("HMJSMODE"), TEXT("TEXT"));
if (res) {
char *expression = (char *)LoadResource(hSelfDllModule, res);
if (expression) {
String^ mng_expression = gcnew String(expression);
IEdgeJSStaticLib::SetJSModeExpression(mng_expression);
isExpressionLoaded = true;
}
}
}
return ret;
}


// 秀丸の変数が文字列か数値かの判定用
MACRO_DLL intHM_t SetTmpVar(const void* dynamic_value) {
Expand All @@ -55,7 +74,7 @@ MACRO_DLL const TCHAR * PopStrVar() {


MACRO_DLL intHM_t DoFile(const TCHAR *szfilename) {
BindDllHandle();
InitializeHandle();

// ここはよく間違えるのでここだけチェック。他は秀丸8.66以降ではほとんど利用しないので無視
if (Hidemaru_GetDllFuncCalledType) {
Expand All @@ -74,6 +93,7 @@ MACRO_DLL intHM_t DoFile(const TCHAR *szfilename) {
}

MACRO_DLL intHM_t DestroyScope() {
isExpressionLoaded = false;
return (intHM_t)IEdgeJSStaticLib::DestroyScope();
}

Expand Down
Binary file modified hmEdgeJS.src/hmEdgeJS/hmEdgeJS.rc
Binary file not shown.
1 change: 1 addition & 0 deletions hmEdgeJS.src/hmEdgeJS/hmEdgeJS.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -161,6 +161,7 @@
</ResourceCompile>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="dllmain.cpp" />
<ClCompile Include="hidemaruexe_export.cpp" />
<ClCompile Include="hmEdgeJS.cpp" />
<ClCompile Include="string_converter.cpp" />
Expand Down
3 changes: 3 additions & 0 deletions hmEdgeJS.src/hmEdgeJS/hmEdgeJS.vcxproj.filters
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,9 @@
<ClCompile Include="hmEdgeJS.cpp">
<Filter>ソース ファイル</Filter>
</ClCompile>
<ClCompile Include="dllmain.cpp">
<Filter>ソース ファイル</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="hidemaruexe_export.h">
Expand Down
2 changes: 2 additions & 0 deletions hmEdgeJS.src/hmEdgeJS/hmEdgeJSStatlcLib.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ public ref class IEdgeJSStaticLib

static IntPtr BindDllHandle(IntPtr dll);

static void SetJSModeExpression(String^ str);

static IntPtr SetTmpVar(Object^ value);

static Object^ PopTmpVar();
Expand Down
Loading

0 comments on commit 9d78de6

Please sign in to comment.