简体   繁体   中英

Weird borders in VmWare Player Unity mode

I have a question concerning unity mode in Vmware Player. When I run apps in unity mode, they get an annoying gray border (first picture).

This, in it self is just annoying. The problematic thing is that when I run it in maximized mode, the top border is still there, but the mouse pointer doesn't react to it, making all my clicks being about a mm over where I'm actually pointing (second picture)

Anyone have any idea why this border appears? And can it be removed?

问题最大化窗口中的问题

EDIT: It's not the VmWare borders setting, this is my exposure when the borders are present (Picture 3), and when I turn on borders, my weird borders have borders (Picture 4)

边框是自己的窗户Borderception!

It's a setting in VM Player.

在此处输入图片说明

Source: VMware Workstation 10 Documentation Center

I have the same problem and could identify thoses borders. This are the shadows of windows from Win7.

I disabled Aero Mode and it helped for windows like Explorer. But I still have the same effect on Office 2013, which integrate window shadows.

Here some explanations from Microsoft: http://support.microsoft.com/kb/2821007

According to Microsoft:

Microsoft Office 2013 applications use a custom frame in which a thin border is surrounded by four transparent Window handles (hWnds) that are used to render shadows. These hWnds are designed to make resizing the application easier. There is no user setting to disable these shadows. However, you can disable them (and re-enable them) by calling SendMessage or SendMessageTimeout together with the parameters in the code snippet that appears in the "Sample Code" section.

The following function sends a message to an Office application's hWnd to enable or disable the shadows around the application frame. (Some error checking is omitted for brevity.)

#define WM_MSO                              (WM_USER + 0x0900) 
#define WM_MSO_WPARAM_OMFRAMEENABLESHADOW   117
#define WM_MSO_LPARAM_SHADOW_ENABLED        1
#define WM_MSO_LPARAM_SHADOW_DISABLED       0

void DisableShadows(HWND hwndOfficeApp)
{
    SendMessage (
        hwndOfficeApp,
        WM_MSO,
        WM_MSO_WPARAM_OMFRAMEENABLESHADOW,
        WM_MSO_LPARAM_SHADOW_DISABLED);
}

void EnableShadows(HWND hwndOfficeApp)
{
    SendMessage (
        hwndOfficeApp,
        WM_MSO,
        WM_MSO_WPARAM_OMFRAMEENABLESHADOW,
        WM_MSO_LPARAM_SHADOW_ENABLED);
}

Unfortunately, this solution is not easy to use, while you need to write code. I found a solution published on http://www.thomaskoetzing.de/index.php?option=com_content&task=view&id=379&Itemid=254 based on Microsoft KB, which run this code given by Microsoft as an Service.

Just download and install this OFF2013_ShadowOff.zip. It will install a service that run on the Win7 guest VM. Once this service is started, thoses borders will be removed in Unity mode!

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM