home *** CD-ROM | disk | FTP | other *** search
/ Chip 1999 June / Chip_1999-06_cd.bin / zkuste / VBasic / Data / Priklady / formAPI.bas next >
BASIC Source File  |  1999-03-29  |  3KB  |  106 lines

  1. Attribute VB_Name = "basAPI"
  2. Option Explicit
  3.  
  4. 'General API functions.
  5. Private Declare Function ShellAbout Lib "shell32.dll" Alias "ShellAboutA" (ByVal hwnd As Long, ByVal szApp As String, ByVal szOtherStuff As String, ByVal hIcon As Long) As Long
  6.  
  7. Private Const HWND_TOPMOST = -1
  8. Private Const SWP_NOACTIVATE = &H10
  9. Private Const SWP_SHOWWINDOW = &H40
  10. Private Const SWP_HIDEWINDOW = &H80
  11. Private Const SWP_NOZORDER = &H4
  12. Private Const SWP_NOMOVE = &H2
  13. Private Const SWP_NOREPOSITION = &H200
  14. Private Const SWP_NOSIZE = &H1
  15.  
  16. 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
  17. Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
  18. Private Declare Function GetForegroundWindow Lib "user32" () As Long
  19. Private Declare Function GetParent Lib "user32" (ByVal hwnd As Long) As Long
  20. Private Declare Function GetWindowTextLength Lib "user32" Alias "GetWindowTextLengthA" (ByVal hwnd As Long) As Long
  21. Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
  22.  
  23. Private TaskBarhWnd As Long
  24.  
  25. Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
  26.  
  27. Public Function GetActiveWindowTitle(ByVal ReturnParent As Boolean) As String
  28.   Dim i As Long, j As Long
  29.    
  30.   i = GetForegroundWindow
  31.  
  32.   If ReturnParent Then
  33.     Do While i <> 0
  34.       j = i
  35.       i = GetParent(i)
  36.     Loop
  37.  
  38.     i = j
  39.   End If
  40.  
  41.   GetActiveWindowTitle = GetWindowTitle(i)
  42. End Function
  43.  
  44. Public Sub HideTaskBar()
  45.   TaskBarhWnd = FindWindow("Shell_traywnd", "")
  46.   If TaskBarhWnd <> 0 Then
  47.     Call SetWindowPos(TaskBarhWnd, 0, 0, 0, 0, 0, SWP_HIDEWINDOW)
  48.   End If
  49. End Sub
  50.  
  51. Public Sub ShowTaskBar()
  52.   If TaskBarhWnd <> 0 Then
  53.     Call SetWindowPos(TaskBarhWnd, 0, 0, 0, 0, 0, SWP_SHOWWINDOW)
  54.   End If
  55. End Sub
  56.  
  57. Public Function GetActiveWindow(ByVal ReturnParent As Boolean) As Long
  58.   Dim i As Long, j As Long
  59.  
  60.   i = GetForegroundWindow
  61.  
  62.   If ReturnParent Then
  63.     Do While i <> 0
  64.       j = i
  65.       i = GetParent(i)
  66.     Loop
  67.  
  68.    i = j
  69.   End If
  70.  
  71.   GetActiveWindow = i
  72. End Function
  73.  
  74. Public Function GetWindowTitle(ByVal hwnd As Long) As String
  75.    Dim l As Long
  76.    Dim s As String
  77.    
  78.    l = GetWindowTextLength(hwnd)
  79.    s = Space(l + 1)
  80.    
  81.    GetWindowText hwnd, s, l + 1
  82.    
  83.    GetWindowTitle = Left$(s, l)
  84. End Function
  85.  
  86. 'Top = True - vytvo°φ okno v₧dy naho°e, Top = False - zruÜφ okno v₧dy naho°e
  87. Public Sub TopMostForm(f As Form, Top As Boolean)
  88.   If Top Then
  89.     SetWindowPos f.hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE + SWP_NOSIZE
  90.   Else
  91.     SetWindowPos f.hwnd, 0, 0, 0, 0, 0, SWP_NOMOVE + SWP_NOSIZE
  92.   End If
  93. End Sub
  94.  
  95. Public Sub Pause(ByVal seconds As Single)
  96.   Sleep Int(seconds * 1000#)
  97. End Sub
  98.  
  99. Public Sub AboutBox(frm As Form, Optional copyright As Variant)
  100.   If VarType(copyright) = vbString Then
  101.     Call ShellAbout(frm.hwnd, App.ProductName, copyright, frm.Icon)
  102.   Else
  103.     Call ShellAbout(frm.hwnd, App.ProductName, "", frm.Icon)
  104.   End If
  105. End Sub
  106.