export default PrintScreenComponent; // Main process (main.js) const { app, BrowserWindow, globalShortcut, clipboard, nativeImage } = require('electron'); const screenshot = require('screenshot-desktop'); app.whenReady().then(() => { // Register global shortcut (Print Screen key) globalShortcut.register('PrintScreen', async () => { try { // Capture screen const imgBuffer = await screenshot();
// Specific element capture document.getElementById('elementBtn').addEventListener('click', async () => { try { const element = document.getElementById('captureCard'); showNotification('Capturing element...'); const screenshot = await ElementScreenshot.captureElement(element); showPreview(screenshot); ScreenshotSaver.saveAsFile(screenshot, 'element_screenshot.png'); showNotification('Element screenshot saved!'); } catch (error) { showNotification('Failed to capture element', 'error'); } });
static async saveToServer(screenshot, endpoint) { const formData = new FormData(); formData.append('screenshot', screenshot.blob, `screenshot_${Date.now()}.png`); try { const response = await fetch(endpoint, { method: 'POST', body: formData }); return await response.json(); } catch (error) { console.error('Failed to save to server:', error); throw error; } } } <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Print Screen Feature</title> <style> .screenshot-container { position: fixed; bottom: 20px; right: 20px; z-index: 9999; } .screenshot-btn { background: #4CAF50; color: white; border: none; padding: 12px 24px; border-radius: 8px; cursor: pointer; font-size: 16px; margin: 5px; box-shadow: 0 2px 5px rgba(0,0,0,0.2); } print screen command
@keyframes slideIn { from { transform: translateX(100%); opacity: 0; } to { transform: translateX(0); opacity: 1; } } </style> </head> <body> <div class="screenshot-container"> <button class="screenshot-btn" id="fullScreenBtn">📸 Full Screen</button> <button class="screenshot-btn" id="viewportBtn">👁️ Viewport</button> <button class="screenshot-btn" id="elementBtn">🎯 Capture Card</button> </div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/1.4.1/html2canvas.min.js"></script> <script> const printScreen = new PrintScreenFeature(); export default PrintScreenComponent; // Main process (main
1. Basic Print Screen - Captures Entire Screen class PrintScreenFeature { constructor() { this.canvas = null; this.stream = null; } // Capture entire screen async captureFullScreen() { try { const stream = await navigator.mediaDevices.getDisplayMedia({ video: { mediaSource: "screen", width: { ideal: 1920 }, height: { ideal: 1080 } }, audio: false }); this.stream = stream; const videoTrack = stream.getVideoTracks()[0]; // Create video element to capture frame const video = document.createElement('video'); video.srcObject = stream; await video.play(); // Capture frame const screenshot = await this.captureFrame(video); // Stop the stream videoTrack.stop(); stream.getTracks().forEach(track => track.stop()); return screenshot; } catch (error) { console.error('Error capturing screen:', error); throw error; } }
const downloadScreenshot = () => { if (screenshot) { const link = document.createElement('a'); link.download = `screenshot_${Date.now()}.png`; link.href = screenshot; link.click(); } }; export default PrintScreenComponent
const copyToClipboard = async () => { if (screenshot) { const blob = await (await fetch(screenshot)).blob(); await navigator.clipboard.write([ new ClipboardItem({ [blob.type]: blob }) ]); alert('Copied to clipboard!'); } };
1ENmwWhi5RDvZFsfF2y1bQgVbZpMzc5hTu
0x72c930652AcbcAc0ceFeA1e5b8e2D83A48523a9E
LheYRi4NgfMTSQDPVBrHK4ZR8zeAZZGjKN
DNMryCXxVxL3kf3w49ebqTwtqFqy3xueLt
1ENmwWhi5RDvZFsfF2y1bQgVbZpMzc5hTu
0x72c930652AcbcAc0ceFeA1e5b8e2D83A48523a9E
DbH4SxX6bvhJtmhZQ2WVChec8PAxC8iKX5YEfw9brkRC