Как скопировать и вставить вне приложения Electron?

Заранее извините, если на мой вопрос уже был ответ, что касается меня, я не нашел ответа, когда искал. В настоящее время я создаю приложение Angular Desktop, используя Electron и, следовательно, электронный упаковщик. Мне нужно иметь возможность копировать и вставлять текст из приложения в другое окно, и то же самое по-другому. Я уже могу копировать и вставлять, если останусь в приложении. Я уже испробовал множество решений, предложенных сообществом, как вы увидите в моем коде, добавив меню в свое приложение с ярлыками копирования и вставки.

Вот мой код запуска электронного окна (main.js):

const { app, BrowserWindow, Menu} = require("electron");
const path = require("path");
const url = require("url");

let win;

function createWindow() {
  win = new BrowserWindow({icon:  path.join(__dirname, `/src/logo4.ico`)});
  win.maximize();

  // Create the Application's main menu
  const template = [{
    label: "Application",
    submenu: [
      {label: "About Application", selector: "orderFrontStandardAboutPanel:"},
      {type: "separator"},
      {
        label: "Quit", accelerator: "Command+Q", click: function () {
          app.quit();
        }
      }
    ]
  }, {
    label: "Edit",
    submenu: [
      {label: "Undo", accelerator: "Ctrl+Z", selector: "undo:"},
      {label: "Redo", accelerator: "Shift+Ctrl+Z", selector: "redo:"},
      {type: "separator"},
      {label: "Cut", accelerator: "Ctrl+X", selector: "cut:"},
      {label: "Copy", accelerator: "Ctrl+C", selector: "copy:"},
      {label: "Paste", accelerator: "Ctrl+V", selector: "paste:"},
      {label: "Select All", accelerator: "Ctrl+A", selector: "selectAll:"}
    ]
  }
  ];

  Menu.setApplicationMenu(Menu.buildFromTemplate(template));
  // Menu.setApplicationMenu(null);

  // load the dist folder from Angular
  win.loadURL(
    url.format({
      pathname: path.join(__dirname, `/dist/index.html`),
      protocol: "file:",
      slashes: true
    })
  );

  // The following is optional and will open the DevTools:
  // win.webContents.openDevTools()

  win.on("closed", () => {
    win = null;
  });
}

app.on("ready", createWindow);

// on macOS, closing the window doesn't quit the app
app.on("window-all-closed", () => {
  if (process.platform !== "darwin") {
    app.quit();
  }
});

// initialize the app's main window
app.on("activate", () => {
  if (win === null) {
    createWindow();
  }
});

Как видите, я попытался добавить меню и ярлыки в приложение. Он отлично работает для копирования и вставки внутри приложения, но не более того, хотя источники, которые я нашел, указывают, что он должен работать и снаружи. Надеюсь, вы сможете мне помочь :) Я уже уверен, что проблема не имеет ничего общего с angular или упаковщиком, так как я пытался скопировать и вставить из окна, открытого electron ., в простую html-форму, и это все еще не работал. Вот форма ниже, на всякий случай, если вам это нужно:

<div class="login-wrapper" fxLayout="row" fxLayoutAlign="center center">

  <mat-card class="box">
    <mat-card-header>
      <mat-card-title>Log in</mat-card-title>
    </mat-card-header>

    <form class="example-form" [formGroup]="loginForm" (ngSubmit)="onSubmit()">
      <mat-card-content>
        <mat-form-field class="example-full-width" [ngClass]="{'error': loginForm.controls['username'].errors && !loginForm.controls['username'].pristine}" dividerColor="{{loginForm.controls['username'].errors && !loginForm.controls['username'].pristine ? 'warn' : 'primary'}}">
          <input type="text" matInput placeholder="Username" formControlName="username" required>
          <mat-error *ngIf="loginForm.controls['username'].errors && !loginForm.hasError('required')" class="error-msg">
             Username is required !
          </mat-error>
        </mat-form-field>

        <mat-form-field class="example-full-width">
          <input type="password" matInput placeholder="Password" formControlName="password" required>
          <mat-error *ngIf="loginForm.controls['password'].errors && !loginForm.hasError('required')" class="error-msg">
            Password is required
          </mat-error>
        </mat-form-field>
      </mat-card-content>
      <button type="submit"  [disabled]="!loginForm.valid" class="btn-block" color="accent" mat-stroked-button><span *ngIf="loading" class="spinner-border spinner-border-sm mr-1"></span>
        Log in</button>
    </form>
      <mat-checkbox [(ngModel)]="remember" (change)="rememberChange()"> Remember 
         me</mat-checkbox>
      </mat-card>

    </div>

