'Сначала делаешь окно поверх всех, а затем отслеживаешь его положение:
Private Declare Function SetWindowPos Lib "user32" (ByVal hWnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cX As Long, ByVal cY As Long, ByVal wFlags As Long) As Long
Const WM_NCLBUTTONDOWN = &HA1
'Окно "поверх всех"...
Const HWND_TOPMOST = -1
'Окно не "поверх всех"...
Const HWND_NOTOPMOST = -2
Const HTCAPTION = 2
Private Sub Form_Load()
Dim flags As Integer
Dim cX As Integer
Dim cY As Integer
cX = Screen.TwipsPerPixelX
cY = Screen.TwipsPerPixelY
With frmMain
SetWindowPos .hWnd, HWND_TOPMOST, 100, 100, .Width / cX, .Height / cY, flags
End With
Dir = True
End Sub
'Интервал таймера - около 100 мс...
Private Sub tmrCheckPos_Timer()
If frmMain.Left <= 500 Then frmMain.Left = 0
If frmMain.Top <= 500 Then frmMain.Top = 0
If frmMain.Left >= Screen.Width - frmMain.ScaleWidth - 500 Then frmMain.Left = Screen.Width - frmMain.Width
If frmMain.Top <= 500 Then frmMain.Top = 0
End Sub
'Надеюсь, всё понятно? Если что, ещё объясню...
У меня где-то были исходники аськи на vb, т.е. протокола общения по аське в другом интерфейсе... Если надо, я вышлю на мыло