Wednesday, October 29, 2008

[THIN] Re: multiple monitors

Also you can look at this for the same registrykey

 

 

 

Calculating the DWORD

Each hook has an associated value as shown in the table below. The hooks in red are on by default.

Flag name

Decimal value

Hex value

When to use

COLORADOHOOKS

1

0x1

This hook is part of the base set of hooks and should not be turned off, unless you wish to disable hooks for an application. It is responsible for correct maximizing/minimizing and clipping of top-level windows.

SYSTEMMETRICSHOOK

2

0x2

This hook is part of the base set of hooks and should not be turned off, unless you wish to disable hooks for an application. It is reponsible for reporting the correct number of client monitors (SM_CMONITORS) within the session.

GETMONFROMWINDOWHOOK

4

0x4

Use this hook to ensure the MonitorFromWindow API works correctly. Applications use this API to determine which monitor a window resides on. See http://msdn2.microsoft.com/en-us/library/ms534601.aspx for more details.

GETMONFROMRECTHOOK

8

0x8

Use this hook to ensure the MonitorFromRect API works correctly. Applications use this API to determine which monitor a specified rectangle (e.g., window rectangle) resides on. See http://msdn2.microsoft.com/en-us/library/ms534605.aspx for more details.

GETMONFROMPOINTHOOK

16

0x10

Use this hook to ensure the MonitorFromPoint API works correctly. Applications use this API to determine which monitor a specified point (e.g., window coordinate) resides on. See http://msdn2.microsoft.com/en-us/library/ms534603.aspx for more details.

GETMONINFOHOOK

32

0x20

Use this hook to ensure the GetMonitorInfo API returns a correctly populated MONITORINFO structure. Applications usually use this API during monitor enumeration, and use the results to position top-level windows accordingly. See http://msdn2.microsoft.com/en-us/library/ms534599.aspx for more details.

ENUMDISPMONHOOK

64

0x40

Use this hook to ensure the EnumDisplayMonitors API enumerates the correct number of client monitors. This hook is usually used in conjuction with GETMONINFOHOOK (see above). Applications that enumerates monitors (e.g., PowerPoint in Presenter mode allows you to select which monitor the presentation should be displayed on) should have this hook turned on. See http://msdn2.microsoft.com/en-us/library/ms534809.aspx for more details.

ENUMDISPDEVHOOK

128

0x80

Use this hook to ensure the EnumDisplayDevices API enumerates the correct number of client monitors (devices). The DISPLAY_DEVICE structure will be populated with client monitor information. Some applications use this API to query device specific information (such as device name). See http://msdn2.microsoft.com/en-us/library/ms533226.aspx for more details.

ENUMDISPSETHOOK

256

0x100

Use this hook to ensure the EnumDisplaySettings API retrieves graphics mode information for each monitor. The DEV_MODE structure will be partially populated with graphics mode information. Some applications use this API in order to determine specific graphics mode capabilities. Applications suffering from drawing/painting issues (e.g., client area not painted correctly on resize) should try this hook. See http://msdn2.microsoft.com/en-us/library/ms533265.aspx for more details.

CREATEDCHOOK

512

0x200

Use this hook to ensure the CreateDC API correctly creates a device context associated with the primary display, and not individual client monitors (display). Applications use this API to permit drawing to a specified monitor in a desired format (e.g, monitors on the same system can have different pixel formats). However, since the session is really a single display, the hook is used to force create device contexts associated with the primary display device. Use this hook if an application suffers from painting issues. See http://msdn2.microsoft.com/en-us/library/ms533246.aspx for more details.

CBTDIALOGHOOK

1024

0x400

This hook is part of the base set of hooks and should not be turned off, unless you wish to disable hooks for an application. It is responsible for correct placing/centering child dialogs (e.g., message boxes).

LAUNCHONMONITORHOOK

2048

0x800

This hook attempts to position an application on a particular monitor, on startup. If enabled, the default monitor can be specified by the ICA parameter "PreferredLaunchMonitor" which accepts a value from 0 .. (n-1) where n is the number of client monitors. The monitors are enumerated in row-major order i.e. top-left to bottom-right. Currently, the Colorado server-side "DefaultLaunchMonitor" registry value is disabled.

WINDOWLONGHOOKS

4096

0x1000

This hook is part of the base set of hooks and should not be turned off, unless you wish to disable hooks for an application. It is responsible for catching applications that dynamically subclass windows, and enforcing MMHook's COLORADOHOOKS.

IGNORE_WS_MAXIMIZE_BOX

8192

0x2000

Currently, before subclassing a window (applying COLORADOHOOKS), MMHook examines a window's style to ensure a maximize box is present. This is used as a marker for the maximize window capability, and to ensure MMHook does not subclass windows unnecessarily. If a window can be maximized (e.g., from the taskbar), but does not have a maximize button, this check can be turned off by setting this flag.

SUBCLASS_OWNED_WINDOWS

16384

0x4000

MMHook identifies a top-level window as a window that does not have a parent. However, some applications use, as their main window, an owned window. If an application window is maximizing across screens, try turning this flag on as it may be an owned window.

SYSTEMPARAMETERSINFOHOOK

32768

0x8000

Used to return the work-area of the primary monitor. See (http://msdn2.microsoft.com/en-us/library/ms724947.aspx, SPI_GETWORKAREA) for more details.

FORCEMAXIMIZETOMONITOR

65536

0x10000

Applications that intercept the WM_GETMINMAXINFO notification (see http://msdn2.microsoft.com/en-us/library/ms632626.aspx for more details) can restrict the area a window is maximized to. To override this behaviour, set this flag.

 

 

________________________________________________________

Marc-André Lapierre, MALICIS Informatique Inc.

Architecte Senior / Senior Architect

cid:836095621@07012008-2F14

2121 rue Crescent, Suite 500

Montréal, Quebec

H3G 2C1

Cel: (514) 516-0040

Bur: (514) Ti91100 (849-1100)

fax: (514) Ti91100 (849-1100)

malapierre@malicis.com

www.malicis.com

 

 

 

De : thin-bounce@freelists.org [mailto:thin-bounce@freelists.org] De la part de Steve Snyder
Envoyé : 28 octobre 2008 22:21
À : thin@freelists.org
Objet : [THIN] multiple monitors

 

xenapp 4.5 fp1 with hr03, w2k3 R2, xpsp2 running ica client 10.2 dual monitors, both set to 1280x1024, 60hz. Published apps will *only* work on the primary monitor - try and drag them to the other monitor and they just disappear, or at least the part of the app that's on the monitor.

 

Anyone?

No comments: