<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        使用electron實現百度網盤懸浮窗口功能的示例代碼

        來源:懂視網 責編:小采 時間:2020-11-27 22:05:46
        文檔

        使用electron實現百度網盤懸浮窗口功能的示例代碼

        使用electron實現百度網盤懸浮窗口功能的示例代碼:相關依賴 里面使用了vuex vue vue-route storeJs storeJs 用來持久化vuex狀態 展示 介紹說明 沒有使用electron內置的-webkit-app-region: drag 因為使用他那個有很多問題 比如事件無法使用 右鍵無法使用 以及不能使用手型等! 安裝 安裝的時候沒有
        推薦度:
        導讀使用electron實現百度網盤懸浮窗口功能的示例代碼:相關依賴 里面使用了vuex vue vue-route storeJs storeJs 用來持久化vuex狀態 展示 介紹說明 沒有使用electron內置的-webkit-app-region: drag 因為使用他那個有很多問題 比如事件無法使用 右鍵無法使用 以及不能使用手型等! 安裝 安裝的時候沒有

        相關依賴

        里面使用了vuex vue vue-route storeJs

        storeJs 用來持久化vuex狀態

        展示


        介紹說明

        沒有使用electron內置的-webkit-app-region: drag 因為使用他那個有很多問題

        比如事件無法使用 右鍵無法使用 以及不能使用手型等!

        安裝

        安裝的時候沒有截圖 所以就參考下我其他的文章吧

        storeJs 安裝

        npm install storejs

        準備寫代碼

        配置路由文件

        export default new Router({
         routes: [
         {path: '/', name: 'home', component: ()=> import('@/view//home')},
         {path: '/suspension', name: 'suspension', component: ()=> import('@/view/components/suspension')}
         ]
        })

        寫懸浮窗頁面

        頁面路徑 /src/renderer/view/components/suspension.vue

        <template>
         <div id="suspension">
         <div class="logo"></div>
         <div class="content_body">
         <div class="upload">拖拽上傳</div>
         </div>
         </div>
        </template>
        
        <script>
         export default {
         name: "suspension",
         mounted() {
         let win = this.$electron.remote.getCurrentWindow();
         let biasX = 0;
         let biasY = 0;
         let that = this;
         document.addEventListener('mousedown', function (e) {
         switch (e.button) {
         case 0:
         biasX = e.x;
         biasY = e.y;
         document.addEventListener('mousemove', moveEvent);
         break;
         case 2:
         that.$electron.ipcRenderer.send('createSuspensionMenu');
         break;
         }
         });
        
         document.addEventListener('mouseup', function () {
         biasX = 0;
         biasY = 0;
         document.removeEventListener('mousemove', moveEvent)
         });
        
         function moveEvent(e) {
         win.setPosition(e.screenX - biasX, e.screenY - biasY)
         }
         }
         }
        </script>
        
        <style>
         * {
         padding: 0;
         margin: 0;
         }
         .upload {
         height: 25px;
         line-height: 25px;
         font-size: 12px;
         text-align: center;
         color: #74A1FA;
         }
        
         .logo {
         width: 40px;
         background: #5B9BFE url("../../assets/img/logo@2x.png") no-repeat 2px 3px;
         background-size: 80%;
         }
        
         .content_body {
         background-color: #EEF4FE;
         width: 100%;
         }
        
         #suspension {
         -webkit-user-select: none;
         cursor: pointer;
         overflow: hidden;
         }
        
         #suspension {
         cursor: pointer !important;
         height: 25px;
         border-radius: 4px;
         display: flex;
         border: 1px solid #3388FE;
         }
        </style>

        主進程創建懸浮窗頁面代碼

        路徑: /src/main/window.js

        import {BrowserWindow, ipcMain, screen, Menu, shell, app, webContents} from 'electron'
        
        var win = null;
        const window = BrowserWindow.fromWebContents(webContents.getFocusedWebContents());
        const winURL = process.env.NODE_ENV === 'development' ? `http://localhost:9080/#/suspension` : `file://${__dirname}/index.html/#/suspension`;
        ipcMain.on('showSuspensionWindow', () => {
         if (win) {
         if (win.isVisible()) {
         createSuspensionWindow();
         } else {
         win.showInactive();
         }
         } else {
         createSuspensionWindow();
         }
        
        });
        
        ipcMain.on('createSuspensionMenu', (e) => {
         const rightM = Menu.buildFromTemplate([
         {label: '開始全部任務', enabled: false},
         {label: '暫停全部任務', enabled: false},
         {label: '本次傳輸完自動關機'},
         {type: 'separator'},
         {
         label: '隱藏懸浮窗',
         click: () => {
         window.webContents.send('hideSuspension', false);
         win.hide()
         }
         },
         {type: 'separator'},
         {
         label: '加入qq群',
         click: () => {
         shell.openExternal('tencent://groupwpa/?subcmd=all¶m=7B2267726F757055696E223A3831343237303636392C2274696D655374616D70223A313533393531303138387D0A');
         }
         },
         {
         label: 'GitHub地址',
         click: () => {
         shell.openExternal('https://github.com/lihaotian0607/auth');
         }
         },
         {
         label: '退出軟件',
         click: () => {
         app.quit();
         }
         },
         ]);
         rightM.popup({});
        });
        
        function createSuspensionWindow() {
         win = new BrowserWindow({
         width: 107, //懸浮窗口的寬度 比實際DIV的寬度要多2px 因為有1px的邊框
         height: 27, //懸浮窗口的高度 比實際DIV的高度要多2px 因為有1px的邊框
         type: 'toolbar', //創建的窗口類型為工具欄窗口
         frame: false, //要創建無邊框窗口
         resizable: false, //禁止窗口大小縮放
         show: false, //先不讓窗口顯示
         webPreferences: {
         devTools: false //關閉調試工具
         },
         transparent: true, //設置透明
         alwaysOnTop: true, //窗口是否總是顯示在其他窗口之前
         });
         const size = screen.getPrimaryDisplay().workAreaSize; //獲取顯示器的寬高
         const winSize = win.getSize(); //獲取窗口寬高
        
         //設置窗口的位置 注意x軸要桌面的寬度 - 窗口的寬度
         win.setPosition(size.width - winSize[0], 100);
         win.loadURL(winURL);
        
         win.once('ready-to-show', () => {
         win.show()
         });
        
         win.on('close', () => {
         win = null;
         })
        }
        
        ipcMain.on('hideSuspensionWindow', () => {
         if (win) {
         win.hide();
         }
        });

        store文件

        路徑: /src/renderer/store/modules/suspension.js

        import storejs from 'storejs'
        
        const state = {
         show: storejs.get('showSuspension')
        };
        
        const actions = {
         showSuspension: function ({state, commit}) {
         let status = true;
         storejs.set('showSuspension', status);
         state.show = status;
         },
        
         hideSuspension: function ({state, commit}) {
         let status = false;
         storejs.set('showSuspension', status);
         state.show = status;
         },
        };
        
        export default ({
         state,
         actions
        });

        遺留問題

      1. 在軟件關閉之后重啟會導致懸浮窗口的位置重置 也曾嘗試在主進程中使用store.js 但是不能用!
      2. 如果想解決這個問題 可以在渲染進程中將拖動的最后坐標保存到storejs中
      3. 在渲染進程給主進程發送異步消息的時候將坐標攜帶進去 也可以使用nedb在主進程中存儲坐標!
      4. github地址

        使用electron制作百度網盤客戶端: https://github.com/lihaotian0607/baidupan
        使用electron制作百度網盤懸浮窗: https://github.com/lihaotian0607/electron-suspension

        目前這個開源代碼中沒有懸浮窗 有時間了會加上去!!!

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        使用electron實現百度網盤懸浮窗口功能的示例代碼

        使用electron實現百度網盤懸浮窗口功能的示例代碼:相關依賴 里面使用了vuex vue vue-route storeJs storeJs 用來持久化vuex狀態 展示 介紹說明 沒有使用electron內置的-webkit-app-region: drag 因為使用他那個有很多問題 比如事件無法使用 右鍵無法使用 以及不能使用手型等! 安裝 安裝的時候沒有
        推薦度:
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 男人扒开添女人下部免费视频| 2017亚洲男人天堂一| 国产亚洲漂亮白嫩美女在线| 免费观看理论片毛片| 亚洲国产成人久久一区二区三区| 免费无码精品黄AV电影| 亚洲日本一线产区和二线| 日本视频免费在线| 黄色毛片免费观看| 亚洲中文字幕无码中文字在线| 大妹子影视剧在线观看全集免费| 亚洲VA中文字幕不卡无码| 91青青国产在线观看免费| 亚洲剧情在线观看| 国产精品美女自在线观看免费| 一级毛片在线免费视频| 亚洲国产精品无码久久SM| 99热这里有免费国产精品| 亚洲一级毛片免费观看| 国产成人无码免费视频97| 国产久爱免费精品视频| 无码乱人伦一区二区亚洲一| 一个人免费高清在线观看| 国产AV无码专区亚洲AV麻豆丫| 中文字幕日韩亚洲| 1000部啪啪未满十八勿入免费| 亚洲另类无码专区丝袜| 毛茸茸bbw亚洲人| 久久精品一本到99热免费| 亚洲熟女综合一区二区三区| 亚洲精品成人区在线观看| 午夜影院免费观看| 亚洲精品无码专区久久| 亚洲熟妇av一区二区三区| 久久受www免费人成_看片中文| 免费激情网站国产高清第一页| 国产亚洲A∨片在线观看| 最近中文字幕mv免费高清视频7| 一级做a爰全过程免费视频毛片| 亚洲欧洲日产韩国在线| 亚洲欧洲中文日韩av乱码|