前段时间做游戏pc端,要求exe运行去窗口,还要固定分辨率

unity有设置分辨率的API:Screen.SetResolution

但是使用这个会跟win32 api冲突

为了去窗口只有全部使用win32 api

使用win32 api必须先定义,有点像使用c++ dll一样

[DllImport("user32.dll")]

static extern IntPtr SetWindowLong(IntPtr hwnd, int _nIndex, int dwNewLong);

[DllImport("user32.dll")]

static extern bool SetWindowPos(IntPtr hWnd, int hWndInsertAfter, int X, int Y, int cx, int cy, uint uFlags);

去边框

//SetWindowLong参数

public const int GWL_EXSTYLE= -20; //获得扩展窗口风格。

public const int GWL_HINSTANCE = -6; //获得应用实例的句柄。。

public const int GWL_HWNDPARENT = -8; //如果父窗口存在,获得父窗口句柄。

public const int GWL_ID = -12; //获得窗口标识。

public const int GWL_STYLE = -16; //获得窗口风格。

public const int GWL_USERDATA = -21; //获得与窗口有关的32位值。每一个窗口均有一个由创建该窗口的应用程序使用的32位值。。

public const int GWL_WNDPROC = -4; //获得窗口过程的地址,或代表窗口过程的地址的句柄。必须使用CallWindowProc函数调用窗口过程。

//window style参数

public const int WS_BORDER = 1; //The window has a thin-line border.

public const int WS_POPUP = 0x800000; //The windows is a pop-up window. This style cannot be used with the WS_CHILD style.

public static IntPtr DisableWindowBorder(IntPtr hwnd)

{

if (!CheckPlatform())

return IntPtr.Zero;

return SetWindowLong(hwnd, GWL_STYLE, WS_POPUP);

}

设置分辨率和窗口位置

//ShowWindow参数

public const int SW_FORCEMINIMIZE = 11; //在WindowNT5.0中最小化窗口,即使拥有窗口的线程被挂起也会最小化。在从其他线程最小化窗口时才使用这个参数。

public const int SW_HIDE = 0; //隐藏窗口并激活其他窗口

public const int SW_MAXIMIZE = 3; //最大化指定的窗口

public const int SW_MINIMIZE = 6; //最小化指定的窗口并且激活在Z序中的下一个顶层窗口。

public const int SW_RESTORE = 9; //激活并显示窗口。如果窗口最小化或最大化,则系统将窗口恢复到原来的尺寸和位置。在恢复最小化窗口时,应用程序应该指定这个标志。

public const int SW_SHOW = 5; //在窗口原来的位置以原来的尺寸激活和显示窗口

public const int SW_SHOWDEFAULT = 10; //依据在STARTUPINFO结构中指定的SW_FLAG标志设定显示状态,STARTUPINFO 结构是由启动应用程序的程序传递给CreateProcess函数的。nCmdShow=10。

public const int SW_SHOWMAXIMIZED = 3; //激活窗口并将其最大化。nCmdShow=3。

public const int SW_SHOWMINIMIZED = 2; //激活窗口并将其最小化。nCmdShow=2。

public const int SW_SHOWMINNOACTIVE = 7; //窗口最小化,激活窗口仍然维持激活状态。nCmdShow=7。

public const int SW_SHOWNA = 8; //以窗口原来的状态显示窗口。激活窗口仍然维持激活状态。nCmdShow=8。

public const int SW_SHOWNOACTIVATE = 4; //以窗口最近一次的大小和状态显示窗口。激活窗口仍然维持激活状态。nCmdShow=4。

public const int SW_SHOWNORMAL = 1; //激活并显示一个窗口。如果窗口被最小化或最大化,系统将其恢复到原来的尺寸和大小。应用程序在第一次显示窗口的时候应该指定此标志。nCmdShow=1。

const uint SWP_SHOWWINDOW = 0x0040;

public static bool SetWindowPosition(IntPtr hWnd, int winWidth, int winHeight)

{

if (!CheckPlatform())

return false;

//显示器支持的所有分辨率

int i = Screen.resolutions.Length;

int resWidth = Screen.resolutions[i - 1].width;

int resHeight = Screen.resolutions[i - 1].height;

int winPosX = resWidth / 2 - winWidth / 2;

int winPosY = resHeight / 2 - winHeight / 2;

return SetWindowPos(hWnd, 0, winPosX, winPosY, winWidth, winHeight, SWP_SHOWWINDOW);

}

还可以做最大化最小化之类的

做成之后发现虽然这样实现了去边框,设置分辨率,但是是有缺陷的

一般的标准windows应用程序可以在任务栏最小化,关闭,这样设置了后这种操作就不行了

不知道什么原因

后来做exe安装打包,有一个比较好的方法,一般exe需要制作安装程序

程序不做这些设置,打包的时候给exe加上运行参数xx.exe -popup

