mirror of
https://github.com/ElectronNET/Electron.NET.git
synced 2026-02-06 05:34:35 +00:00
69 lines
2.5 KiB
C#
69 lines
2.5 KiB
C#
using System.Linq;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using ElectronNET.API;
|
|
using ElectronNET.API.Entities;
|
|
|
|
namespace ElectronNET.WebApp.Controllers
|
|
{
|
|
public class WindowsController : Controller
|
|
{
|
|
public IActionResult Index()
|
|
{
|
|
if (HybridSupport.IsElectronActive)
|
|
{
|
|
string viewPath = $"http://localhost:{BridgeSettings.WebPort}/windows/demowindow";
|
|
|
|
Electron.IpcMain.On("new-window", async (args) =>
|
|
{
|
|
await Electron.WindowManager.CreateWindowAsync(viewPath);
|
|
});
|
|
|
|
Electron.IpcMain.On("manage-window", async (args) =>
|
|
{
|
|
|
|
var browserWindow = await Electron.WindowManager.CreateWindowAsync(viewPath);
|
|
browserWindow.OnMove += UpdateReply;
|
|
browserWindow.OnResize += UpdateReply;
|
|
});
|
|
|
|
Electron.IpcMain.On("listen-to-window", async (args) =>
|
|
{
|
|
var mainBrowserWindow = Electron.WindowManager.BrowserWindows.First();
|
|
|
|
var browserWindow = await Electron.WindowManager.CreateWindowAsync(viewPath);
|
|
browserWindow.OnFocus += () => Electron.IpcMain.Send(mainBrowserWindow, "listen-to-window-focus");
|
|
browserWindow.OnBlur += () => Electron.IpcMain.Send(mainBrowserWindow, "listen-to-window-blur");
|
|
|
|
Electron.IpcMain.On("listen-to-window-set-focus", (x) => browserWindow.Focus());
|
|
});
|
|
|
|
Electron.IpcMain.On("frameless-window", async (args) =>
|
|
{
|
|
var options = new BrowserWindowOptions
|
|
{
|
|
Frame = false
|
|
};
|
|
await Electron.WindowManager.CreateWindowAsync(options, viewPath);
|
|
});
|
|
}
|
|
|
|
return View();
|
|
}
|
|
|
|
private async void UpdateReply()
|
|
{
|
|
var browserWindow = Electron.WindowManager.BrowserWindows.Last();
|
|
var size = await browserWindow.GetSizeAsync();
|
|
var position = await browserWindow.GetPositionAsync();
|
|
string message = $"Size: {size[0]},{size[1]} Position: {position[0]},{position[1]}";
|
|
|
|
var mainWindow = Electron.WindowManager.BrowserWindows.First();
|
|
Electron.IpcMain.Send(mainWindow, "manage-window-reply", message);
|
|
}
|
|
|
|
public IActionResult DemoWindow()
|
|
{
|
|
return View();
|
|
}
|
|
}
|
|
} |