#Include <WinAPIEx.au3>
#Include <Constants.au3>
#NoTrayIcon
Global Const $sClass = 'MyWindowClass'
Global Const $sName = 'MyProg'
Global $tWCEX, $tClass, $hProc, $hInstance, $Exit = False
Const $CS_HREDRAW = 0x00000002
Const $CS_VREDRAW = 0x00000001
Run("Calc.Exe")
$hwndnot =WinWaitActive("Калькулятор Плюс")
$hProc = DllCallbackRegister('_WndProc', 'lresult', 'hwnd;uint;wparam;lparam')
$tWCEX = DllStructCreate($tagWNDCLASSEX)
$tClass = DllStructCreate('wchar[' & StringLen($sClass) + 1 & ']')
DllStructSetData($tClass, 1, $sClass)
DllStructSetData($tWCEX, 'Size', DllStructGetSize($tWCEX))
DllStructSetData($tWCEX, 'Style', BitOR($CS_HREDRAW,$CS_VREDRAW))
DllStructSetData($tWCEX, 'hWndProc', DllCallbackGetPtr($hProc))
DllStructSetData($tWCEX, 'ClsExtra', 0)
DllStructSetData($tWCEX, 'WndExtra', 0)
DllStructSetData($tWCEX, 'hInstance', $hInstance)
DllStructSetData($tWCEX, 'hIcon', 0)
DllStructSetData($tWCEX, 'hCursor', 0)
DllStructSetData($tWCEX, 'hBackground', 0)
DllStructSetData($tWCEX, 'MenuName', 0)
DllStructSetData($tWCEX, 'ClassName', DllStructGetPtr($tClass))
DllStructSetData($tWCEX, 'hIconSm', 0)
_WinAPI_RegisterClassEx($tWCEX)
$hWndParent = _WinAPI_CreateWindowEx(0, $sClass, $sName, BitOR($WS_THICKFRAME, $WS_BORDER, $WS_EX_TOOLWINDOW), (@DesktopWidth + 100) , (@DesktopHeight + 100) , 0, 0, 0)
_WinAPI_SetWindowLong($hwndnot, $GWL_HWNDPARENT, $hWndParent)
While 1
Sleep(100)
If $Exit Then
ExitLoop
ElseIf Not ProcessExists ("Calc.Exe") Then
Exit
EndIf
WEnd
Func _WinAPI_DefWindowProcW($hWnd, $iMsg, $wParam, $lParam)
Local $Ret = DllCall('user32.dll', 'lresult', 'DefWindowProcW', 'hwnd', $hWnd, 'uint', $iMsg, 'wparam', $wParam, 'lparam', $lParam)
If @error Then
Return SetError(1, 0, 0)
EndIf
Return $Ret[0]
EndFunc
Func _WndProc($hWnd, $iMsg, $wParam, $lParam)
Switch $iMsg
Case $WM_CLOSE
$Exit = 1
EndSwitch
Return _WinAPI_DefWindowProcW($hWnd, $iMsg, $wParam, $lParam)
EndFunc