Processing Ajax...

Title
Close Dialog

Message

Confirm
Close Dialog

Confirm
Close Dialog

Confirm
Close Dialog

User Image
D Li71144
2 discussion posts
Hello I found this borderless fullscreen macro which does seem to work with diablo 4, but when I use it my mouse if offset in the y-axis by the size of the windowed mode bar a the top I believe. the x axis is fine cause there is almost no bar offset there but it might be off by a few pixels. Is there a way to fix this in the function?

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;
            
            //add Maximize Window in case it doesn't exist (needs to be done due to bug with DisplayFusion)
            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, 0, 0, 3440, 1440);
            
            //remove Maximize Window
            style &= ~BFS.WindowEnum.WindowStyle.WS_MAXIMIZEBOX;
            BFS.Window.SetWindowStyle(style, windowHandle);
        }
        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;
    }
}


This one works on WoW but not diablo 4. But the mouse doesnt have the offset issue.

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)
    {
        //Hide Taskbar
        //BFS.Taskbar.SetWindowsTaskbarAutoHide(!BFS.Taskbar.IsWindowsTaskbarAutoHideEnabled());
        
        //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;
        
            //get the bounds of the monitor that the window is in
            Rectangle bounds = BFS.Monitor.GetMonitorBoundsByWindow(windowHandle);
            
            //set the window style
            BFS.Window.SetWindowStyle(style, 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;
    }
}
Jul 29, 2023 (modified Jul 29, 2023)  • #1
Owen Muhlethaler (BFS)'s profile on WallpaperFusion.com
Is it your mouse clicks that are offset from the actual pointer?
Jul 31, 2023  • #2
User Image
D Li71144
2 discussion posts
Yes the mouse click is off from the pointer by (x,y) amount x and y being the about the border size it got rid of.

Like if I had my mouse on top 1/2 of the 'Delete Char' button it would be highlighting the 'change world tier button instead'

Example screenshot the 'change world tier' Clickable area would be about the blue box I added to the screenshot from the tip of the mouse cursor. without the function it stays within its normal box.
• Attachment [protected]: image_2023-07-31_100111670.png [1,204,878 bytes]
Jul 31, 2023  • #3
Owen Muhlethaler (BFS)'s profile on WallpaperFusion.com
We took a look into this but it doesn't look like it's something we can fix unfortunately, sorry!
Aug 8, 2023  • #4
Subscribe to this discussion topic using RSS
Was this helpful?  Login to Vote(-)  Login to Vote(-)