vdfsplat / AppSrc / FindWindows.pkg @ 64
History | View | Annotate | Download (4.46 KB)
| 1 |
//TH-Header |
|---|---|
| 2 |
//***************************************************************************************** |
| 3 |
// Copyright (c) 2016 Antwise Solutions |
| 4 |
// All rights reserved. |
| 5 |
// |
| 6 |
// $FileName : VdfGuidance\VdfSplat\AppSrc\FindWindows.pkg |
| 7 |
// $ProjectName : VdfSplat DataFlex Debugger |
| 8 |
// $Authors : Wil van Antwerpen |
| 9 |
// $Created : 10.26.2016 19:15 |
| 10 |
// $Type : GPL v2 |
| 11 |
// |
| 12 |
// Contents: |
| 13 |
// |
| 14 |
//***************************************************************************************** |
| 15 |
//TH-RevisionStart |
| 16 |
//TH-RevisionEnd |
| 17 |
|
| 18 |
|
| 19 |
|
| 20 |
|
| 21 |
|
| 22 |
External_function GetDlgItem "GetDlgItem" User32.dll ; |
| 23 |
Handle hWnd ; |
| 24 |
Integer nIDDlgItem ; |
| 25 |
Returns Handle |
| 26 |
|
| 27 |
// Find the handle to a window whose class name and window name match |
| 28 |
// the specified strings. The Function searches child windows, |
| 29 |
// beginning with the one following the specified child window. |
| 30 |
External_function FindWindowEx "FindWindowExA" User32.dll ; |
| 31 |
Handle hWndParent ; |
| 32 |
Handle hWndChildAfter ; |
| 33 |
Pointer lpszClass ; |
| 34 |
Pointer lpszWindow ; |
| 35 |
Returns Handle |
| 36 |
|
| 37 |
External_function GetClassName "GetClassNameA" user32.dll ; |
| 38 |
Handle hWnd ; |
| 39 |
Pointer lpClassName ; |
| 40 |
Integer nMaxCount ; |
| 41 |
Returns Integer |
| 42 |
|
| 43 |
|
| 44 |
|
| 45 |
//Showln "Print some text" // this creates the output window |
| 46 |
|
| 47 |
// Finds the next windows child object given by parent window hWnd |
| 48 |
// for class sClass |
| 49 |
// The search is case insensitive |
| 50 |
// If hWndChild = 0 the first child is returned. |
| 51 |
// Returns: The windows handle of the child object if found |
| 52 |
Function FindNextChildWindowByClass Handle hWnd Handle hWndChild String sClass Returns Handle |
| 53 |
String sClassName |
| 54 |
Handle lpsClassName |
| 55 |
Integer nChar |
| 56 |
Boolean bStop |
| 57 |
|
| 58 |
//Move (Left(Lowercase(sClass),10)) To sClass |
| 59 |
Move (Lowercase(sClass)) To sClass |
| 60 |
|
| 61 |
Move (False) To bStop |
| 62 |
While Not (bStop) |
| 63 |
//Showln "PARENT = " (IntToHex(hWnd)) |
| 64 |
Move (FindWindowEx(hWnd,hWndChild,'','')) To hWndChild |
| 65 |
//Showln "FindWindowEx " (IntToHex(hWndChild)) |
| 66 |
If (hWndChild=0) Begin |
| 67 |
// No Childs found, stop here |
| 68 |
Move (True) To bStop |
| 69 |
End |
| 70 |
Else Begin |
| 71 |
Move (Repeat(Character(0),80)) To sClassName |
| 72 |
GetAddress Of sClassName To lpsClassName |
| 73 |
Move (GetClassName(hWndChild,lpsClassName,40)) To nChar |
| 74 |
If (nChar<>0) Begin |
| 75 |
Move (Left(Lowercase(Cstring(sClassName)),nChar)) To sClassName |
| 76 |
If (sClass=sClassName) Begin |
| 77 |
Move (True) To bStop |
| 78 |
End |
| 79 |
End |
| 80 |
End |
| 81 |
Loop |
| 82 |
Function_Return (hWndChild) |
| 83 |
End_Function // FindNextChildWindowByClass |
| 84 |
|
| 85 |
// Finds the first windows child object given by parent window hWnd |
| 86 |
// |
| 87 |
// If hWndChild = 0 the first child is returned. |
| 88 |
// Returns: The windows handle of the child object if found |
| 89 |
Function FindFirstChildWindowHandle Handle hWnd Returns Handle |
| 90 |
Handle hWndChild |
| 91 |
Move (FindWindowEx(hWnd,0,'','')) To hWndChild |
| 92 |
Function_Return hWndChild |
| 93 |
End_Function // FindFirstChildWindowHandle |
| 94 |
|
| 95 |
|
| 96 |
// Finds the next windows child object given by parent window hWnd |
| 97 |
// |
| 98 |
// Returns: The windows handle of the child object if found |
| 99 |
Function FindNextChildWindowHandle Handle hWnd Handle hWndChild Returns Handle |
| 100 |
Handle hWndNextChild |
| 101 |
Move (FindWindowEx(hWnd,hWndChild,'','')) To hWndNextChild |
| 102 |
Function_Return hWndNextChild |
| 103 |
End_Function // FindNextChildWindowHandle |
| 104 |
|
| 105 |
Function WindowsClassnameForWindowsHandle Integer hWnd Returns String |
| 106 |
String sClassName |
| 107 |
Handle lpsClassName |
| 108 |
Integer nChar |
| 109 |
|
| 110 |
Move "" To sClassName |
| 111 |
If (hWnd<>0) Begin |
| 112 |
ZeroString 120 To sClassName |
| 113 |
GetAddress Of sClassName To lpsClassName |
| 114 |
Move (GetClassName(hWnd,lpsClassName,119)) To nChar |
| 115 |
If (nChar<>0) Begin |
| 116 |
Move (Left(CString(sClassName),nChar)) To sClassName |
| 117 |
End |
| 118 |
Else Move "" To sClassname |
| 119 |
End |
| 120 |
Function_Return sClassName |
| 121 |
End_Function // WindowsClassnameForWindowsHandle |
| 122 |
|
| 123 |
|
| 124 |
|
| 125 |
Function WindowsClassname Integer hObject Returns String |
| 126 |
String sClassName |
| 127 |
Handle lpsClassName |
| 128 |
Handle hWnd |
| 129 |
Integer nChar |
| 130 |
|
| 131 |
Move "" To sClassName |
| 132 |
If (hObject) Begin |
| 133 |
Move (Window_Handle(hObject)) To hWnd |
| 134 |
If (hWnd<>0) Begin |
| 135 |
Move (Repeat(Character(0),40)) To sClassName |
| 136 |
GetAddress Of sClassName To lpsClassName |
| 137 |
Move (GetClassName(hWnd,lpsClassName,30)) To nChar |
| 138 |
If (nChar<>0) Begin |
| 139 |
Move (Left(Lowercase(CString(sClassName)),nChar)) To sClassName |
| 140 |
End |
| 141 |
Else Move "" To sClassname |
| 142 |
End |
| 143 |
Else Move "" To sClassname |
| 144 |
End |
| 145 |
Function_Return sClassName |
| 146 |
End_Function // WindowsClassname |