Unity發(fā)布exe去窗口設置分辨率

前段時間做游戲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);

API很多胀瞪,具體的可以到https://msdn.microsoft.com/en-us/library/windows/desktop/ms633591(v=vs.85).aspx查詢


去邊框

    //SetWindowLong參數(shù)
    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位值排惨。每一個窗口均有一個由創(chuàng)建該窗口的應用程序使用的32位值。碰凶。
    public const int GWL_WNDPROC = -4; //獲得窗口過程的地址暮芭,或代表窗口過程的地址的句柄。必須使用CallWindowProc函數(shù)調(diào)用窗口過程欲低。

    //window style參數(shù)
    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參數(shù)
    public const int SW_FORCEMINIMIZE = 11; //在WindowNT5.0中最小化窗口辕宏,即使擁有窗口的線程被掛起也會最小化。在從其他線程最小化窗口時才使用這個參數(shù)砾莱。
    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;   //激活并顯示窗口。如果窗口最小化或最大化恤磷,則系統(tǒng)將窗口恢復到原來的尺寸和位置面哼。在恢復最小化窗口時,應用程序應該指定這個標志扫步。
    public const int SW_SHOW = 5;  //在窗口原來的位置以原來的尺寸激活和顯示窗口
    public const int SW_SHOWDEFAULT = 10;   //依據(jù)在STARTUPINFO結(jié)構(gòu)中指定的SW_FLAG標志設定顯示狀態(tài),STARTUPINFO 結(jié)構(gòu)是由啟動應用程序的程序傳遞給CreateProcess函數(shù)的匈子。nCmdShow=10河胎。
    public const int SW_SHOWMAXIMIZED = 3; //激活窗口并將其最大化。nCmdShow=3虎敦。
    public const int SW_SHOWMINIMIZED = 2; //激活窗口并將其最小化游岳。nCmdShow=2。
    public const int SW_SHOWMINNOACTIVE = 7;   //窗口最小化其徙,激活窗口仍然維持激活狀態(tài)胚迫。nCmdShow=7。
    public const int SW_SHOWNA = 8;    //以窗口原來的狀態(tài)顯示窗口唾那。激活窗口仍然維持激活狀態(tài)访锻。nCmdShow=8。
    public const int SW_SHOWNOACTIVATE = 4;    //以窗口最近一次的大小和狀態(tài)顯示窗口。激活窗口仍然維持激活狀態(tài)期犬。nCmdShow=4河哑。
    public const int SW_SHOWNORMAL = 1; //激活并顯示一個窗口。如果窗口被最小化或最大化龟虎,系統(tǒng)將其恢復到原來的尺寸和大小璃谨。應用程序在第一次顯示窗口的時候應該指定此標志。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);
    }

還可以做最大化最小化之類的
做成之后發(fā)現(xiàn)雖然這樣實現(xiàn)了去邊框佳吞,設置分辨率,但是是有缺陷的
一般的標準windows應用程序可以在任務欄最小化棉安,關閉容达,這樣設置了后這種操作就不行了
不知道什么原因
后來做exe安裝打包,有一個比較好的方法垂券,一般exe需要制作安裝程序
程序不做這些設置花盐,打包的時候給exe加上運行參數(shù)xx.exe -popup
unity有個運行無窗口的參數(shù),給exe加上就行了菇爪,完美解決

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末算芯,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子凳宙,更是在濱河造成了極大的恐慌熙揍,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件氏涩,死亡現(xiàn)場離奇詭異届囚,居然都是意外死亡,警方通過查閱死者的電腦和手機是尖,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進店門意系,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人饺汹,你說我怎么就攤上這事蛔添。” “怎么了兜辞?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵迎瞧,是天一觀的道長。 經(jīng)常有香客問我逸吵,道長凶硅,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任扫皱,我火速辦了婚禮足绅,結(jié)果婚禮上捷绑,老公的妹妹穿的比我還像新娘。我一直安慰自己编检,他們只是感情好胎食,可當我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著允懂,像睡著了一般厕怜。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蕾总,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天粥航,我揣著相機與錄音,去河邊找鬼生百。 笑死递雀,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的蚀浆。 我是一名探鬼主播缀程,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼市俊!你這毒婦竟也來了杨凑?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤摆昧,失蹤者是張志新(化名)和其女友劉穎撩满,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體绅你,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡伺帘,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了忌锯。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片伪嫁。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖汉规,靈堂內(nèi)的尸體忽然破棺而出礼殊,到底是詐尸還是另有隱情,我是刑警寧澤针史,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站碟狞,受9級特大地震影響啄枕,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜族沃,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一频祝、第九天 我趴在偏房一處隱蔽的房頂上張望泌参。 院中可真熱鬧,春花似錦常空、人聲如沸沽一。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽铣缠。三九已至,卻和暖如春昆禽,著一層夾襖步出監(jiān)牢的瞬間蝗蛙,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工醉鳖, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留捡硅,地道東北人。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓盗棵,卻偏偏與公主長得像壮韭,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子纹因,可洞房花燭夜當晚...
    茶點故事閱讀 44,979評論 2 355

推薦閱讀更多精彩內(nèi)容