Auch wenn das zur Lösung führt, ist trotzdem davon abzuraten.
Besser: Die betroffene Website (sofern man ihr vertraut) zu den Ausnahmen hinzufügen.
Im aktuellen FF gibt es im gezeigten Menü dazu einen extra Button. ![]()
Beiträge von BugFix
-
-
Schau dir mal in der Hilfe an, WAS die Funktion _StringBetween zurückgibt..

-
Schau dir mal die Funktion
[autoit]Round
[/autoit]an.
[autoit]
Falls du in jedem Fall 2 Nachkommastellen möchtest (auch bei einer oder keiner rechnerischen Nachkommastelle) verwendeStringFormat
[/autoit] -
Währe super wenn sich mehr Leute dazu äussern - ist meine Beschreibung so schlech dass hier keiner was schreibt?
Du bist lustig. Warum erwartest du, dass sich unbedingt dazu jemand äußert? Ich schreibe seit ca. 7 Jahren AutoIt-Skripte für privaten und auch produktiven Einsatz. Aber in der ganzen Zeit hat sich mir diese Problematik nicht wirklich gestellt.
Natürlich kann es im Einzelfall durchaus einmal sinnvoll sein, dass ein wechselseitiger Datenzugriff möglich ist. Aber das ist eher die Ausnahme. -
Übrigens, wenn du aus den Registerfunktionen heraus Funktionen starten willst mit ungewisser Dauer oder auch Msgboxen aufrufen, dann kannst du das durchaus mit einem kleinen Umweg:
- DummyCtrl erstellen
- für Dummy die gewünschte Aktion hinterlegen
- mit GUICtrlSendToDummy Ereignis auslösen
Wenn du bereits ein Ctrl hast, dass diese Funktion sowieso auslöst, kannst du auch
_SendMessage($hGUI, $WM_COMMAND, $iCtrl, 0)
oder
_WinAPI_PostMessage($hGUI, $WM_COMMAND, $iCtrl, 0)
verwenden. -
Das Registrieren der Msg allein kann dieses Verhalten nicht verursachen. Vermutlich verläßt du die Register-Funktion an einer Stelle ohne Return $GUI_RUNDEFMSG. Dann wird diese Msg nicht von Windows 'normal' weiterverarbeitet.
Bzw. du führst von dort eine Funktion aus, die im Zeitrahmen nicht vorhersehbar ist. DAS darf auf keinen Fall passieren. -
Strahleman
Mal als Hinweis: Es ist (für alle die dein Skript ansehen) günstiger, wenn du statt der Werte von Styles (oder anderen Konstanten), die definierten Konstantennamen verwendest. Dann ist ersichtlich, welche Stylekombinationen verwendet werden und das Skript ist besser zu verstehen. -
@m-obi
Ja, in diese Richtung geht es bei mir. Allerdings etwas komplexer (wird daher auch noch etwas dauern). Und natürlich als UDF (_GuiCtrlDial_Create etc.). Wär ja katastrophal, wenn man in sein Skript solch recht umfangreiche Bearbeitung nur für ein Ctrl einbauen müßte.
Zumal die Gestaltung des Drehknopfes der geringste Aufwand ist. Aufwändig ist die Verwaltung für (beliebig) viele Control auf (beliebig) vielen GUI.
Interessant ist auch, die Herangehensweise an das Zeichnen/Berechnen. Da gehe ich etwas andere Wege als du.
Aber lass dich überraschen. Es kommt auch noch einiges an Funktionalität hinzu. Aber, wie gesagt, kann das noch etwas dauern. -
Ich kann adhoc in deinem Code nicht finden, wo du per Copy & Paste einfügst.
Eine Variante wäre:
• mit "Strg+C" den Block mit allen Infos kopieren
• dann zeilenweise mit Send() einfügen - im Bsp. per HotKey mit Func InsertDetailHier mal ganz grob:
[autoit]HotKeySet('^!{F8}', '_InsertDetail') ; == Strg+Alt+F8 fügt ein
[/autoit][autoit][/autoit][autoit]
$sClip = _ ; == der Text, den du in die Zwischenablage kopiert hast
'Name' & @CRLF & _
'Strasse' & @CRLF & _
'Ort PLZ' & @CRLF & _
'Land' & @CRLF & _
'Tel'Global $aClip = StringSplit($sClip, @CRLF, 1)
[/autoit][autoit][/autoit][autoit]
Global $Index = 1
Do
Sleep(50)
Until $Index = $aClip[0] +1Func _InsertDetail()
[/autoit]
Local $sDetail = $aClip[$Index]
Send($sDetail, 1)
$Index += 1
EndFunc -
AspirinJunkie
Stimmt, das war ein Denkfehler. Eigentlich wollte ich es auch nur in Klammern setzen, damit negative Werte betragsmäßig addiert werden. Warum ich da bloß das Abs reingesetzt... :wacko: -
Fehler gefunden: Ich hatte _PointInCircle vorher mit Durchmesser verwendet und dann zu Radius geändert. Die Änderung hatte ich aber im Bsp.-Aufruf dieser Funktion vergessen durchzuführen. Gleich mal ändern.
-
Analog zu _MouseTrap(), womit die Maus in einem Rechteck gehalten wird kann mit dieser Funktion die Maus in einem Kreis gefangen gehalten werden.

