Processing Ajax...

Title

Message

Confirm

Confirm

Confirm

Confirm

Are you sure you want to delete this item?

Confirm

Are you sure you want to delete this item?

Confirm

Are you sure?

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(-)