una palabras keywords ideas gratis google generador ejemplos clave busqueda buscador analizar chm

chm - palabras - keywords ejemplos



Búsqueda de palabras clave de la Ayuda HTML (2)

Creo que leí (en mis muchas búsquedas en Google) que HH_KEYWORD_LOOKUP está roto en la ayuda HTML, suspiro. Así que se me ocurrió esta solución para hacer una búsqueda. Aparecerá el archivo chm e ingresará la palabra clave en el cuadro de búsqueda y presione la tecla ENTRAR para realizar la búsqueda manualmente.

procedure PostKey(aKey: Word; const aShift: TShiftState; aSpeciaKey: Boolean); type TShiftKeyInfo = record shift: Byte; vkey: Byte; end; byteset = set of 0..7; const shiftkeys: array [1..3] of TShiftKeyInfo = ((shift: Ord(ssCtrl); vkey: VK_CONTROL), (shift: Ord(ssShift); vkey: VK_SHIFT), (shift: Ord(ssAlt); vkey: VK_MENU)); var flag: DWORD; bShift: ByteSet absolute aShift; i: Integer; begin for i := 1 to 3 do begin if shiftkeys[i].shift in bShift then keybd_event(shiftkeys[i].vkey, MapVirtualKey(shiftkeys[i].vkey, 0), 0, 0); end; { For } if aSpeciaKey then flag := KEYEVENTF_EXTENDEDKEY else flag := 0; keybd_event(aKey, MapvirtualKey(aKey, 0), flag, 0); flag := flag or KEYEVENTF_KEYUP; keybd_event(aKey, MapvirtualKey(aKey, 0), flag, 0); for i := 3 downto 1 do begin if shiftkeys[i].shift in bShift then keybd_event(shiftkeys[i].vkey, MapVirtualKey(shiftkeys[i].vkey, 0), KEYEVENTF_KEYUP, 0); end; { For } end; procedure CHMSearch(aCHMFilename, aSearch: string); var cfn: string; qry: THHFtsQuery; hnd: HWND; procedure DoSearch(aMsg: string); var i,n: Integer; c: Char; shift: TShiftState; begin if hnd = 0 then Exit; Windows.SetFocus(hnd); n := Length(aMsg); if n > 0 then begin for i := 1 to n do begin c := aMsg[i]; shift := []; case c of ''a''..''z'': shift := []; ''A''..''Z'': shift := [ssShift]; ''_'': // underscore key begin keybd_event(VK_SHIFT, 0, 0, 0); keybd_event(VK_OEM_MINUS, 0, 0, 0); keybd_event(VK_OEM_MINUS, 0, KEYEVENTF_KEYUP, 0); keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0); continue; end; ''$'': // $ key begin PostKey(Ord(''4''), [ssShift], False); continue; end; end; PostKey(Ord(UpCase(c)), shift, False); end; PostKey(VK_RETURN, [], False); PostKey(VK_RETURN, [], False); end; end; begin cfn := ChangeFileExt(aCHMFilename, ''.chm''); FillChar(qry, SizeOf(qry), 0); qry.cbStruct := SizeOf(THHFtsQuery); qry.fExecute := TRUE; HH.HtmlHelpA(GetDesktopWindow, PAnsiChar(AnsiString(cfn)), HH_DISPLAY_TOC, 0); hnd := HH.HtmlHelpA(GetDesktopWindow, PAnsiChar(AnsiString(cfn)), HH_DISPLAY_SEARCH, Cardinal(@qry)); DoSearch(aSearch); end;

Tengo problemas para averiguar cómo obtener búsquedas de palabras clave ( HH_KEYWORD_LOOKUP ) para que funcionen en la Ayuda HTML. Si tengo un índice que se muestra así:

Machine Add Edit Selection

¿Cómo especifico una búsqueda por palabra clave que abre la Selección de máquina? "Machine; Selection" muestra la palabra clave Machine; "Selección" y "Selección de máquina" no funcionan en absoluto; tampoco lo hace "Máquina, Selección", aunque eso es lo que se muestra en la pestaña Índice del Visor de Ayuda HTML si el usuario selecciona manualmente el tema apropiado.


Ahaa !!!

Después de una hora escribiendo y probando, descubrí que se necesitan DOS ESPACIOS entre la palabra clave de primer nivel y la palabra clave de segundo nivel, y finalmente se necesita una tecla "Enter" para mostrar el tema vinculado desde la segunda palabra clave.

Recuerde, exactamente dos espacios! uno o tres no funciona. El truco es, al escribir el segundo espacio y la segunda palabra clave, resaltar algunas otras palabras clave en la lista de palabras clave, lo que puede hacer que pienses que ya cometiste un error y que no continuaría escribiendo la segunda palabra clave. ¿Es esto un engaño del ingeniero de Microsoft?

Sin embargo, aunque funciona manualmente, parece que la API de software no funciona inmediatamente con los DOS espacios. Si llamo a la siguiente API en C # con la tecla F1 presionada (tengo que usar "espacio" para representar un espacio aquí porque este sitio web recorta dos espacios si utilizo el espacio real):

System.Windows.Forms.Help.ShowHelp (esto, "file: /// C: /apps/MyHelpContentNew/QACT.chm", System.Windows.Forms.HelpNavigator.KeywordIndex, "key2''space''''space''x_subkey_of_key2" );

no muestra el tema vinculado desde x_subkey_of_key2. Pero casi está allí, la Ventana de Ayuda aparece con las palabras clave correctas de dos niveles puestas en la búsqueda TextBox, ¡y solo falta un "Car-Return"!

Luego traté de agregar el retorno del auto así:

System.Windows.Forms.Help.ShowHelp (esto, "archivo: /// C: /apps/MyHelpContentNew/QACT.chm", System.Windows.Forms.HelpNavigator.KeywordIndex, "espacio_espacio''espacio''x_subkey_de_key2 / norte");

Tampoco funciona. Así que supongo que necesito enviar una clave de devolución de carro a la ventana de ayuda de forma programada. Publicaré si alguna vez lo implementé.