私は何日もオンラインで読んでいますが、これに対する解決策を見つけることができません。
ファイルを実行すると一時的な場所に展開され、共有して他の人に送信できる 1 つの exe ファイルが必要です。理想的には、JavaScript ファイルを非表示にしたいと考えています。
簡単に送信できるファイルが 1 つだけ必要です。
-ファサニ
私は何日もオンラインで読んでいますが、これに対する解決策を見つけることができません。
ファイルを実行すると一時的な場所に展開され、共有して他の人に送信できる 1 つの exe ファイルが必要です。理想的には、JavaScript ファイルを非表示にしたいと考えています。
簡単に送信できるファイルが 1 つだけ必要です。
-ファサニ
これを行う簡単な方法がわかりません
しかし、私は少し前に同様の問題を抱えていたので、これを行うVB.Netプログラムを作成しました
ここでノードのポータブル 32 ビット バージョンを最初にダウンロードします: Node.exe
Visual Studio がインストールされている場合は、新しいプロジェクトを作成し、ソリューション エクスプローラーからプロジェクトのプロパティに移動し、node.exe と .js ファイルをリソースとして追加します。
次に、フォームロード(プログラムにUIを持たせたくない場合)またはボタンクリックイベントに次のコードを配置します。
Try
Dim tmpp = System.IO.Path.GetTempPath & "NodeTmp"
If (Not System.IO.Directory.Exists(tmpp)) Then System.IO.Directory.CreateDirectory(tmpp)
If Not System.IO.File.Exists(tmpp & "\tmp_node.exe") Then _
My.Computer.FileSystem.WriteAllBytes(tmpp & "\node.exe", My.Resources.node, False)
System.IO.File.WriteAllText(tmpp & "\jsfile.js", My.Resources.jsfile)
System.IO.File.WriteAllText(tmpp & "\batfile.bat", """" & tmpp & "\tmp_node.exe"" """ & tmpp & "\jsfile.js""")
Dim p As New Process()
p.StartInfo.FileName = "cmd.exe"
p.StartInfo.Arguments = "/C """ & tmpp & "\pz.bat"""
p.StartInfo.CreateNoWindow = True
p.StartInfo.UseShellExecute = False
p.Start()
'Timer1.start()
Catch ex As Exception
MsgBox("Error")
End Try
上記のコードは、C:\user{name}\appdata\local\Temp に NodeTmp というフォルダーを作成し、そのフォルダーに (「node」というファイル リソースから) node.exe を抽出してから、(ファイルから) jsfile.js を抽出します。 「jsfile」という名前のリソース) を同じフォルダーに配置し、.bat ファイルを作成して実行します。
実行後に .js ファイルを削除するには (ファイルは 1 秒未満で作成および削除されるため、ユーザーからは隠されています): Timer1 というタイマーを作成し、その間隔を 150ms などに設定し、Timer1.start( 行のコメントを外します。 )上記のコードから、コードのどこかに次のサブを配置します
Sub pz_cleanup() Handles Timer1.tick
Try
Dim tmpp = System.IO.Path.GetTempPath & "PZT"
System.IO.File.Delete(tmpp & "\pz.bat")
System.IO.File.Delete(tmpp & "\pz.js")
Timer1.stop()
Catch ex As Exception
End Try
End Sub
これは間違いなくこれを行うための最良の方法ではありませんが、私にとってはうまくいきました。これまでの唯一の欠点は、.netフレームワークを他のユーザーのコンピューターにインストールする必要があることでした。
コマンドを開いてノード出力を表示する場合は、CreateNoWindow を true に設定する行にコメントを付けます。
----- 回答の一部ではありませんが、ユーザーがタスク マネージャーからタスク ノードを終了する必要がないように、UI を使用してそこに閉じるボタンを配置する場合は、次のコードを使用します。
Try
Dim pProcess() As Process = System.Diagnostics.Process.GetProcessesByName("tmp_node")
For Each p As Process In pProcess
p.Kill()
p.WaitForExit()
Next
Catch ex As Exception
MsgBox("Error")
Return True
End Try
これが役立つことを願っています.VB.Netよりも慣れている場合は、他の言語でも同様のことができます.