2010-11-23 8 views
0

Ich möchte ein kleines Formular über die Benachrichtigungssymbole in der linken nach rechts Schnittstelle die Symbole auf der rechten Seite des Bildschirms in rechts nach links Schnittstelle die Symbole auf der linken Seite des Bildschirms Ich möchte den Code damit das auf xp und win7 funktioniert bitteWie erkennt man eine rechts-nach-links-Windows-Schnittstelle C#?

+0

Sie haben mehr Glück mit so etwas auf stackoverflow.com –

Antwort

2

Ist das wonach Sie suchen?

private static bool IsRightToLeft() 
{ 
    return CultureInfo.CurrentUICulture.TextInfo.IsRightToLeft; 
} 
0

Irgendwelche System.Windows.Forms.Control Unterstützung eine solche Überprüfung: Control.RightToLeft.

MSDN

+1

Es ist eigentlich eine zugrunde liegende Eigenschaft aller Fenster, und Sie wollen es nicht aus einem zufälligen Fenster. Sie möchten die RTL-Funktion von der Taskleiste aus aufrufen. – MSalters

0

Stuart Dunkeld die Hilfe dosnt hat Culture nichts mit der Schnittstelle zu tun, wenn ich die Position des Startknopfes finden kann (in der Taskleiste), die Sie

2

Die Flagge helfen würden, Suche nach ist WS_EX_LAYOUTRTL (400000 hexadezimal). Sie erhalten diese Flagge durch den Aufruf GetWindowLong(FindWindow(L"HHTaskBar", NULL), GWL_EXSTYLE).

0

Wenn Sie darauf bestehen, können Sie die Position und Größe der Windows-Startschaltfläche finden. Um dies zu erreichen, fügen Sie zuerst diese in Ihrer Klasse:

[DllImport("user32.dll")] 
private static extern bool GetWindowRect(IntPtr hwnd, ref Rectangle rectangle); 

[DllImport("user32.dll", SetLastError = true)] 
public static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow); 

[DllImport("user32.dll", SetLastError = true)] 
public static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, IntPtr className, string lpszWindow); 

Dann solchen Code verwenden .. in diesem Beispiel, das ich seine Breite zeigen, aber man kann seine Links/Rechts-Position als auch lesen:

IntPtr hwndTaskBarWin = FindWindowEx(IntPtr.Zero, IntPtr.Zero, "Shell_TrayWnd", null); 
IntPtr hwndStartButton = FindWindowEx(hwndTaskBarWin, IntPtr.Zero, "Button", null); 
if (hwndStartButton.Equals(IntPtr.Zero)) 
{ 
    //Maybe Vista/Windows7? 
    hwndStartButton = FindWindowEx(IntPtr.Zero, IntPtr.Zero, (IntPtr)0xC017, null); 
} 

if (hwndStartButton.Equals(IntPtr.Zero)) 
{ 
    MessageBox.Show("Sorry, can't find the Start button/orb"); 
} 
else 
{ 
    Rectangle rect = Rectangle.Empty; 
    if (GetWindowRect(hwndStartButton, ref rect)) 
     MessageBox.Show("Start button width: " + rect.Width); 
} 

Erfolgreich getestet unter XP und Windows7, geht der Vista/7 Trickkredit an Waylon Flynn in seiner Antwort auf this question.

Verwandte Themen