首页 > 系统相关 >设置windows背景

设置windows背景

时间:2024-10-16 17:10:58浏览次数:8  
标签:exe 窗口 windows 背景 return char 设置 桌面 NW

设置windows背景

目的

  1. 使便利贴可以启动时直接显示在桌面.且不应当影响壁纸的正常展示.
  2. 不会在任务栏中出现标题等信息影响正在做的项目.
  3. 有快捷键可以快速预览一下.比如win+D看一下自己的任务.
    即在不破坏壁纸的情况下在桌面增加一些额外展示.

实现方式

  1. 在桌面上方直接再画一个窗口,这个窗口作为桌面
  2. 在这个窗口设计墙纸和增加其他内容

具体细节

  • 制作程序一: 给予两个参数(类名),设置窗口的父子关系
  • 制作程序二: 使用nw创建一个窗口(不需要设置全屏),在此基础上增加js监听,壁纸,图标打开软件等功能.

实际操作

使用spy查看窗口类名


获得桌面句柄和NW相关窗口类名从而获得窗口句柄.

程序一

使用CFree构建该代码,
核心函数: void setParent(childClassName, ParentClassName);
源代码:

// setWindowParent.c
#include <windows.h>
#include <stdio.h>
void hint();
void setParent(char* childClassName,char* ParentClassName);
int main(int argc, char* argv[]){
    //printf("%d %s", argc, argv[0]); argv[0]保存了自身数据
	if(argc!=3){ hint(); return 1; }
	setParent(argv[1], argv[2]);
	return 0;
}
void hint(){
	printf("this need two args about TopWindow CLASSNAME, you can look it by spy++\n");
	printf("the desktop's class name is 'Progman'\n");
}
void setParent(char* childClassName,char* ParentClassName){ SetParent(FindWindow(childClassName, 0), FindWindow(ParentClassName, 0)); }

调用使用批处理文件: setWindowParent.exe Chrome_WidgetWin_1 Progman

程序二

使用NW.js配套环境构造该程序,步骤如下:

  1. 创建package.json


//package.json
{
    "name": "", // 任务栏中名称
    "main": "www/index.html", // 主界面网页位置
    "js-flags": "--expose-gc",
    "window": {
        "title": "", // 标题
        "toolbar": false, // 菜单栏
        "width": 816,
        "height": 624,
        "icon": "www/icon/icon.png", // 图标

        "position": "center", // 窗口在父窗口的位置
        "min_width": 400,
        "min_height": 200,
        "show": true, // 是否可见
        "fullscreen": false // 是否全屏
    }
}
  1. 在www文件夹下创建index.html等html必需文件

  2. 执行Game.exe程序,显示如下

集成

  1. 将setWindowParent.exe放置NW.exe环境下,建立批处理start.bat文件:
rem start.bat
start NW.exe
setWindowParent.exe Chrome_WidgetWin_1  Progman
  1. win+R输入shell:startup打开自启动文件夹,设置快捷方式或批处理文件放入该文件夹也可以使用C:\Users\outer\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup这个路径加入执行文件

问题

在最新的测试中,我打开了VSCode,在执行start.bat的时候,发现嵌入桌面的不是NW.exe程序,而是VSCode,我意识到它们的类名都是Chrome_WidgetWin_1.经过spyxx验证,确实如此.所以,基于Chromium的软件基本都是相同的类名,并就地执行最近的Chrome_WidgetWin_1.当我再次执行setWindowParent,虽然NW.exe也被加载进去了,但是结果上却只出现了VSCode界面,原因未知.在我将VSCode隐藏在桌面时,我便无法再获得该窗口了.

这些问题需要一些操作:

  1. 在加载EXE作为桌面时,禁止最小化.
  2. 在加载时,先判断桌面下是否有相同类名,如果Progman下已存在一个该窗口,就不要再加载了.

解决方案:

  1. 这个通过NW.js本身处理.
  2. 先打开NW.exe程序,延迟2s,但NW.exe被加载后再将该窗口加入桌面.

优化

  • 直接绑定NW.js和C程序,不允许更改数据.
  • 设置自启动

最终成品

// startNW.exe
#include <windows.h>
#include <stdio.h>
HWND getWindow(char* className, char* titleName){return FindWindow(className, titleName);}
HWND getDesktop(){return FindWindow("Progman", 0);}
HWND getNW(){return FindWindow("Chrome_WidgetWin_1", 0);}
int runExe(char* exeName){  
    STARTUPINFO si;  PROCESS_INFORMATION pi;
    ZeroMemory(&si, sizeof(si)); si.cb = sizeof(si);
    ZeroMemory(&pi, sizeof(pi));
    return CreateProcess(NULL,exeName,NULL,NULL,FALSE,0,NULL,NULL,&si,&pi);
}
int main(int argc, char* argv[]){
	runExe("NW.exe");
	Sleep(1000);
	SetParent(getNW(), getWindow("Progman",0));
	return 0;
}

