0
在電子應用之前,我可以把我的窗口的屏幕截圖使用此的主要過程:捕捉截圖戒菸
let win = new BrowserWindow(/* ... */);
let capturedPicFilePath = /* where I want that saved */
win.capturePage((img) => {
fs.writeFile(capturedPicFilePath, img.toPng(),() => console.log(`Saved ${capturedPicFilePath}`))
})
真棒。現在我想在應用程序退出之前這樣做。電子發射應該是一個particular event,我試圖用:
事件:
'before-quit'
:申請前發出開始關閉其窗口。
問題:如果我在一個處理器使用相同的代碼與上述針對該事件,該文件被創建,但空。
我猜這是因爲屏幕截圖是以異步方式拍攝的,而且當它發生時窗口已經關閉。
所以這並沒有爲我工作:
app.on('before-quit', (event) => {
win.capturePage(function(img) {
fs.writeFile(capturedPicFilePath, img.toPng(),() => console.log(`Saved ${capturedPicFilePath}`))
})
})
編輯1:在渲染過程中與window.onbeforeunload
這樣做失敗了。執行屏幕截圖也爲時已晚。我在主控制檯(即它到達終端)得到了這個結果:
試圖在已關閉或釋放的渲染器窗口中調用函數。
上下文:現在我正在探索屏幕捕獲(主要用於支持目的)的可能性的限制,並找到一個。我還不確定我會怎麼處理這個邊緣情況,我想這不僅僅是爲了支持,我還考慮在啓動時顯示之前狀態的模糊圖片(我的應用程序的某些部分需要1-2秒才能加載)。
任何想法?
非常感謝!我接受了你的答案,但是我必須添加一個布爾值守,以避免在關閉事件上循環→退出→關閉事件→退出......我在上面的代碼片段中執行的方式與我實際做的稍有不同,但這個想法就在那裏。 (該編輯仍在等待同行評審) –