Хорошего дня и заранее спасибо сообществу

Я использую Angular 8.2.13, электрон 7.1.1 и электронный упаковщик 13.1.1. Я упаковываю свое приложение для Windows.

NB: я новичок в размещении сообщений на StackOverflow, извините, если мой пост находится не в том месте


person Vimaire    schedule 14.01.2020    source источник
comment
Здесь может иметь значение электронная версия и платформа, на которой вы работаете. Судя по вашему коду, вы работаете на MacOS? Какой контент вы пытаетесь копировать?   -  person Rhayene    schedule 14.01.2020
comment
Я изменил это спасибо. Нет, я работаю в Windows и пытаюсь просто скопировать текст, скопировать и вставить серийные номера и коды продуктов в приложение.   -  person Vimaire    schedule 14.01.2020
comment
А, теперь я вижу - вы пытаетесь скопировать текст извне в приложение - а не из приложения наружу, как я предполагал - спасибо за разъяснение этого :) Итак, у вас есть текстовое поле или форма, в которую вы хотите скопировать материал, правильно ?   -  person Rhayene    schedule 14.01.2020
comment
Да, у меня есть форма с несколькими входами, куда я хотел бы иметь возможность вставлять текст из-за пределов приложения. И было бы неплохо иметь возможность копировать из приложения и вставлять его вне приложения. Но я предполагаю, что как только один будет сделан, другой будет совершенно таким же процессом.   -  person Vimaire    schedule 14.01.2020
comment
Тем временем вы можете сделать одну вещь - устранить angular, загрузив простой html с формой в вашем окне, и посмотреть, сохраняется ли ваша проблема. Если да, попробуйте другую электронную версию, чтобы исключить возможность электронной ошибки.   -  person Rhayene    schedule 14.01.2020
comment
Ну, я думаю, что это исходит от электрона, потому что, когда я запускаю свое приложение в браузере с помощью ng serve, копирование и прошлое работают нормально, но проблема начинается, когда я упаковываю его с помощью электрона.   -  person Vimaire    schedule 15.01.2020
comment
Вы все еще хотите это сделать, потому что легче отлаживать, если у вас есть простой html вместо сложного углового приложения, и у вас есть подготовленный пример проекта на случай, если вам нужно будет отправить отчет об ошибке. Если вы начинаете свой проект с электронной средой выполнения вместо того, чтобы собирать ее, а затем запускать - у вас все еще есть проблема (исключая проблемы в упакованном формате)?   -  person Rhayene    schedule 15.01.2020
comment
Когда вы говорите о запуске проекта со средой выполнения электрона, вы имеете в виду ng build --base-href ./ && electronic . ? Извините, если у меня возникли трудности с получением чего-то, это мой первый угловой и электронный проект, ха-ха   -  person Vimaire    schedule 15.01.2020
comment
:) нет проблем, и да, electron . чтобы убрать упаковщика из поля зрения на данный момент   -  person Rhayene    schedule 15.01.2020
comment
Ну, я только что проверил, и с electron . я все еще не могу копировать и вставлять, и я проверяю с помощью простой html-формы (моя форма входа)   -  person Vimaire    schedule 15.01.2020
comment
Очень хорошо, теперь у вас есть четкое доказательство того, что ваша проблема не имеет ничего общего с angular и упаковщиком - если вы отредактируете свой вопрос, включив в него свой html и обновите уже содержащийся основной скрипт, это увеличит ваши шансы на получение ответа. К сожалению, я не могу воспроизвести вашу проблему - я могу копировать и вставлять в обоих направлениях с помощью клавиатуры Ctrl+C Ctrl+V. Может быть, я все еще что-то упускаю.   -  person Rhayene    schedule 16.01.2020
comment
Большое спасибо за вашу помощь, я изменился, как вы сказали, надеясь, что кто-то сможет мне помочь :) хорошего дня   -  person Vimaire    schedule 16.01.2020


Ответы (1)


Для тех, у кого может быть такая же проблема, как у меня, я исправил это. На самом деле это не имело ничего общего с кодом, просто антивирус компании, который помещал мое приложение в карантин каждый раз, когда я его запускал. Занес в белый список, и все заработало для копирования и вставки. Просто жаль, что я не понял это раньше

person Vimaire    schedule 28.01.2020