From 28fd89f22d4d482eb4b7cd918c141e810112aeef Mon Sep 17 00:00:00 2001 From: "Namhyeon, Go" Date: Thu, 4 Jan 2024 15:23:26 +0900 Subject: [PATCH] shared memory #96 --- WelsonJS.Toolkit.dll | Bin 12800 -> 14336 bytes WelsonJS.Toolkit.pdb | Bin 0 -> 44544 bytes .../WelsonJS.Toolkit/NamedSharedMemory.cs | 31 +++++--- .../WelsonJS.Toolkit/ProcessTool.cs | 69 ++++++++++++++++++ WelsonJS.Toolkit/WelsonJS.Toolkit/Prompt.cs | 2 +- WelsonJS.Toolkit/WelsonJS.Toolkit/Toolkit.cs | 27 ++++++- .../WelsonJS.Toolkit/WelsonJS.Toolkit.csproj | 1 + lib/toolkit.js | 20 +++-- testloader.js | 12 ++- 9 files changed, 139 insertions(+), 23 deletions(-) create mode 100644 WelsonJS.Toolkit.pdb create mode 100644 WelsonJS.Toolkit/WelsonJS.Toolkit/ProcessTool.cs diff --git a/WelsonJS.Toolkit.dll b/WelsonJS.Toolkit.dll index 66687d8a3ad56918393e34d80d0a140f8e093325..4d069c0ddb237b3d3d1c29f17d48c55e38324469 100644 GIT binary patch delta 6815 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 delta 5403 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 RL)x(!Be5C3XTwd#{{b|6ZT0{F diff --git a/WelsonJS.Toolkit.pdb b/WelsonJS.Toolkit.pdb new file mode 100644 index 0000000000000000000000000000000000000000..5b1b931023eadc581304f7713b503256b91d52c1 GIT binary patch literal 44544 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 vx)sZHLvyE)D~S4?Iev|gzuN;0#Qndy@RKA-t literal 0 HcmV?d00001 diff --git a/WelsonJS.Toolkit/WelsonJS.Toolkit/NamedSharedMemory.cs b/WelsonJS.Toolkit/WelsonJS.Toolkit/NamedSharedMemory.cs index 9ed39ca..8c78a49 100644 --- a/WelsonJS.Toolkit/WelsonJS.Toolkit/NamedSharedMemory.cs +++ b/WelsonJS.Toolkit/WelsonJS.Toolkit/NamedSharedMemory.cs @@ -123,13 +123,28 @@ namespace WelsonJS public string ReadText() { - return Marshal.PtrToStringAnsi(hFileMappingObject); + try + { + if (hFile == IntPtr.Zero || hFileMappingObject == IntPtr.Zero) + { + throw new Exception("Could not access the shared memory"); + } + return Marshal.PtrToStringAnsi(hFileMappingObject); + } + catch (Exception e) + { + return "Exception: " + e.Message; + } } public bool WriteText(string text, int size = 1024) { try { + if (hFile == IntPtr.Zero || hFileMappingObject == IntPtr.Zero) + { + throw new Exception("Could not access the shared memory"); + } byte[] bytes = Encoding.ASCII.GetBytes(text); byte[] array = new byte[size + 1]; Array.Copy(bytes, array, bytes.Length); @@ -161,17 +176,15 @@ namespace WelsonJS { try { - if (hFileMappingObject != IntPtr.Zero) + if (hFile == IntPtr.Zero || hFileMappingObject == IntPtr.Zero) { - FileMappingNative.UnmapViewOfFile(hFileMappingObject); - hFileMappingObject = IntPtr.Zero; + throw new Exception("Could not access the shared memory"); } - if (hFile != IntPtr.Zero) - { - FileMappingNative.CloseHandle(hFile); - hFile = IntPtr.Zero; - } + FileMappingNative.UnmapViewOfFile(hFileMappingObject); + hFileMappingObject = IntPtr.Zero; + FileMappingNative.CloseHandle(hFile); + hFile = IntPtr.Zero; } catch { diff --git a/WelsonJS.Toolkit/WelsonJS.Toolkit/ProcessTool.cs b/WelsonJS.Toolkit/WelsonJS.Toolkit/ProcessTool.cs new file mode 100644 index 0000000..9bb1ec0 --- /dev/null +++ b/WelsonJS.Toolkit/WelsonJS.Toolkit/ProcessTool.cs @@ -0,0 +1,69 @@ +using System.Collections.Generic; +using System.Diagnostics; +using System.Windows.Forms; + +namespace WelsonJS +{ + public class ProcessTool + { + public static List ProcessIDs = new List(); + + public static string OpenFileDialog() + { + string filepath = string.Empty; + + using (OpenFileDialog openFileDialog = new OpenFileDialog()) + { + openFileDialog.Filter = "All files (*.*)|*.*"; + openFileDialog.RestoreDirectory = true; + if (openFileDialog.ShowDialog() == DialogResult.OK) + { + filepath = openFileDialog.FileName; + } + } + + return filepath; + } + + public static int Open(string filepath) + { + if (string.IsNullOrEmpty(filepath)) + { + filepath = OpenFileDialog(); + if (string.IsNullOrEmpty(filepath)) + { + return -1; + } + } + + try + { + Process process = new Process(); + process.StartInfo.FileName = filepath; + process.Start(); + + int processId = process.Id; + ProcessIDs.Add(processId); + + return processId; + } + catch + { + return -1; + } + } + + public static bool Close(int processId) + { + try + { + Process.GetProcessById(processId).CloseMainWindow(); + return true; + } + catch + { + return false; + } + } + } +} diff --git a/WelsonJS.Toolkit/WelsonJS.Toolkit/Prompt.cs b/WelsonJS.Toolkit/WelsonJS.Toolkit/Prompt.cs index eef093b..240e82d 100644 --- a/WelsonJS.Toolkit/WelsonJS.Toolkit/Prompt.cs +++ b/WelsonJS.Toolkit/WelsonJS.Toolkit/Prompt.cs @@ -34,7 +34,7 @@ namespace WelsonJS Text = caption, StartPosition = FormStartPosition.CenterScreen }; - Label textLabel = new Label() { Left = 50, Top = 20, Text = text }; + Label textLabel = new Label() { Left = 50, Top = 20, Width = 400, Text = text }; TextBox textBox = new TextBox() { Left = 50, Top = 50, Width = 400 }; Button confirmation = new Button() { Text = "Ok", Left = 350, Width = 100, Top = 70, DialogResult = DialogResult.OK }; confirmation.Click += (sender, e) => { prompt.Close(); }; diff --git a/WelsonJS.Toolkit/WelsonJS.Toolkit/Toolkit.cs b/WelsonJS.Toolkit/WelsonJS.Toolkit/Toolkit.cs index 7386947..618331b 100644 --- a/WelsonJS.Toolkit/WelsonJS.Toolkit/Toolkit.cs +++ b/WelsonJS.Toolkit/WelsonJS.Toolkit/Toolkit.cs @@ -190,15 +190,34 @@ namespace WelsonJS return false; } - public void CompressLZ77(string input) + [ComVisible(true)] + public string GetFilePathFromDialog() { - Compression.LZ77.Compress(input); + return ProcessTool.OpenFileDialog(); } [ComVisible(true)] - public string DecompressLZ77(string compressData) + public int OpenProcess(string filepath) { - return Compression.LZ77.Decompress(compressData); + return ProcessTool.Open(filepath); + } + + [ComVisible(true)] + public bool CloseProcess(int processID) + { + return ProcessTool.Close(processID); + } + + [ComVisible(true)] + public void CompressLZ77(string data) + { + Compression.LZ77.Compress(data); + } + + [ComVisible(true)] + public string DecompressLZ77(string compressedData) + { + return Compression.LZ77.Decompress(compressedData); } } } diff --git a/WelsonJS.Toolkit/WelsonJS.Toolkit/WelsonJS.Toolkit.csproj b/WelsonJS.Toolkit/WelsonJS.Toolkit/WelsonJS.Toolkit.csproj index 8e6ddcb..b871e23 100644 --- a/WelsonJS.Toolkit/WelsonJS.Toolkit/WelsonJS.Toolkit.csproj +++ b/WelsonJS.Toolkit/WelsonJS.Toolkit/WelsonJS.Toolkit.csproj @@ -49,6 +49,7 @@ + diff --git a/lib/toolkit.js b/lib/toolkit.js index 6fc3291..f565d18 100644 --- a/lib/toolkit.js +++ b/lib/toolkit.js @@ -78,10 +78,18 @@ function NamedSharedMemory(name) { this.clear = function() { return _interface.ClearSharedMemory(this.name); }; - - this.close = function() { - return _interface.CloseSharedMemory(this.name); - }; + + this.close = function() { + return _interface.CloseSharedMemory(this.name); + }; +} + +function openProcess(filepath) { + return getInterface().OpenProcess(filepath); +} + +function closeProcess(pid) { + return getInterface().CloseProcess(pid); } exports.create = create; @@ -93,8 +101,10 @@ exports.alert = alert; exports.confirm = confirm; exports.prompt = prompt; exports.NamedSharedMemory = NamedSharedMemory; +exports.openProcess = openProcess; +exports.closeProcess = closeProcess; -exports.VERSIONINFO = "WelsonJS.Toolkit Native API version 0.3.3"; +exports.VERSIONINFO = "WelsonJS.Toolkit Native API version 0.3.4"; exports.AUTHOR = "abuse@catswords.net"; exports.global = global; exports.require = global.require; diff --git a/testloader.js b/testloader.js index 2f46965..864d6ee 100644 --- a/testloader.js +++ b/testloader.js @@ -868,14 +868,18 @@ var test_implements = { if (!memName) { console.log("Aborted."); } else { + // Open the shared memory mem = new Toolkit.NamedSharedMemory(memName); + + // Open the second process will be communicate + Toolkit.openProcess(); + + // Listen the shared memory console.log("Listening the shared memory:", memName); while (true) { var message = mem.readText(memName); - if (!!message) { - console.log(memName + ": " + message); - } - sleep(1); + console.log(memName + ": ", message); + sleep(100); } } }