電子アプリが閉じたときにメインからレンダリングするメッセージを送信する方法

dr_nyt

ウェブコンテンツを使用してアプリを閉じるときにメインからレンダリングにメッセージを送信しようとしていますが、アプリが閉じたかどうかを確認するイベントがないようです。

メインで

mainWindow.webContents.on('did-stop-loading', () => {
        mainWindow.webContents.send('ping', 'save!')
});

レンダラー上

require('electron').ipcRenderer.on('ping', (event, message) => {
    console.log(message) // Prints 'save!'

    // Save json to a file.
    fs.writeFile("library.json", 'json', function(err) {
        if(err) {
            return console.log(err);
        }
        console.log("Library Saved!");
    });
});

これは機能しますが、アプリを閉じたときにこれを実行する方法が必要です。しかし、webcontentsには、ウィンドウのように「閉じる」イベントがないようです。

mainWindow.on('close', () => {
        console.log("Run right before the app is closed");
});
クリントクリントン

私は昨日まったく同じ問題を抱えていました、そして私はそれを解決する方法を見つけました。"e.preventDefault()は、ウィンドウが実際に閉じるのを停止するため、メッセージをレンダラープロセスに送信する時間があります。メインプロセスがレンダラープロセスからメッセージを受信すると、app.quit()メソッドを呼び出します。無限ループで続くcloseイベントをもう一度呼び出します。これを防ぐには、イベントが2回呼び出されているかどうかを確認して、最終的にアプリを閉じる必要があります。これがお役に立てば幸いです。

メインプロセスについて:

    const ipc = require('electron').ipcMain;
    let status = 0;

    mainWindow.on('close', function (e) {
    if (status == 0) {
      if (mainWindow) {
        e.preventDefault();
        mainWindow.webContents.send('app-close');
      }
    }
  })

ipc.on('closed', _ => {
  status = 1;
  mainWindow = null;
  if (process.platform !== 'darwin') {
    app.quit();
  }
})

レンダラープロセス:

const electron = require('electron');
const ipc = electron.ipcRenderer;

ipc.on('app-close', _ => {

        //do something here...

        ipc.send('closed');
    });

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

アプリケーションが閉じられたときにリアルタイムで通話/メッセージを受信する方法

分類Dev

アプリのメインビューが閉じているが、セカンダリビューが開いたままで、スタートメニューからアプリを開いているときに、UWPアプリのメインビューを復元するにはどうすればよいですか?

分類Dev

成功したログインがリダイレクトURLに移動できるときに、成功したログインポップアップメッセージを表示するにはどうすればよいですか?

分類Dev

ポップアップが再度開かれたときに、ポップアップスクリプトがコンテンツスクリプトにさらにメッセージを送信するのはなぜですか?

分類Dev

コンテンツが編集されたときにWebフォームから電子メールアドレスにメールを送信する

分類Dev

RecyclerViewアイテムがクリックされたときにフラグメントからインテントを送信するAndroidの方法

分類Dev

crontab出力から電子メールで送信されたときに電子メールコンテンツのヘッダーを表示するmutt

分類Dev

ペイロード付きのカスタムメッセージをボットからクライアントアプリケーションにダイレクトライン経由で送信するにはどうすればよいですか?

分類Dev

USB電話でアプリを実行しているときに、AndroidStudioが「I / SurfaceView:...」メッセージをコンソールにスパム送信する

分類Dev

アプリが閉じているとき、または電話がオフになっているときに、Android / iOSアプリでプッシャーメッセージを受信できますか

分類Dev

ユーザーが既存の電子メールアドレスを変更したときに、セッションを破棄し、ユーザーをサインインページにリダイレクトします

分類Dev

ミラーリングされたデポジトリを備えたメインLinuxサーバーからアップデートをプルするためにセカンダリUbuntu / DebianサーバーでFTPを再度有効にする方法は?

分類Dev

PHPフォーム送信のダウンロードが失敗したときにクライアントにメッセージを送信する方法

分類Dev

ユーザーが電子メールのリンクからページにアクセスしたときにのみ、ビデオモーダルを自動的に開いて再生を開始することは可能ですか?

分類Dev

マウントされたディスクイメージからKaliLinuxをアップグレードしようとしたときに、「リポジトリが署名されていません…」というメッセージを回避するにはどうすればよいですか?

分類Dev

閉じるアイコンをクリックしたときにリダイレクトをキャンセルする方法

分類Dev

PloneFormGenのリッカートオプションを設定して、電子メールとして送信され、データアダプターに保存されたときに、回答とともに質問を表示することはできますか?

分類Dev

