Processing Ajax...

Title
Close Dialog

Message

Confirm
Close Dialog

Confirm
Close Dialog

Confirm
Close Dialog

User Image
Jesse P
1 discussion post
(Just bought this off Steam..Love it!)

Has this been implemented yet?

I found a thread posted in this forum by someone else asking the same question that was posted middle of 2012.

Developers said they were looking into it back at that time.

I'm asking primarily for gaming or other applications that don't offer a full screen window mode. ''There are other border-less apss but they don't work so well.

Like for example I like to play most my games in window full-screen (if supported by the game) to give me easy access to my other monitors. Some games dont support this so your forced to full screen (cant access other monitors without minimizing the game sometimes crashing) or you are stuck in a small bordered window.

Border-less can get rid of those borders and allow non full screen window games to run like they were full screen windowed with no borders.

Hope what I said makes sense.

Hope to see this feature soon if its not implemented already.
Dec 25, 2013 (modified Dec 25, 2013)  • #1
User Image
Y|yukichigai
1 discussion post
What a coincidence. I was registering to post this EXACT suggestion.

To elaborate on Jesse's explanation, this is what many games call "Fullscreen Windowed". The game is rendered as an application window, but with the title bar and borders removed and the window sized to occupy the whole of one monitor. There are a variety of ways this is implemented, but the end result is the same: one screen has your game/etc. on it and nothing but while the process is in focus, yet you are still able to alt-tab to other applications if needed without making the display reinitialize.

As you can imagine, Fullscreen Windowed is one of the greatest features to come to games as far as multiple monitor users are concerned. Unfortunately, it's a RECENT development, and not everyone has adapted to it. Several current-gen AAA titles are lacking the option. There are third-party tools out there which can fake the option, but all the ones I've been able to find are freeware and a bit glitchy. The best one I've found does a good job of keeping the window properly sized for the most part, but apparently doesn't always ensure the current in-focus process is the one it's supposed to be resizing. What this means is that if you alt-tab too fast it'll sometimes grab whatever you alt-tabbed to and maximize it on the screen. Rather unpleasant.

Anyway, what I'm trying to say is that there is a definite need for an application that does this, and more importantly does it CORRECTLY without unpleasant side-effects. It's definitely something that multiple monitor users would want.
Dec 25, 2013  • #2
Keith Lammers (BFS)'s profile on WallpaperFusion.com
It's still on our feature request list, but it's not currently planned for a specific version. If anything changes on that, I'll be sure to post an update.

The closest I've seen to being able to do this is with an app called ShiftWindow (http://grismar.net/shiftwindow/), but I haven't done a lot of testing with it to be honest.

Thanks!
Dec 31, 2013  • #3
User Image
Matthew LeClair
18 discussion posts
I'd love this feature as well.
Jan 3, 2014  • #4
Keith Lammers (BFS)'s profile on WallpaperFusion.com
@Matthew: Vote added :)
Jan 7, 2014  • #5
User Image
Matthew LeClair
18 discussion posts
Quote:
@Matthew: Vote added :)


Great! Because I'm sure there are other gamers that have display fusion that would love to see this kind of support. :)
Jan 8, 2014  • #6
User Image
Rohn Adams
2 discussion posts
Vote added! In the meantime, for other users, this script does exist:
https://www.displayfusion.com/ScriptedFunctions/View/?ID=ab674b2f-b76a-4276-b2ad-e1d3651a2c04
Oct 13, 2015 (modified Oct 13, 2015)  • #7
User Image
Lurkios
7 discussion posts
Has there been any progress towards this function? Mouse-locking made DisplayFusion one of the most useful tools for my legacy gaming addiction on the market - this would really seal the deal, it's function I've been wanting forever.
Apr 8, 2017  • #8
User Image
Jcee
205 discussion posts
This night be the function your looking for ;) (PS I didnt write it, and since im not seeing it in the 'download functions list' Im guessing Keith probably wrote it for me previously :))

Just create a new custom function in C#, pick a key combination, paste the *code below* in
and paste this into the reference field:

System.dll | System.Data.dll | System.Drawing.dll | System.Management.dll | System.Web.dll | System.Windows.Forms.dll | System.Xml.dll