将该软件直接放入NW.exe同一路径下,直接执行NW.exe.
想修改窗口大小和风格以及背景图,桌面图标等,请自行学习NW程序相关内容.

标签:exe,窗口,windows,背景,return,char,设置,桌面,NW
From: https://www.cnblogs.com/orth/p/18470354

相关文章

  • 从Windows 11 23H2升级至24H2后,Git操作提示文件所有权错误的3种有效解决方案
    从Windows1123H2升级至24H2后,Git操作提示文件所有权错误的3种有效解决方案在升级至Windows1124H2后,使用gitadd等命令时,可能会遇到如下错误提示:Error:libgit2returned:repositorypath'D:/repo/it-tools'isnotownedbycurrentuser.Toaddanexceptionforth......
  • windows下安装rabbitmq
    下载软件rabbit是是使用erlang语言编写的,因此需要下载ERLANG,注意rabbitmq的版本和ERLANG的兼容性我们现在erlang26.2的版本https://www.erlang.org/patches/otp-26.2rabbitmq使用3.13.6版本安装软件最好先关掉360等杀毒软件先安装erlang安装路径不要有中文......
  • wsl2 网络相关设置
    ws2相关设置参考链接:jumphere从window主机查看linx子系统ip【win->wsl】wsl-d<DistributionName>hostname-I从linux子系统查看windown主机ip【wsl->win】iprouteshow|grep-idefault|awk'{print$3}'获取WSLGUIDGet-NetFirewallHyperVVMCreator输出......
  • YOLO11在训练和导出时的一些参数设置
    train时,imsz只能设置成1个整数。如果设置成数组,会提示:updatingto'imgsz=640'.'train'and'val'imgszmustbeaninteger,while'predict'and'export' 图像会以较长的边等比例缩放到指定的整数,然后较短的边的两侧填充114到指定的整数尺寸。即最终会是一个正方形,原图缩放......
  • 西数SN580/SN770安装Windows 11 24H2蓝屏死机 下面是解决办法
    如果你使用的是西部数据SN580或SN770固态硬盘,则在安装或升级到Windows1124H2版后可能出现蓝屏死机问题。这两款固态硬盘都没有DRAM缓存模块,缓存模块充当数据中转站,可以在写入数据时预先将数据写入速度更快的缓存模块再向硬盘里写入。虽然微软还未发布该问题的详......
  • 【质量视角】可观测性背景下的质量保障思路
    作者:京东保险郑飞背景介绍目前质量团队正在积极建设和完善应用监控能力,旨在能及时发现并解决问题,为线上服务稳定性保驾护航。随着可观测性概念的逐渐普及,监控的建设也有了新的挑战和使命。本文将探讨在可观测性背景下,作为一个测试人员在质量保障中的一些思路和个人思考,以及为......
  • Windows安装MySQL(zip安装)
    1.下载#dev.mysql.com>Download>下载MySQLCommunity(GPL)Downloads2.配置my.ini[mysqld]#一定要加这个,默认启动端口是3306,一般不会用默认端口port=50013#设置mysql的安装目录,一定要\\,否则不识别basedir=G:\\soft\\mysql-8.4.3-winx64#设置mysql数据库的数据的......
  • 基于RabbitMQ(windows)的MQTT(WSS)的安装配置和使用
    RabbitMQ官网地址https://www.rabbitmq.com/1.安装Erlang/OTP2.安装RabbitMQ3.开启后台管理rabbitmq-pluginsenablerabbitmq_managementhttp://127.0.0.1:15672/#/ 用户名密码默认guest4.开启mqttrabbitmq-pluginsenablerabbitmq_mqtt开启webmqttrabbitmq-pluginsenab......
  • 在Windows下载VMware安装麒麟桌面操作系统
    在Windows上安装下载VMwareWworkstationPro一、下载安装虚拟机下载:去vmware官网下载PC端VMware;安装:下载文件:安装之后的界面;点击下一步出现了这个页面,证明电脑里面已经存在vmware,可以直接用,如果需要重新安装,可进行直接删除,再重新打开安装程序继续安装;到选择位置......
  • Linux 和 Windows 在处理系统休眠或睡眠状态的方式上存在差异,
    Linux和Windows在处理系统休眠或睡眠状态的方式上存在差异,这主要取决于各自的设计理念以及对系统性能和功耗的考虑。###Linux对休眠或睡眠的处理Linux内核支持多种节能模式,包括但不限于:-**休眠(SuspendtoDisk)**:系统保存当前状态到硬盘,然后关闭电源。恢复时重新加载之前......