メッセージボックスを使用して閉じるボタン[X]がクリックされたときに値を返す方法は?(C#)

分類Dev

RewardedVideoAdを閉じると、アプリが閉じます。フラグメントをAdCloseに表示しますか?

分類Dev

Winformでアプリケーションが閉じられたときにNotifyIcon通知を送信する方法はありますか?

分類Dev

アプリがバックグラウンドにあるときにバックグラウンドサービスからポップアップするアラートメッセージを表示する方法

分類Dev

電子メールとパスワードを渡してAsp.NetMVCWebアプリケーションからSlackにログインする方法

分類Dev

PouchDBからドキュメントを削除するか、ユーザーがアプリをログアウトまたは閉じたときにドキュメントを保持するか

分類Dev

ユーザーが実際にネイティブの電子メールクライアントを介して電子メールメッセージを送信した場合、またはキャンセルした場合に、コード名1をチェックインする方法はありますか?

分類Dev

同じ端末内のあるアプリケーションから別のアプリケーションにメッセージを送信する

分類Dev

Windowsがハングしたときにメールを送信するphpスクリプトのアイデア

分類Dev

アプリケーションが閉じた状態でインテントを実行するためのXamarinFirebaseメッセージ

分類Dev

非同期メソッドが完了したときにのみページをレンダリングする

分類Dev

電子メールメッセージの内容をJSP、サーブレットアプリケーションでhtml形式に変換する方法は?

Related 関連記事

  1. 1

    アプリケーションが閉じられたときにリアルタイムで通話/メッセージを受信する方法

  2. 2

    アプリのメインビューが閉じているが、セカンダリビューが開いたままで、スタートメニューからアプリを開いているときに、UWPアプリのメインビューを復元するにはどうすればよいですか?

  3. 3

    成功したログインがリダイレクトURLに移動できるときに、成功したログインポップアップメッセージを表示するにはどうすればよいですか?

  4. 4

    ポップアップが再度開かれたときに、ポップアップスクリプトがコンテンツスクリプトにさらにメッセージを送信するのはなぜですか?

  5. 5

    コンテンツが編集されたときにWebフォームから電子メールアドレスにメールを送信する

  6. 6

    RecyclerViewアイテムがクリックされたときにフラグメントからインテントを送信するAndroidの方法

  7. 7

    crontab出力から電子メールで送信されたときに電子メールコンテンツのヘッダーを表示するmutt

  8. 8

    ペイロード付きのカスタムメッセージをボットからクライアントアプリケーションにダイレクトライン経由で送信するにはどうすればよいですか?

  9. 9

    USB電話でアプリを実行しているときに、AndroidStudioが「I / SurfaceView:...」メッセージをコンソールにスパム送信する

  10. 10

    アプリが閉じているとき、または電話がオフになっているときに、Android / iOSアプリでプッシャーメッセージを受信できますか

  11. 11

    ユーザーが既存の電子メールアドレスを変更したときに、セッションを破棄し、ユーザーをサインインページにリダイレクトします

  12. 12

    ミラーリングされたデポジトリを備えたメインLinuxサーバーからアップデートをプルするためにセカンダリUbuntu / DebianサーバーでFTPを再度有効にする方法は?

  13. 13

    PHPフォーム送信のダウンロードが失敗したときにクライアントにメッセージを送信する方法

  14. 14

    ユーザーが電子メールのリンクからページにアクセスしたときにのみ、ビデオモーダルを自動的に開いて再生を開始することは可能ですか?

  15. 15

    マウントされたディスクイメージからKaliLinuxをアップグレードしようとしたときに、「リポジトリが署名されていません…」というメッセージを回避するにはどうすればよいですか?

  16. 16

    閉じるアイコンをクリックしたときにリダイレクトをキャンセルする方法

  17. 17

    PloneFormGenのリッカートオプションを設定して、電子メールとして送信され、データアダプターに保存されたときに、回答とともに質問を表示することはできますか?

  18. 18

    メッセージボックスを使用して閉じるボタン[X]がクリックされたときに値を返す方法は?(C#)

  19. 19

    RewardedVideoAdを閉じると、アプリが閉じます。フラグメントをAdCloseに表示しますか?

  20. 20

    Winformでアプリケーションが閉じられたときにNotifyIcon通知を送信する方法はありますか?

  21. 21

    アプリがバックグラウンドにあるときにバックグラウンドサービスからポップアップするアラートメッセージを表示する方法

  22. 22

    電子メールとパスワードを渡してAsp.NetMVCWebアプリケーションからSlackにログインする方法

  23. 23

    PouchDBからドキュメントを削除するか、ユーザーがアプリをログアウトまたは閉じたときにドキュメントを保持するか

  24. 24

    ユーザーが実際にネイティブの電子メールクライアントを介して電子メールメッセージを送信した場合、またはキャンセルした場合に、コード名1をチェックインする方法はありますか?

  25. 25

    同じ端末内のあるアプリケーションから別のアプリケーションにメッセージを送信する

  26. 26

    Windowsがハングしたときにメールを送信するphpスクリプトのアイデア

  27. 27

    アプリケーションが閉じた状態でインテントを実行するためのXamarinFirebaseメッセージ

  28. 28

    非同期メソッドが完了したときにのみページをレンダリングする

  29. 29

    電子メールメッセージの内容をJSP、サーブレットアプリケーションでhtml形式に変換する方法は?

ホットタグ

アーカイブ