unity有个运行无窗口的参数,给exe加上就行了,完美解决

unity 启动选择分辨率_Unity发布exe去窗口设置分辨率相关推荐

  1. 一键修改分辨率bat_求使用批处理BAT设置分辨率的方法介绍?

    1:PC 机的组成一 IBM公司在1981年推出了自己的微型计算机,英文名为"Personal Computer",翻译成中文就是"个人计算机". 可以这样认为 ...

  2. jq fileupload 设置最大文件大小5m_我猜你并不会设置“分辨率”

    分辨率对于图片的清晰度和文件大小都有着重要的影响,设计时选择合适的分辨率,既能保证图像质量,又能提高工作效率.然而你的分辨率真的设置对了吗? 使用PS等位图软件开始设计时,新建文件就需要设置好分辨率. ...

  3. 如何调成适用计算机的分辨率,电脑分辨率多少合适,教您电脑怎么设置分辨率...

    不同的电脑显示器有合适的屏幕分辨率,所以如果你感觉看着电脑屏幕时很不舒服,还有很可能影响电脑的性能,就很有可能是电脑分辨率设置的不正确.那么电脑分辨率怎么调?下面,小编给大家介绍电脑设置分辨率的步骤了 ...

  4. Unity发布Android APK去掉Unity启动Logo教程

    Unity发布Android APK去掉Unity启动Logo教程 我们要解决的问题: 黑屏时间问题和启动Logo问题,之所以黑屏是因为Activity启动后mUnityPlayer 中的内容还没有准 ...

  5. Unity 发布exe文件,连接不上数据库

    最近在写一个配置工具,需要用到MySql数据库,在unity里面功能都调试好了,发布exe 的时侯,报错,有关于dll的错误,解决办法: 将其修改为.NET2.0 就可以打包了. 但是发布成exe之后 ...

  6. 关于UnityPC端打包参数设置及发布PC端时固定分辨率

    UnityPC端打包参数设置 主要设置都在PlayerSettings里面 Company Name:设置公司名称 Product Name:设置项目名称,这个获取窗体句柄的时候用的到 Default ...

  7. Unity 5.6正式版发布,Unity 2017即将来临

    最新版Unity 5.6正式发布,也是Unity 5.x系列的最后一个版本.其中包括改进的2D功能,更好的图形性能,新的视频播放器,Progressive Lightmapper预览版,新的光照模式, ...

  8. Qt发布exe软件及修改exe应用程序图标

    1.修改exe应用程序图标 1)准备一个ico图标   需要准备一个ico图标,可以将png图片转换成ico图标,图标大小可以设置成128x128. 可以在图标在线转换网站进行在线转换.转换完毕将xx ...

  9. Debian初识(选择最佳镜像发布站点加入source.list文件)

    选择最佳镜像发布站点加入source.list文件:netselect,netselect-apt "该将哪个Debian镜像发布站点加入source.list文件?".有很多方法 ...

最新文章

  1. VS Code – No source control providers 解决方法
  2. [Python图像处理] 三十七.OpenCV直方图统计两万字详解(掩膜直方图、灰度直方图对比、黑夜白天预测)
  3. NodeJS解决跨域问题:Access-Control-Allow-Origin
  4. beetl模板入门例子
  5. 弹簧式止回阀行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  6. 累次积分怎么计算_【高等数学】二重积分化累次积分方法
  7. python 读取png图片 透明度
  8. win7修复计算机 正常启动不了怎么办,Win7系统无法正常启动怎么办
  9. 芜湖计算机专业学校录取分数线,芜湖市各类高中2018年中考录取分数线是多少...
  10. 如何打断制图中的CAD图形?
  11. lol比尔吉沃特服务器未响应,LOL比尔吉沃特9月30日网络波动公告 引起卡机掉线丢包状况...
  12. Python获取英雄联盟的皮肤原画:新手玩家们都懵了!(一)
  13. 停车位检测方法研究综述
  14. C语言入门:计算总成绩和平均成绩
  15. R语言自学笔记-----数据转换
  16. springboot项目接入短信
  17. intel驱动包下载
  18. 十进制浮点数转成二进制(IEEE 754 在线计算器)
  19. 八一农垦计算机专业咋样,黑龙江八一农垦大学(专业学位)计算机技术考研难吗...
  20. CocosCreator横版格斗游戏Demo(三):添加敌人到场景

热门文章

  1. bigemap软件的优势分析
  2. 联想同传系统安装即使用心得
  3. C++:实现DNS劫持(附完整源码)
  4. gdb与peda、pwngdb、pwndbg组合安装与使用
  5. ctfshow 吃瓜杯 web 部分题
  6. mitmproxy的安装与使用学习记录(二)
  7. 仿射变换(affine transformation)
  8. 小度智能音箱冲上王座
  9. photoshop cs6中kuler和minibridge打开是空白的解决方法
  10. echart 地图加阴影效果 四川地图为例