Features:
• Absolute Koordinaten oder (durch Übergabe eines Fensterhandle) relative Koordinaten in diesem Fenster
• Optionaler Timeout zum zeitlimitierten BeendenEs ist nicht ganz perfekt: Mit einer sehr schnellen Mausbewegung kann man ausreißen. Bei Verwendung auf einer GUI landet man aber wieder darauf und wird bei der nächsten Bewegung wieder eingefangen. Die GUI kann nicht verlassen werden.
Edit: Kleine Korrektur in Skript und Bsp.
MouseTrapCircle.au3 v0.3
[autoit]#Region - TimeStamp
[/autoit] [autoit][/autoit] [autoit]
; 2012-07-23 16:52:11 v 0.3
#EndRegion - TimeStamp#include-once
[/autoit] [autoit][/autoit] [autoit]
#Include <WindowsConstants.au3>
#Include <WinAPI.au3>OnAutoItExitRegister('__MouseTrapCircle_ShutDown')
[/autoit] [autoit][/autoit] [autoit]If Not IsDeclared('$__HC_ACTION') Then Global Const $__HC_ACTION = 0
[/autoit] [autoit][/autoit] [autoit]
Global $__hSTUB__MouseProcTrap, $__hMOD_TRAP, $__hHOOK_MOUSE_TRAP
Global $__iXCtr_Trap, $__iYCtr_Trap, $__iRadius_Trap, $__hWND_Trap
Global $__MouseTrapCircle_Started = False, $__Timer_Trap = -1, $__iTimeout_Trap
Global $__iTopBorder, $__iSideBorder
_SystemGetWindowBorder($__iTopBorder, $__iSideBorder);===============================================================================
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
; Function Name....: _MouseTrapCircle
; Description......: Hold the mouse trapped in a circle
; .................: Call without parameters, ends trapping.
; Parameter(s).....: $_iXCentre x-coordinate of the circle center
; .................: $_iYCentre y-coordinate of the circle center
; .................: $_iRadius Radius of the circle
; ........optional.: $_iTimeout Time in ms after trapping ends, without an function call (Default=-1, no timeout)
; ........optional.: $_hWnd If given: $_iXCentre and $_iYCentre are used as relative to this window.
; .................: Default: Coordinates are absolut on screen
; Return Value(s)..: Nothing
; Author(s)........: BugFix ( [email='bugfix@autoit.de'][/email] )
;===============================================================================
Func _MouseTrapCircle($_iXCentre=-1, $_iYCentre=-1, $_iRadius=-1, $_iTimeout=-1, $_hWnd=-1)
If $_iXCentre = -1 Or $_iYCentre = -1 Or $_iRadius = -1 Then
__MouseTrapCircle_ShutDown()
Else
__MouseTrapCircle_StartUp($_iXCentre, $_iYCentre, $_iRadius, $_iTimeout, $_hWnd)
EndIf
EndFunc ;==>_MouseTrapCircle#region - Internal functions
[/autoit] [autoit][/autoit] [autoit]
;===============================================================================
; Function Name....: __MouseTrapCircle_StartUp
; Description......: Initialize functions
;===============================================================================
Func __MouseTrapCircle_StartUp($_iXCentre, $_iYCentre, $_iRadius, $_iTimeout, $_hWnd)
$__MouseTrapCircle_Started = True
$__iXCtr_Trap = $_iXCentre
$__iYCtr_Trap = $_iYCentre
$__iRadius_Trap = $_iRadius
$__hWND_Trap = $_hWnd
If IsHWnd($__hWND_Trap) Then
Local $aWin = WinGetPos($__hWND_Trap)
$__iXCtr_Trap = $aWin[0] + $__iSideBorder + $__iXCtr_Trap
$__iYCtr_Trap = $aWin[1] + $__iTopBorder + $__iYCtr_Trap
EndIf
If $_iTimeout > 0 Then
$__Timer_Trap = TimerInit()
$__iTimeout_Trap = $_iTimeout
EndIf
; == initialize Callback Function to analyze MOUSE-Message
$__hSTUB__MouseProcTrap = DllCallbackRegister("__MouseProcTrap", "long", "int;wparam;lparam")
$__hMOD_TRAP = _WinAPI_GetModuleHandle(0)
$__hHOOK_MOUSE_TRAP = _WinAPI_SetWindowsHookEx($WH_MOUSE_LL, DllCallbackGetPtr($__hSTUB__MouseProcTrap), $__hMOD_TRAP)
EndFunc ;==>__MouseTrapCircle_StartUp;===============================================================================
[/autoit] [autoit][/autoit] [autoit]
; Function Name....: __MouseTrapCircle_ShutDown
; Description......: Close ressources
;===============================================================================
Func __MouseTrapCircle_ShutDown()
If $__MouseTrapCircle_Started Then
_WinAPI_UnhookWindowsHookEx($__hHOOK_MOUSE_TRAP)
DllCallbackFree($__hSTUB__MouseProcTrap)
EndIf
EndFunc ;==>__MouseTrapCircle_ShutDown;===============================================================================
[/autoit] [autoit][/autoit] [autoit]
; Function Name....: __MouseProcTrap
; Description......: Callback mouse procedure
;===============================================================================
Func __MouseProcTrap($nCode, $wParam, $lParam)
If $__Timer_Trap <> -1 And TimerDiff($__Timer_Trap) >= $__iTimeout_Trap Then Return __MouseTrapCircle_ShutDown()
If $nCode <> $__HC_ACTION Then Return _WinAPI_CallNextHookEx($__hHOOK_MOUSE_TRAP, $nCode, $wParam, $lParam)
Local Static $iXComp = -1, $iYComp = -1
Local $iX, $iY, $iXMove, $iYMove, $oldOpt
Local $iDirX = 0, $iDirY = 0
Local $tMSLLHOOKSTRUCT = DllStructCreate("int X;int Y;dword mouseData;dword flags;dword time;ulong_ptr dwExtraInfo", $lParam)
Local $tPoint = DllStructCreate('int;int')
$iX = DllStructGetData($tMSLLHOOKSTRUCT, 1)
$iY = DllStructGetData($tMSLLHOOKSTRUCT, 2)
DllStructSetData($tPoint, 1, $iX)
DllStructSetData($tPoint, 2, $iY)
If $iXComp = -1 Then
$iXComp = $iX
$iYComp = $iY
EndIfSwitch $wParam
[/autoit] [autoit][/autoit] [autoit]
Case $WM_MOUSEMOVE
If $iX > $iXComp Then
$iDirX = -1
ElseIf $iX < $iXComp Then
$iDirX = 1
EndIf
If $iY > $iYComp Then
$iDirY = -1
ElseIf $iY < $iYComp Then
$iDirY = 1
EndIf
If Not _PointInCircle($iX, $iY, $__iXCtr_Trap, $__iYCtr_Trap, $__iRadius_Trap) Then
$oldOpt = Opt('MouseCoordMode', 1)
MouseMove($iX +($iDirX), $iY +($iDirY), 0)
If IsHWnd($__hWND_Trap) Then
Local $tRect = _WinAPI_GetWindowRect($__hWND_Trap)
If Not _WinAPI_PtInRect($tRect, $tPoint) Then MouseMove($__iXCtr_Trap, $__iYCtr_Trap, 0)
EndIf
Opt('MouseCoordMode', $oldOpt)
Return -1
EndIfEndSwitch
[/autoit] [autoit][/autoit] [autoit]Return _WinAPI_CallNextHookEx($__hHOOK_MOUSE_TRAP, $nCode, $wParam, $lParam)
[/autoit] [autoit][/autoit] [autoit]
EndFunc ;==>__MouseProcTrap;===============================================================================
[/autoit] [autoit][/autoit] [autoit]
; Function Name....: __PointInCircle
; Description......: Calculates whether given position within a circle
; Author(s)........: BugFix ( [email='bugfix@autoit.de'][/email] )
;===============================================================================
Func _PointInCircle($_iXPt, $_iYPt, $_iXCircle, $_iYCircle, $_iRadius)
Return ((Sqrt(($_iXCircle-Abs($_iXPt))^2 + ($_iYCircle-Abs($_iYPt))^2)) < $_iRadius)
EndFunc ;==>__PointInCircle;===============================================================================
[/autoit]
; Function Name....: __SystemGetWindowBorder
; Description......: Calculates side and top border of window
; Author(s)........: BugFix ( [email='bugfix@autoit.de'][/email] )
;===============================================================================
Func _SystemGetWindowBorder(ByRef $_iTopBorder, ByRef $_iSideBorder)
Local Const $SM_CYCAPTION = 4, $SM_CYEDGE = 46, $SM_CYBORDER = 6, $SM_CXBORDER = 5, $SM_CXEDGE = 45
Local $aMetrics[5][2] = [[$SM_CYCAPTION], [$SM_CYEDGE], [$SM_CYBORDER], [$SM_CXBORDER], [$SM_CXEDGE]]
Local $dll = DllOpen("user32.dll"), $aRet
For $i = 0 To 4
$aRet = DllCall($dll, "int", "GetSystemMetrics", "int", $aMetrics[$i][0])
If IsArray($aRet) Then $aMetrics[$i][1] = $aRet[0]
Next
DllClose($dll)
$_iTopBorder = $aMetrics[0][1] + $aMetrics[1][1] + $aMetrics[2][1]
$_iSideBorder = $aMetrics[3][1] + $aMetrics[4][1]
EndFunc ;==>__SystemGetWindowBorder
#endregionBeispiel
[autoit]#Region - TimeStamp
[/autoit] [autoit][/autoit] [autoit]
; 2012-07-23 17:52:55
#EndRegion - TimeStamp
#Include <GDIPlus.au3>
#Include <GUIConstantsEx.au3>
#Include "MouseTrapCircle.au3"_Main()
[/autoit] [autoit][/autoit] [autoit]Func _Main()
[/autoit] [autoit][/autoit] [autoit]Local $hGui, $hPen, $hBrush1, $hBrush2, $hGraphic
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
Local $iTop, $iSide, $sTitle = 'MouseTrapCircle'
Local $fStart = False
_SystemGetWindowBorder($iTop, $iSide)$hGui = GUICreate($sTitle & ' [OFF]', 300, 300, 400, 100)
[/autoit] [autoit][/autoit] [autoit]
GUICtrlCreateLabel('Click inside circle to start/stop', 80, 50)
GUISetState(@SW_SHOW, $hGui)_GDIPlus_Startup()
[/autoit] [autoit][/autoit] [autoit]
$hPen = _GDIPlus_PenCreate(0xFF0000FF)
$hBrush1 = _GDIPlus_BrushCreateSolid(0xFFFFFACD)
$hBrush2 = _GDIPlus_BrushCreateSolid(0xFFDD2233)
$hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGui)
_GDIPlus_GraphicsSetSmoothingMode($hGraphic, 2)_GDIPlus_GraphicsFillCircleByCentre($hGraphic, 150, 150, 90, $hBrush1)
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_GraphicsDrawCircleByCentre($hGraphic, 150, 150, 90, $hPen)While True
[/autoit] [autoit][/autoit] [autoit]
Switch GUIGetMsg()
Case -3
_GDIPlus_PenDispose($hPen)
_GDIPlus_BrushDispose($hBrush1)
_GDIPlus_BrushDispose($hBrush2)
_GDIPlus_GraphicsDispose($hGraphic)
_GDIPlus_Shutdown()
Exit
Case $GUI_EVENT_PRIMARYUP
Local $aMouse = MouseGetPos()
Local $aWin = WinGetPos($hGui)
If _PointInCircle($aMouse[0], $aMouse[1], $aWin[0]+$iSide+150, $aWin[1]+$iTop+150, 45) Then
$fStart = Not $fStart
If $fStart Then
WinSetTitle($hGui, '', $sTitle & ' [ON]')
_GDIPlus_GraphicsFillCircleByCentre($hGraphic, 150, 150, 90, $hBrush2)
_GDIPlus_GraphicsDrawCircleByCentre($hGraphic, 150, 150, 90, $hPen)
_MouseTrapCircle(150, 150, 45, -1, $hGui)
Else
WinSetTitle($hGui, '', $sTitle & ' [OFF]')
_MouseTrapCircle()
_GDIPlus_GraphicsFillCircleByCentre($hGraphic, 150, 150, 90, $hBrush1)
_GDIPlus_GraphicsDrawCircleByCentre($hGraphic, 150, 150, 90, $hPen)
EndIf
EndIf
EndSwitch
WEndEndFunc
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]Func _GDIPlus_GraphicsDrawCircleByCentre($_hGraphic, $_iX, $_iY, $_iDiameter, $_hPen=0)
[/autoit] [autoit][/autoit] [autoit]
$_iX -= $_iDiameter/2
$_iY -= $_iDiameter/2
_GDIPlus_GraphicsDrawEllipse($_hGraphic, $_iX, $_iY, $_iDiameter, $_iDiameter, $_hPen)
EndFuncFunc _GDIPlus_GraphicsFillCircleByCentre($_hGraphic, $_iX, $_iY, $_iDiameter, $_hBrush=0)
[/autoit]
$_iX -= $_iDiameter/2
$_iY -= $_iDiameter/2
_GDIPlus_GraphicsFillEllipse($_hGraphic, $_iX, $_iY, $_iDiameter, $_iDiameter, $_hBrush)
EndFunc -
Also prüfen ob die Maus im Client des Windows ist?
Nein, das ist zu allgemein. Prüfen ob die Maus an einer bestimmten Position im Client ist (Pixelgenau), aber es stehen nur absolute Mauskoordinaten zur Verfügung. -
Kaum zu glauben. Worum geht es hier?
Es ist bedauerlich, dass du so reagierst. Mir ist es grundsätzlich völlig schnuppe, wie es um deine Einstellung bestellt ist.
Und es geht schonmal gar nicht um mein Befinden, das steht völlig aussen vor.
Hier geht es schlicht und einfach darum, wie man sich in einem Forum bewegt. Wir haben hier in mehreren Jahren eine Situation geschaffen, in der i.A. ein harmonisches Miteinander besteht. Du wirst auch Mühe haben irgendwo im Web ein adäquat qualitativ und quantitativ arbeitendes Forum zu finden.
Als ich hier anfing war ich dankbar, wenn mir gesagt wurde wo ich bestimmte Informationen finde bzw. welche Stichworte ich zur Suche benötige. Und das wird wohl vielen ähnlich gehen.
Wenn du dich in irgendeiner Weise angepißt fühlst, ist das nicht zu ändern. Ich hoffe aber, dass die Zeilen dir etwas zum Nachdenken geben. -
Mir hilft "lese die Hilfe" nicht weiter, darum schreibe ich das hier. Unverschämt finde ich das nicht.
Da muss ich mal einhaken.
Es ist ohne Zweifel unverschämt, wenn man trotz Hinweis, wo die Informationen zu finden sind sagt: Das nützt mir nichts.
Zumal noch der Link eingebracht wurde, der dich sofort zur Online-Hilfe gebracht hätte, wenn du dem Hinweis (hier klicken) nachgekommen wärst.
Dass jetzt jemand anders den Inhalt aus der Hilfe in einer Antwort gepostet hat unterstützt leider deine Faulheit und Ingoranz.
Wenn hier auf die Hilfe verwiesen wird, dann einfach deshalb, weil AutoIt eine Top-Hilfe besitzt und man selbst meist auch keine bessere Erklärung liefern könnte!
-
Ohne Titelleiste ist Style WS_POPUP, und z.B. hier findest du die Lösung.
-
Schau dir mal das hier an. Ich denke, damit kannst du dein Vorhaben umsetzen.
-
Die Überschrift sagt schon alles. Ihr findet hier: Control Spy v2.0
Hier mal wie es aussieht:
Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist. Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist. Und hier findet ihr Winspector 1.0b, eine sehr gute Alternative zum AutoIt-Window-Info-Tool.
Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist. Habe noch ein interessantes Tool gefunden: WinSpy 1.0 (von Wildfire)
Eine sehr umfangreiche Sammlung nützlicher Programme: Sysinternals Suite
Es kann die kpl. Suite oder eine Einzelkomponente geladen werden. Eine ausführliche Beschreibung ist bei jedem Funktionslink zu finden. -
Ich hab nicht ganz verstanden was du damit bezwecken willst, aber wenn ichs richtig verstanden hab, helfen diese Funktionen:
Man könnte natürlich auch aus AdjustWindowRect und ClientToScreen die Ränder herausrechnen. Aber das ist mit Systemmetrics dann doch etwas simpler umzusetzen.Was ich bezwecken will?
Bsp.:
- befindet sich Maus über Fensterkoordinate (realativ) x = 10, y = 20 ? (ich frage Mausposition aus einer Callbackfunktion ab, in der ich nur absolute Koordinaten erhalte)
- FensterX = 100, FensterY = 200
- Punkt x, y absolut = ( x + Fensterpos. X + Randbreite Fenster Seite ), ( y + Fensterpos. Y + Randbreite Fenster oben )
Die absoluten Koordinaten sind dann z.B. x: 100 + 10 + 3 (Rand), y: 200 + 20 + 25 (Rand) -
Wenn mit absoluten Koordinaten gearbeitet wird, und ich die Position über einem Fenster prüfen muss, brauche ich zwingend die Randbreiten des Fensters, da das Fenster auf dem Monitor dargestellt wird mit:
- gewählte X-Koordinate + Randbreite Seite (+ gewählte Fensterbreite + Randbreite Seite)
- gewählte Y-Koordinate + Randbreite Oben (+ gewählte Fensterhöhe + Randbreite Unten = Seite)Diese Werte sind bei unterschiedlichen Windows-Styles auch unterschiedlich. Mit _WinAPI_GetSystemMetrics kann man alle Einzelkomponenten der Randbreite abfragen. Ich hab das mal in einen Aufruf gepackt.
Man übergibt zwei Variablen für oberen Rand und Seitenrand, diese werden dann beim Aufruf befüllt.Spoiler anzeigen
[autoit]$hGui = GUICreate('Test')
[/autoit] [autoit][/autoit] [autoit]
GUICtrlCreateLabel('Rand oben:', 10, 23, 60, 17)
$inTop = GUICtrlCreateInput('', 70, 20, 40, 20)
GUICtrlCreateLabel('Rand Seite:', 10, 53, 60, 17)
$inSide = GUICtrlCreateInput('', 70, 50, 40, 20)
$bt = GUICtrlCreateButton('Auslesen', 10, 100, 60, 20)
GUISetState()Local $iTop, $iSide
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit] [autoit][/autoit] [autoit]
Switch GUIGetMsg()
Case -3
Exit
Case $bt
_SystemGetWindowBorder($iTop, $iSide)
GUICtrlSetData($inTop, $iTop)
GUICtrlSetData($inSide, $iSide)
EndSwitch
WEndFunc _SystemGetWindowBorder(ByRef $_iTopBorder, ByRef $_iSideBorder)
[/autoit]
; == by BugFix
Local Const $SM_CYCAPTION = 4, $SM_CYEDGE = 46, $SM_CYBORDER = 6, $SM_CXBORDER = 5, $SM_CXEDGE = 45
Local $aMetrics[5][2] = [[$SM_CYCAPTION], [$SM_CYEDGE], [$SM_CYBORDER], [$SM_CXBORDER], [$SM_CXEDGE]]
Local $dll = DllOpen("user32.dll"), $aRet
For $i = 0 To 4
$aRet = DllCall($dll, "int", "GetSystemMetrics", "int", $aMetrics[$i][0])
If IsArray($aRet) Then $aMetrics[$i][1] = $aRet[0]
Next
DllClose($dll)
$_iTopBorder = $aMetrics[0][1] + $aMetrics[1][1] + $aMetrics[2][1]
$_iSideBorder = $aMetrics[3][1] + $aMetrics[4][1]
EndFunc