Anyway I wrote this IDEtool to get Win32 help.
You need the old win32.chm file, you can download it from:
https://sourceforge.net/projects/win32-help-chm/files/
Then uncompress and put the win32.chm file in the PureBasic folder.
Compile this code below and save the exe somewhere with the name: WinApiHelpTool
Then create an IDETool:
CommandLine: Choose the saved WinApiHelpTool.exe
Arguments: %WORD
Shortcut: CTRL + F1
That's all, now when you need help about a WinApi word, simply click the word and push CTRL+F1
Code: Select all
EnableExplicit
Procedure FindControlByClass(hwndParent, classNameTarget.s)
Protected hwndChild = GetWindow_(hwndParent, #GW_CHILD)
While hwndChild
Protected className.s = Space(256)
GetClassName_(hwndChild, @className, 255)
If className = classNameTarget
ProcedureReturn hwndChild
Else
Protected result = FindControlByClass(hwndChild, classNameTarget)
If result : ProcedureReturn result : EndIf
EndIf
hwndChild = GetWindow_(hwndChild, #GW_HWNDNEXT)
Wend
ProcedureReturn 0
EndProcedure
Procedure OpenCHMWithSearch(chmFile.s, searchTerm.s)
Protected hhPath.s = "hh.exe"
Protected pid = RunProgram(hhPath, chmFile, "")
CloseConsole()
If pid
Protected hwndCHM = 0
Protected i
For i = 0 To 100
hwndCHM = FindWindow_("HH Parent", 0)
If hwndCHM : Break : EndIf
Delay(150)
Next
If hwndCHM
SetForegroundWindow_(hwndCHM)
Delay(150)
; Search for TabControl
Protected hwndTab = FindControlByClass(hwndCHM, "SysTabControl32")
If hwndTab
; Select Tab-1
SendMessage_(hwndTab, #TCM_SETCURSEL, 1, 0)
; Simulate Tab change event
Protected notify.NMHDR
notify\hwndFrom = hwndTab
notify\idFrom = GetDlgCtrlID_(hwndTab)
notify\code = #TCN_SELCHANGE
SendMessage_(hwndCHM, #WM_NOTIFY, notify\idFrom, @notify)
Delay(150)
; Iterate tabs to show the StringGadget
keybd_event_(#VK_CONTROL, 0, 0, 0)
keybd_event_(#VK_TAB, 0, 0, 0)
keybd_event_(#VK_TAB, 0, #KEYEVENTF_KEYUP, 0)
keybd_event_(#VK_TAB, 0, 0, 0)
keybd_event_(#VK_TAB, 0, #KEYEVENTF_KEYUP, 0)
keybd_event_(#VK_TAB, 0, 0, 0)
keybd_event_(#VK_TAB, 0, #KEYEVENTF_KEYUP, 0)
keybd_event_(#VK_TAB, 0, 0, 0)
keybd_event_(#VK_TAB, 0, #KEYEVENTF_KEYUP, 0)
keybd_event_(#VK_CONTROL, 0, #KEYEVENTF_KEYUP, 0)
; Find StringGadget inside actual TabPanel
Protected hwndEdit = FindControlByClass(hwndCHM, "Edit")
If hwndEdit
Debug "Campo de texto encontrado: " + Str(hwndEdit)
SetFocus_(hwndEdit)
SetClipboardText(searchTerm)
Delay(150)
; Simulate Ctrl + V
keybd_event_(#VK_CONTROL, 0, 0, 0)
keybd_event_(#VK_V, 0, 0, 0)
keybd_event_(#VK_V, 0, #KEYEVENTF_KEYUP, 0)
keybd_event_(#VK_CONTROL, 0, #KEYEVENTF_KEYUP, 0)
Delay(150)
; Simulate ENTER
keybd_event_(#VK_RETURN, 0, 0, 0)
Delay(50)
keybd_event_(#VK_RETURN, 0, #KEYEVENTF_KEYUP, 0)
Else
MessageRequester("Error", "StringGadget not found.")
EndIf
Else
MessageRequester("Error", "TabPanel not found.")
EndIf
Else
MessageRequester("Error", "Can't find the visor CHM window.")
EndIf
Else
MessageRequester("Error", "Can't execute hh.exe.")
EndIf
EndProcedure
Define chmPath.s = #PB_Compiler_Home+"\win32.chm"
Define termino.s = ProgramParameter()
If termino=""
termino="Legal Information"
Else
If Right(termino,1)="_"
termino= Left(termino, Len(termino)-1)
Else
End
EndIf
EndIf
OpenCHMWithSearch(chmPath, termino)
