

Option Explicit
Private Const SW_SHOWNORMAL = 1
Private Type RECT
   Left    As Long
   Top     As Long
   Right   As Long
   Bottom  As Long
End Type
Private Type POINTAPI
   x       As Long
   y       As Long
End Type
Private Type WINDOWPLACEMENT
   length            As Long
   flags             As Long
   showCmd           As Long
   ptMinPosition     As POINTAPI
   ptMaxPosition     As POINTAPI
   rcNormalPosition  As RECT
End Type
Private Declare Function GetWindowPlacement Lib "user32" (ByVal hwnd As Long, lpwndpl As WINDOWPLACEMENT) As Long
Private Declare Function SetWindowPlacement Lib "user32" (ByVal hwnd As Long, lpwndpl As WINDOWPLACEMENT) As Long
Private Sub Tut_Focus()
    Dim hWndToActivate As Long
    Dim currRect As RECT
    Dim currWinP As WINDOWPLACEMENT
  
    hWndToActivate = Form1.hwnd
  
    currWinP.length = Len(currWinP)
    Call GetWindowPlacement(hWndToActivate, currWinP)
    
    currWinP.length = Len(currWinP)
    currWinP.flags = 0&
    currWinP.showCmd = SW_SHOWNORMAL
    Call SetWindowPlacement(hWndToActivate, currWinP)
  
    List1.SetFocus
End Sub

sosed213 писал(а):Ребята, получилось!!!!


sosed213 писал(а):Так и тут, этот "грязный способ", он работает, а лучше пока нету...



Кстати меня такие слова никогда не пугали, наоборот чем то всегда завораживали и притягивали, может потому, что моим первым языком был язык машинных кодов (даже не ассемблер) еще под 8080 процессор.VBTerminator писал(а):Хакер, зачем мучить человека страшными словами "отладка" и "ассемблер"?

Хакер писал(а):sosed213. Ты же нашёл способ с временным TOPMOST-ом. Полагаю, что и остальные «нарушители порядка» так делают.





Sub ShowWindow(hWnd As Long)
    Dim WinP As WINDOWPLACEMENT
    WinP.Length = Len(WinP)
    Call GetWindowPlacement(hWnd, WinP)
    WinP.Length = Len(WinP)
    WinP.flags = 0&
    WinP.showCmd = vbNormalFocus
    Call SetWindowPlacement(hWnd, WinP)
End Sub
    If Not (Me.WindowState = 0) Then Me.WindowState = 0
    Me.Show
    SetWindowPos hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE + SWP_NOSIZE
    Me.Show
    SetWindowPos hWnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE + SWP_NOSIZE


ShowWindow(me.hwnd,SW_RESTORE)Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5