Code

using System;
using System.Drawing;

// The 'windowHandle' parameter will contain the window handle for the:
//   - Active window when run by hotkey
//   - Window Location target when run by a Window Location rule
//   - TitleBar Button owner when run by a TitleBar Button
//   - Jump List owner when run from a Taskbar Jump List
//   - Currently focused window if none of these match
public static class DisplayFusionFunction
{
public static void Run(IntPtr windowHandle)
{
//get the window styles
BFS.WindowEnum.WindowStyle style = BFS.Window.GetWindowStyle(windowHandle);

//if the window has any borders and titles, make it full screen
if(BFS.Window.HasWindowStyle(BFS.WindowEnum.WindowStyle.WS_CAPTION, windowHandle) ||
BFS.Window.HasWindowStyle(BFS.WindowEnum.WindowStyle.WS_SYSMENU, windowHandle) ||
BFS.Window.HasWindowStyle(BFS.WindowEnum.WindowStyle.WS_THICKFRAME__SIZEBOX, windowHandle) ||
BFS.Window.HasWindowStyle(BFS.WindowEnum.WindowStyle.WS_MINIMIZEBOX, windowHandle) ||
BFS.Window.HasWindowStyle(BFS.WindowEnum.WindowStyle.WS_MAXIMIZEBOX, windowHandle))
{
//save the size and position of the window
SaveWindowSize(windowHandle);

//make sure to remove the styles. just toggling these settings may turn on something we dont want
style &= ~BFS.WindowEnum.WindowStyle.WS_CAPTION;
style &= ~BFS.WindowEnum.WindowStyle.WS_SYSMENU;
style &= ~BFS.WindowEnum.WindowStyle.WS_THICKFRAME__SIZEBOX;
style &= ~BFS.WindowEnum.WindowStyle.WS_MINIMIZEBOX;
style &= ~BFS.WindowEnum.WindowStyle.WS_MAXIMIZEBOX;

//set the window style
BFS.Window.SetWindowStyle(style, windowHandle);

//get the bounds of the monitor that the window is in
Rectangle bounds = BFS.Monitor.GetMonitorBoundsByWindow(windowHandle);

//size and position the window to be fullscreen within the monitor
BFS.Window.SetSizeAndLocation(windowHandle, bounds.X, bounds.Y, bounds.Width, bounds.Height);
}
else
{
//if we got here, then the window must already be fullscreen.
//add non-fullscreen styles back to the window
style |= BFS.WindowEnum.WindowStyle.WS_CAPTION;
style |= BFS.WindowEnum.WindowStyle.WS_SYSMENU;
style |= BFS.WindowEnum.WindowStyle.WS_THICKFRAME__SIZEBOX;
style |= BFS.WindowEnum.WindowStyle.WS_MINIMIZEBOX;
style |= BFS.WindowEnum.WindowStyle.WS_MAXIMIZEBOX;

//try and load saved window size and position
bool isMaximized;
Rectangle bounds = GetSavedWindowSize(windowHandle, out isMaximized);

//set the window style
BFS.Window.SetWindowStyle(style, windowHandle);

//if we couldnt load the size, exit the script
if(bounds.Equals(Rectangle.Empty))
return;

//if the window was maximized, maximize it, otherwise set the window size and location with the values we loaded
if(isMaximized)
BFS.Window.Maximize(windowHandle);
else
BFS.Window.SetSizeAndLocation(windowHandle, bounds.X, bounds.Y, bounds.Width, bounds.Height);
}
}

//this is a function that will save the window size and position in window properties
private static void SaveWindowSize(IntPtr windowHandle)
{
Rectangle bounds = BFS.Window.GetBounds(windowHandle);
BFS.Window.SetWindowProperty(windowHandle, "ToggleFullscreen_X", new IntPtr(bounds.X));
BFS.Window.SetWindowProperty(windowHandle, "ToggleFullscreen_Y", new IntPtr(bounds.Y));
BFS.Window.SetWindowProperty(windowHandle, "ToggleFullscreen_Width", new IntPtr(bounds.Width));
BFS.Window.SetWindowProperty(windowHandle, "ToggleFullscreen_Height", new IntPtr(bounds.Height));
BFS.Window.SetWindowProperty(windowHandle, "ToggleFullscreen_IsMaximized", new IntPtr(BFS.Window.IsMaximized(windowHandle) ? 1 : 0));
}

private static Rectangle GetSavedWindowSize(IntPtr windowHandle, out bool isMaximized)
{
Rectangle bounds = new Rectangle();
bounds.X = BFS.Window.GetWindowProperty(windowHandle, "ToggleFullscreen_X").ToInt32();
bounds.Y = BFS.Window.GetWindowProperty(windowHandle, "ToggleFullscreen_Y").ToInt32();
bounds.Width = BFS.Window.GetWindowProperty(windowHandle, "ToggleFullscreen_Width").ToInt32();
bounds.Height = BFS.Window.GetWindowProperty(windowHandle, "ToggleFullscreen_Height").ToInt32();
isMaximized = (BFS.Window.GetWindowProperty(windowHandle, "ToggleFullscreen_IsMaximized").ToInt32() == 1);
return bounds;
}
}
Apr 9, 2017  • #9
User Image
Lurkios
7 discussion posts
Quote:
This night be the function your looking for ;) (PS I didnt write it, and since im not seeing it in the 'download functions list' Im guessing Keith probably wrote it for me previously :))

