home *** CD-ROM | disk | FTP | other *** search
/ Programming Tool Box / SIMS_2.iso / code / system / callback / enumwind.frm (.txt) < prev    next >
Encoding:
Visual Basic Form  |  1995-02-27  |  11.1 KB  |  295 lines

  1. VERSION 2.00
  2. Begin Form frmEnumWindows 
  3.    BackColor       =   &H00C0C0C0&
  4.    Caption         =   "EnumWindows"
  5.    ClientHeight    =   6252
  6.    ClientLeft      =   5592
  7.    ClientTop       =   4308
  8.    ClientWidth     =   7212
  9.    Height          =   6672
  10.    Left            =   5544
  11.    LinkTopic       =   "Form1"
  12.    ScaleHeight     =   6252
  13.    ScaleWidth      =   7212
  14.    Top             =   3936
  15.    Width           =   7308
  16.    Begin Frame Frame1 
  17.       BackColor       =   &H00C0C0C0&
  18.       Height          =   2175
  19.       Left            =   2940
  20.       TabIndex        =   9
  21.       Top             =   2100
  22.       Width           =   4155
  23.       Begin TextBox txtHwnd 
  24.          Height          =   315
  25.          Left            =   2160
  26.          TabIndex        =   13
  27.          Text            =   "Hwnd"
  28.          Top             =   1740
  29.          Visible         =   0   'False
  30.          Width           =   1395
  31.       End
  32.       Begin CommandButton cmdEnumProps 
  33.          BackColor       =   &H00C0C0C0&
  34.          Caption         =   "EnumProps"
  35.          Enabled         =   0   'False
  36.          Height          =   315
  37.          Left            =   120
  38.          TabIndex        =   12
  39.          Top             =   1740
  40.          Width           =   1815
  41.       End
  42.       Begin ListBox lstMore 
  43.          FontBold        =   0   'False
  44.          FontItalic      =   0   'False
  45.          FontName        =   "Courier New"
  46.          FontSize        =   9.6
  47.          FontStrikethru  =   0   'False
  48.          FontUnderline   =   0   'False
  49.          Height          =   672
  50.          Left            =   120
  51.          TabIndex        =   10
  52.          Top             =   360
  53.          Width           =   3912
  54.       End
  55.       Begin Label lblMore 
  56.          Alignment       =   2  'Center
  57.          BackColor       =   &H00000000&
  58.          Caption         =   " Weitere Informationen:"
  59.          ForeColor       =   &H00FFFFFF&
  60.          Height          =   255
  61.          Left            =   0
  62.          TabIndex        =   11
  63.          Top             =   60
  64.          Width           =   4155
  65.       End
  66.    End
  67.    Begin Frame fraComment 
  68.       BackColor       =   &H00C0C0C0&
  69.       Height          =   1815
  70.       Left            =   60
  71.       TabIndex        =   6
  72.       Top             =   4320
  73.       Width           =   7035
  74.       Begin Label Label2 
  75.          BackStyle       =   0  'Transparent
  76.          Caption         =   "Beim 
  77. ffnen des Formulars werden alle Fenster des Systems in die obige Listbox eingetragen. Neben dem numerischen Wert des Fenster-Handles (hWnd) sehen Sie auch den Titel (Caption) sowie die Fensterklasse eines Fensters. Wenn Sie in der Liste ein Fenster anw
  78. hlen, werden im ""Fenster-Stile"" Abschnitt die Stilarten des Fensters (System-Men
  79. , Min/Max Schaltfl
  80. chen etc.) angezeigt."
  81.          FontBold        =   0   'False
  82.          FontItalic      =   0   'False
  83.          FontName        =   "MS Sans Serif"
  84.          FontSize        =   9.6
  85.          FontStrikethru  =   0   'False
  86.          FontUnderline   =   0   'False
  87.          Height          =   1455
  88.          Left            =   60
  89.          TabIndex        =   8
  90.          Top             =   300
  91.          Width           =   6915
  92.       End
  93.       Begin Label Label1 
  94.          Alignment       =   2  'Center
  95.          BackColor       =   &H00000000&
  96.          Caption         =   " Kommentar:"
  97.          ForeColor       =   &H00FFFFFF&
  98.          Height          =   255
  99.          Left            =   0
  100.          TabIndex        =   7
  101.          Top             =   60
  102.          Width           =   7035
  103.       End
  104.    End
  105.    Begin Frame fraStile 
  106.       BackColor       =   &H00C0C0C0&
  107.       Height          =   2175
  108.       Left            =   60
  109.       TabIndex        =   0
  110.       Top             =   2100
  111.       Width           =   2835
  112.       Begin ListBox lstStile 
  113.          FontBold        =   0   'False
  114.          FontItalic      =   0   'False
  115.          FontName        =   "Courier New"
  116.          FontSize        =   9.6
  117.          FontStrikethru  =   0   'False
  118.          FontUnderline   =   0   'False
  119.          Height          =   1104
  120.          Left            =   120
  121.          TabIndex        =   2
  122.          Top             =   360
  123.          Width           =   2592
  124.       End
  125.       Begin Label lblStileLabel 
  126.          Alignment       =   2  'Center
  127.          BackColor       =   &H00000000&
  128.          Caption         =   " Fenster-Stile:"
  129.          ForeColor       =   &H00FFFFFF&
  130.          Height          =   255
  131.          Left            =   0
  132.          TabIndex        =   1
  133.          Top             =   60
  134.          Width           =   3015
  135.       End
  136.    End
  137.    Begin Frame fraListe 
  138.       BackColor       =   &H00C0C0C0&
  139.       Height          =   1995
  140.       Left            =   60
  141.       TabIndex        =   3
  142.       Top             =   60
  143.       Width           =   7035
  144.       Begin ListBox lstEnumWindows 
  145.          Height          =   1560
  146.          Left            =   120
  147.          TabIndex        =   4
  148.          Top             =   300
  149.          Width           =   6792
  150.       End
  151.       Begin Label lblListeLabel 
  152.          Alignment       =   2  'Center
  153.          BackColor       =   &H00404040&
  154.          Caption         =   " Fensterliste:"
  155.          ForeColor       =   &H00FFFFFF&
  156.          Height          =   255
  157.          Left            =   0
  158.          TabIndex        =   5
  159.          Top             =   0
  160.          Width           =   7035
  161.       End
  162.    End
  163.    Begin CBVBX ctlEnumWindows 
  164.       CBType          =   6  ' 6  - EnumWindowsProc
  165.       Left            =   0
  166.       Top             =   0
  167.    End
  168. Option Explicit
  169. Dim indent%
  170. Sub cmdEnumProps_Click ()
  171.   frmEnumProps.Show 1
  172. End Sub
  173. Sub ctlEnumWindows_EnumWindowsProc (hWnd As Integer, lpData As Long, retval As Integer)
  174.     'Diese Funktion wird rekursiv aufgerufen, um ausgehend von einem Fenster alle
  175.     'seine Kindfenster aufzuz
  176.     Dim title As String * 255 'Nimmt Caption (Titel) eines Fensters auf
  177.     Dim class As String * 255, t%, c%, dummy 'Nimmt Klasse eines Fenster auf
  178.     t% = GetWindowText(hWnd, title, 255)  'R
  179. ckgabewert = Anzahl zur
  180. ckgegebener Zeichen
  181.     c% = GetClassName(hWnd, class, 255)
  182.     If t% Then
  183.       title = " " & title
  184.       t% = t + 1
  185.     End If
  186.     lstEnumWindows.AddItem Space$(indent * 4) & "&H" & Hex$(hWnd) & Left$(title, t%) & " [" & Left$(class, c%) & "] "
  187.     lstEnumWindows.ItemData(lstEnumWindows.NewIndex) = hWnd
  188.     indent = indent + 1 'Einzug f
  189. chste Rekursionsstufer erh
  190.     dummy = EnumChildWindows(hWnd, ctlEnumWindows.CBAdress, lpData) 'Kindfenster aufz
  191.     indent = indent - 1
  192.     retval = True      'weitere Fenster aufz
  193. End Sub
  194. Sub Form_Load ()
  195.     Dim dummy
  196.     dummy = SetProp(Me.hWnd, ByVal "Ha", 0)
  197.     indent% = 0 'Einzug auf unterster Stufe
  198.     lstEnumWindows.Clear
  199.     dummy = EnumWindows(ctlEnumWindows.CBAdress, 0&)
  200.     dummy = SendMessage(lstMore.hWnd, LB_SETHORIZONTALEXTENT, ByVal 400, ByVal 0&)
  201. End Sub
  202. Sub GetMore (ByVal hWnd%)
  203.   'ermittelt weitere Fensterinformationen
  204.   Dim m%, ww%
  205.   Dim InstancePath As String * 255
  206.   Dim r As Rect
  207.   lstMore.Clear 'Listbox l
  208. schen
  209.   'Instanz und Pfadnamen des Moduls (DLL oder Exe) ermittlen, das f
  210. r Erzeugung des Fensters verantwortlich war
  211.   m% = GetModuleFileName(GetWindowWord(hWnd, GWW_HINSTANCE), InstancePath, Len(InstancePath))
  212.   lstMore.AddItem "Instance       : &H" & Hex(GetWindowWord(hWnd, GWW_HINSTANCE))
  213.   lstMore.AddItem "Exe-Path       : " & Left(InstancePath, m%)
  214.   'Dimension und Position der NonPlient-Area ermitteln (Fensterkoordinaten)
  215.   GetWindowRect hWnd, r
  216.   lstMore.AddItem "NonClient-Area : " & CStr(r.Right - r.Left) & "x" & CStr(r.Bottom - r.Top) & " - (" & CStr(r.Left) & "," & CStr(r.Top) & ")-(" & CStr(r.Right) & "," & CStr(r.Bottom) & ")"
  217.   'Dimension der Client-Area (Zeichenbereich) ermitteln
  218.   GetClientRect hWnd, r
  219.   lstMore.AddItem "Client-Area    : " & CStr(r.Right - r.Left) & "x" & CStr(r.Bottom - r.Top)
  220.   'ID (Dialog-Element oder Men
  221. ) ermitteln
  222.   lstMore.AddItem "ID             : " & CStr(GetWindowWord(hWnd, GWW_ID))
  223.   'Eltern-Fenster ermittlen
  224.   If GetParent(hWnd) Then
  225.     lstMore.AddItem "Parent         : &H" & CStr(Hex(GetParent(hWnd)))
  226.   Else
  227.     lstMore.AddItem "Parent         : None"
  228.   End If
  229.   lstMore.AddItem "Owner          : " & CStr(Hex(GetWindow(hWnd, GW_OWNER)))
  230.   'Extra-Bytes des Windows ermitteln und als Hex und Ascii ausgeben
  231.   For m% = 0 To GetClassWord(hWnd, GCW_CBWNDEXTRA) / 2
  232.     ww = GetWindowWord(hWnd, m)
  233.     lstMore.AddItem "Extra" & Format(2 * m%, "000") & "       : &H" & Zero(Hex$(hibyte(ByVal ww%))) & " Asc: " & Chr$(hibyte(ByVal ww%))
  234.     lstMore.AddItem "Extra" & Format(2 * m% + 1, "000") & "       : &H" & Zero(Hex$(lobyte(ByVal ww%))) & " Asc: " & Chr$(lobyte(ByVal ww%))
  235.   Next m%
  236. End Sub
  237. Sub GetStyle (ByVal hWnd%)
  238.   'Tragt die Fensterstile des 
  239. bergebenen Fensters in die Listbox lstStile ein.
  240.   Dim s&  'Enth
  241. lt den Fensterstil (bitcodiert)
  242.   lstStile.Clear 'Alle Eintr
  243. ge der Listbox l
  244. schen
  245.   s& = GetWindowLong(hWnd, GWL_STYLE) 'Fensterstil ermitteln und Bits "aufdr
  246. seln":
  247.   If s And WS_POPUP Then
  248.       lstStile.AddItem "WS_POPUP"
  249.   ElseIf s And WS_CHILD Then
  250.       lstStile.AddItem "WS_CHILD"
  251.   Else
  252.       lstStile.AddItem "WS_OVERLAPPED"
  253.   End If
  254.   If s And WS_CLIPSIBLINGS Then lstStile.AddItem "WS_CLIPSIBLINGS"
  255.   If s And WS_CLIPCHILDREN Then lstStile.AddItem "WS_CLIPCHILDREN"
  256.   If s And WS_VISIBLE Then lstStile.AddItem "WS_VISIBLE"
  257.   If s And WS_DISABLED Then lstStile.AddItem "WS_DISABLED"
  258.   If s And WS_MINIMIZE Then lstStile.AddItem "WS_MINIMIZE"
  259.   If s And WS_MAXIMIZE Then lstStile.AddItem "WS_MAXIMIZE"
  260.   If s And WS_CAPTION = WS_CAPTION Then
  261.     lstStile.AddItem "WS_OVERLAPPED"
  262.   Else
  263.       If s And WS_BORDER Then lstStile.AddItem "WS_BORDER"
  264.       If s And WS_DLGFRAME Then lstStile.AddItem "WS_DLGFRAME"
  265.   End If
  266.   If s And WS_VSCROLL Then lstStile.AddItem "WS_VSCROLL"
  267.   If s And WS_HSCROLL Then lstStile.AddItem "WS_HSCROLL"
  268.   If s And WS_SYSMENU Then lstStile.AddItem "WS_SYSMENU"
  269.   If s And WS_THICKFRAME Then lstStile.AddItem "WS_THICKFRAME"
  270.   If s And WS_MINIMIZEBOX Then lstStile.AddItem "WS_MINIMIZEBOX"
  271.   If s And WS_MAXIMIZEBOX Then lstStile.AddItem "WS_MAXIMIZEBOX"
  272.   If s And WS_GROUP Then lstStile.AddItem "WS_GROUP"
  273.   If s And WS_TABSTOP Then lstStile.AddItem "WS_TABSTOP"
  274.   'Erweiterte Fensterstile:
  275.   If s And WS_EX_DLGMODALFRAME Then lstStile.AddItem "WS_EX_DLGMODALFRAME"
  276.   If s And WS_EX_NOPARENTNOTIFY Then lstStile.AddItem "WS_EX_NOPARENTNOTIFY"
  277.   If s And WS_EX_TOPMOST Then lstStile.AddItem "WS_EX_TOPMOST"
  278.   If s And WS_EX_ACCEPTFILES Then lstStile.AddItem "WS_EX_ACCEPTFILES"
  279.   If s And WS_EX_TRANSPARENT Then lstStile.AddItem "WS_EX_TRANSPARENT"
  280. End Sub
  281. Sub lstEnumWindows_Click ()
  282.   Dim li%
  283.   li% = lstEnumWindows.ListIndex
  284.   If li > 0 Then
  285.     txthWnd = CStr(lstEnumWindows.ItemData(li))'stellt das Handle dem EnumProps-Formular zur Verf
  286.     GetStyle (CInt(lstEnumWindows.ItemData(li)))
  287.     GetMore (CInt(lstEnumWindows.ItemData(li)))
  288.     cmdEnumProps.Enabled = True
  289.   End If
  290. End Sub
  291. Function Zero$ (s$)
  292.   Zero = s$
  293.   If Len(s$) = 1 Then Zero = "0" + s$
  294. End Function
  295.