关于API的SetWindowPos函数无法置前窗口的问题
见代码#include <WindowsConstants.au3>
$Form1_1 = GUICreate("", 439, 466, -1, -1, -1, $WS_EX_ACCEPTFILES)
HotKeySet("^!c", "show")
While 1
If GUIGetMsg() = -3 Then Exit
WEnd
Func show()
_SetParent($Form1_1, "Program Manager")
_SetWindowPos(WinGetHandle(AutoItWinGetTitle()), 291, 125)
GUISetState(@SW_SHOW)
EndFunc
Func _SetParent($TitleP, $TitleC)
If WinExists($TitleP) Then
If WinExists($TitleC) Then
$HwndP = WinGetHandle($TitleP)
$HwndC = WinGetHandle($TitleC)
DllCall("user32.dll", "str", "SetParent", "HWnd", $HwndP, "HWnd", $HwndC)
Return 1
Else
Return -1
EndIf
Else
Return -1
EndIf
EndFunc
Func _SetWindowPos($hWnd, $x, $y)
Local $cX, $cY
$hWndInsertAfter = "HWND_TOPMOST"
$wFlags = 1
DllCall("user32.dll", "long", "SetWindowPos", "long", $hWnd, "long", $hWndInsertAfter, "long", $x, _
"long", $y, "long", $cX, "long", $cY, "long", $wFlags)
EndFunc
是因为使用了SetParent还是其它原因?
高手都来支下招!!! 顶起,问题未解决................... 你自己都找到原因了,怎么还没解决?
Program Manager 永远都不能置顶,自己想想,这个要是置顶了,那还了得? 直接winsettop不就行了。Program Manager 是置底好不好。置顶还玩什么呢。 回楼上及楼上的楼上两位,我就是希望在不使用$WS_EX_TOOLWINDOW式样的情况下能做到在应用程序及任务栏隐藏。
BTW:$WS_EX_TOPMOST式样比winsettop要好用多吧. 就算让你把桌面给置顶了,也达不到你要的效果的.
什么样式不重要.想要保持置顶.就用个TIMER 每隔1MS设置一下置顶,很少有窗口能枪得过你了.
页:
[1]