Just create a new custom function in C#, pick a key combination, paste the *code below* in
and paste this into the reference field:

System.dll | System.Data.dll | System.Drawing.dll | System.Management.dll | System.Web.dll | System.Windows.Forms.dll | System.Xml.dll

Code

using System;
using System.Drawing;

// The 'windowHandle' parameter will contain the window handle for the:
//   - Active window when run by hotkey
//   - Window Location target when run by a Window Location rule
//   - TitleBar Button owner when run by a TitleBar Button
//   - Jump List owner when run from a Taskbar Jump List
//   - Currently focused window if none of these match
public static class DisplayFusionFunction
{
public static void Run(IntPtr windowHandle)
{
//get the window styles
BFS.WindowEnum.WindowStyle style = BFS.Window.GetWindowStyle(windowHandle);

//if the window has any borders and titles, make it full screen
if(BFS.Window.HasWindowStyle(BFS.WindowEnum.WindowStyle.WS_CAPTION, windowHandle) ||
BFS.Window.HasWindowStyle(BFS.WindowEnum.WindowStyle.WS_SYSMENU, windowHandle) ||
BFS.Window.HasWindowStyle(BFS.WindowEnum.WindowStyle.WS_THICKFRAME__SIZEBOX, windowHandle) ||
BFS.Window.HasWindowStyle(BFS.WindowEnum.WindowStyle.WS_MINIMIZEBOX, windowHandle) ||
BFS.Window.HasWindowStyle(BFS.WindowEnum.WindowStyle.WS_MAXIMIZEBOX, windowHandle))
{
//save the size and position of the window
SaveWindowSize(windowHandle);

//make sure to remove the styles. just toggling these settings may turn on something we dont want
style &= ~BFS.WindowEnum.WindowStyle.WS_CAPTION;
style &= ~BFS.WindowEnum.WindowStyle.WS_SYSMENU;
style &= ~BFS.WindowEnum.WindowStyle.WS_THICKFRAME__SIZEBOX;
style &= ~BFS.WindowEnum.WindowStyle.WS_MINIMIZEBOX;
style &= ~BFS.WindowEnum.WindowStyle.WS_MAXIMIZEBOX;

//set the window style
BFS.Window.SetWindowStyle(style, windowHandle);

//get the bounds of the monitor that the window is in
Rectangle bounds = BFS.Monitor.GetMonitorBoundsByWindow(windowHandle);

//size and position the window to be fullscreen within the monitor
BFS.Window.SetSizeAndLocation(windowHandle, bounds.X, bounds.Y, bounds.Width, bounds.Height);
}
else
{
//if we got here, then the window must already be fullscreen.
//add non-fullscreen styles back to the window
style |= BFS.WindowEnum.WindowStyle.WS_CAPTION;
style |= BFS.WindowEnum.WindowStyle.WS_SYSMENU;
style |= BFS.WindowEnum.WindowStyle.WS_THICKFRAME__SIZEBOX;
style |= BFS.WindowEnum.WindowStyle.WS_MINIMIZEBOX;
style |= BFS.WindowEnum.WindowStyle.WS_MAXIMIZEBOX;

//try and load saved window size and position
bool isMaximized;
Rectangle bounds = GetSavedWindowSize(windowHandle, out isMaximized);

//set the window style
BFS.Window.SetWindowStyle(style, windowHandle);

//if we couldnt load the size, exit the script
if(bounds.Equals(Rectangle.Empty))
return;

//if the window was maximized, maximize it, otherwise set the window size and location with the values we loaded
if(isMaximized)
BFS.Window.Maximize(windowHandle);
else
BFS.Window.SetSizeAndLocation(windowHandle, bounds.X, bounds.Y, bounds.Width, bounds.Height);
}
}

//this is a function that will save the window size and position in window properties
private static void SaveWindowSize(IntPtr windowHandle)
{
Rectangle bounds = BFS.Window.GetBounds(windowHandle);
BFS.Window.SetWindowProperty(windowHandle, "ToggleFullscreen_X", new IntPtr(bounds.X));
BFS.Window.SetWindowProperty(windowHandle, "ToggleFullscreen_Y", new IntPtr(bounds.Y));
BFS.Window.SetWindowProperty(windowHandle, "ToggleFullscreen_Width", new IntPtr(bounds.Width));
BFS.Window.SetWindowProperty(windowHandle, "ToggleFullscreen_Height", new IntPtr(bounds.Height));
BFS.Window.SetWindowProperty(windowHandle, "ToggleFullscreen_IsMaximized", new IntPtr(BFS.Window.IsMaximized(windowHandle) ? 1 : 0));
}

private static Rectangle GetSavedWindowSize(IntPtr windowHandle, out bool isMaximized)
{
Rectangle bounds = new Rectangle();
bounds.X = BFS.Window.GetWindowProperty(windowHandle, "ToggleFullscreen_X").ToInt32();
bounds.Y = BFS.Window.GetWindowProperty(windowHandle, "ToggleFullscreen_Y").ToInt32();
bounds.Width = BFS.Window.GetWindowProperty(windowHandle, "ToggleFullscreen_Width").ToInt32();
bounds.Height = BFS.Window.GetWindowProperty(windowHandle, "ToggleFullscreen_Height").ToInt32();
isMaximized = (BFS.Window.GetWindowProperty(windowHandle, "ToggleFullscreen_IsMaximized").ToInt32() == 1);
return bounds;
}
}


Interesting, thank you - I actually found a very similar version of that code here: https://www.displayfusion.com/ScriptedFunctions/View/?ID=ab674b2f-b76a-4276-b2ad-e1d3651a2c04

Except, the first two "WS_MAXIMIZEBOX" lines are commented out, as you can see. Any idea why that would be?
Apr 9, 2017  • #10
User Image
Jcee
205 discussion posts
No idea why :P do either of them meet your needs (i know the one i had meets my needs in most cases, though some apps are stubborn)
Apr 9, 2017  • #11
User Image
badbob001
64 discussion posts
How would I modify this script so the window doesn't extend into where the taskbar is? So I want "fullscreen" but still see the taskbar.
Nov 5, 2019  • #12
Thomas Malloch (BFS)'s profile on WallpaperFusion.com
I was able to modify the code above to only extend to where the taskbar is. The full script is in the attached file, but all I did was change line 38 of the code to:

Code

Rectangle bounds = BFS.Monitor.GetMonitorWorkAreaByWindow(windowHandle);


Here's how to get the code into DisplayFusion:

  • Download the file attached to this post
  • Open the DisplayFusion Settings window
  • Select Scripted Function->Add Scripted Function
  • Copy the code you download in the first step into the window that pops up
  • Give it a name, and click OK, then OK again to save and apply your changes

I hope this works for you!
• Attachment: Toggle Fullscreen Workarea.txt [4,402 bytes]
Nov 8, 2019 (modified Nov 8, 2019)  • #13
Subscribe to this discussion topic using RSS
Was this helpful?  Login to Vote(2)  Login to Vote(-)