Recientemente, me estoy preparando para el examen CET-4 y obtuve un documento DOC para "Palabras de alta frecuencia de la clase 4" de mis compañeros de clase. por uno manualmente. La interfaz del programa es la siguiente:
Análisis principal:
Use la función de traducción de "Kingsoft Powerword 2002" para traducir palabras, use Delphi para obtener el mango del control que traduce el resultado en "Kingsoft Powerword 2002" y use la función Paste and Copy para obtener los resultados de la traducción.
Descripción de la función API:
Hwnd findwindow (
LPCTSTR LPClassName, // El nombre de clase del formulario a buscar
LPCTSTR LPWINDOWNAME // El nombre del título del formulario a buscar
); /Encuentra la primera ventana infantil que coincide con las condiciones especificadas
Hwnd findwindowex (
Hwnd hwndparent, // el mango de la ventana principal en la que se busca el niño
Hwnd hwndchildafter, // iniciar la búsqueda después de este formulario
LPCTSTR LPSZCLASS, // El nombre de clase del formulario a buscar
Lpctstr lpszwindow // nombre del título del formulario a buscar
); /Encuentra la primera ventana infantil que coincide con las condiciones especificadas en la lista de formulario especificada
Bool showwindow (
Hwnd hwnd, // el mango del formulario
int ncmdshow // cómo mostrar el formulario
); /Especifique la visibilidad de la ventana
Bool traingwindowtotop (
Hwnd hwnd // mango del formulario
); /Traiga la ventana especificada a la parte superior de la lista
Bool setforegroundwindow (
Hwnd hwnd // el mango del formulario
); /Establezca la ventana como el programa de primer plano del sistema
Hwnd setFocus (
Hwnd hwnd // El mango de la forma enfocada
);
Void keybd_event (
Byte bvk, // código de tecla virtual
Byte bscan, // código de escaneo de hardware
DWORD DWFLAGS, // FLAGS especificando varias opciones de función
DWORD DWEXTRAINFO // Datos adicionales asociados con KeyStroke
); /Simular la generación de claves
Aquí proporcionamos una declaración de la API básica, los métodos de uso específicos, y puede usar otra información relevante.
Análisis específico:
Primero, use la herramienta SPY ++ para analizar "Kingsoft Power Word 2002", y los resultados del análisis son los siguientes:
El nombre de la forma de Kingsoft Powerword 2002 es: Kingsoft Powerword 2002
Nombre de clase de control de entrada de Word de Kingsoft Powerword 2002: Editar (una forma infantil de Combobox )
Kingsoft Powerword 2002 Redicultura de la clase de control de la clase: XDICT_EXPLAINVIEW
Interfaz del programa:
Un control del temporizador (temporizador1, cuyo intervalo es de 3 segundos), un control de memo (MLIST) y dos controles RichEdit (RTRANS, RCONV), el código específico es el siguiente:
interfaz
usos
Windows, mensajes, sysutils, variantes, clases, gráficos, controles, formularios, cuadros de diálogo, stdctrls, comctrls, portaprd, botones, extctrls, menús;
tipo
TForm1 = class (tForm)
Mlist: tmemo;
Rtrans: Trichedit;
Botón 1: tbutton;
Temporizador1: ttimer;
Button2: tbutton;
Rconv: Trichedit;
Button3: tbutton;
OD: topendialog;
Richedit3: Trichedit;
Mainmenu1: tmainmenu;
F1: tmenuitem;
N1: tmenuitem;
N2: tmenuitem;
N3: tmenuitem;
C1: tmenuitem;
N4: tmenuitem;
N5: tmenuitem;
Rtf1: tmenuitem;
Panel1: Tpanel;
ProgressBar1: TProgressBar;
Divisor1: tsplitter;
Splitter2: Tsplitter;
E1: tmenuitem;
N6: tmenuitem;
N7: tmenuitem;
N8: tmenuitem;
Edit1: tedit;
Etiqueta1: tlabel;
Etiqueta2: tlabel;
Etiqueta3: tlabel;
procedimiento botón1Click (remitente: tobject);
procedimiento temporizador1timer (remitente: tobject);
procedimiento Button2Click (remitente: tobject);
procedimiento Button3Click (remitente: tobject);
Procedimiento N3Click (remitente: tobject);
procedimiento n6Click (remitente: tobject);
procedimiento n8Click (remitente: tobject);
Privado
{Declaraciones privadas}
público
{Declaraciones públicas}
fin;
varilla
Form1: tform1;
i: entero = 0; // declara una variable global para la memorización de palabras
Implementación
{$ R *.dfm}
// Comience el evento de conversión
procedimiento tForm1.Button1Click (remitente: tobject);
Comenzar
Rtrans.clear; // Borrar el área de conversión
Rconv.clear;
Timer1.interval: = strToint (edit1.text)*1000; // Establecer el tiempo de intervalo
Timer1.enabled: = true; //
ProgressBar1.Position: = 0; // Establecer el estado de la barra de progreso
i: = 0;
ProgressBar1.max: = mlist.lines.count;
fin;
procedimiento tForm1.Timer1Timer (remitente: tobject);
varilla
King, // Mango de ventana principal de Kingsoft Powerword 2002
combo, // cuadro de entrada de palabras mango de la ventana principal
editar, // Mango de cuadro de entrada de Word
Medios: thandle; // Mango de ventana de visualización de traducción
Comenzar
Si i <= mlist.lines.count-1 entonces
Comenzar
rey: = findwindow (nil, pchar ('kingsoft powerword 2002'));
combo: = findwindowex (rey, 0, 'comboBox', nil);
editar: = findwindowex (combo, 0, 'editar', nil);
medios: = findwindowex (rey, 0, 'xdict_explainview', nil);
// Pantalla de información
etiqueta3.caption: = '('+intToStr (i+1)+'/'+intToStr (mlist.lines.count)+')' mlist.lines [i];
// Información de almacenamiento
Portaplabaptapapook.astext: = mlist.lines [i];
showwindow (rey, sw_shownormal);
traerwindowtotop (rey);
SetForefusrogroundwindow (rey);
Windows.SetFocus (editar);
// simular Ctrl+V pasta
keyBD_EVENT (VK_CONTROL, MAPVirtualKey (VK_Control, 0), 0, 0);
keyBD_Event (ord ('v'), mapVirtualKey (ord ('v'), 0), 0, 0);
keyBD_Event (ord ('v'), mapVirtualKey (ord ('v'), 0), keyEventf_Keyup, 0);
keyBD_EVENT (VK_CONTROL, MAPVirtualKey (VK_Control, 0), KeyEventF_Keyup, 0);
SetForefusrogroundwindow (medios);
Windows.setfocus (medios);
// simulación ctrl+a seleccionar todo
keyBD_EVENT (VK_CONTROL, MAPVirtualKey (VK_Control, 0), 0, 0);
keyBD_Event (ord ('a'), mapVirtualKey (ord ('a'), 0), 0, 0);
keyBD_Event (ord ('a'), mapVirtualKey (ord ('a'), 0), keyEventf_Keyup, 0);
keyBD_EVENT (VK_CONTROL, MAPVirtualKey (VK_Control, 0), KeyEventF_Keyup, 0);
SetForefusrogroundwindow (medios);
Windows.setfocus (medios);
// simular Ctrl+C Copy
keyBD_EVENT (VK_CONTROL, MAPVirtualKey (VK_Control, 0), 0, 0);
keyBD_Event (ord ('c'), mapVirtualKey (ord ('c'), 0), 0, 0);
keyBD_Event (ord ('c'), mapVirtualKey (ord ('c'), 0), keyEventf_Keyup, 0);
keyBD_EVENT (VK_CONTROL, MAPVirtualKey (VK_Control, 0), KeyEventF_Keyup, 0);
Windows.SetFocus (rtrans.handle);
// simular Ctrl+V pasta
keyBD_EVENT (VK_CONTROL, MAPVirtualKey (VK_Control, 0), 0, 0);
keyBD_Event (ord ('v'), mapVirtualKey (ord ('v'), 0), 0, 0);
keyBD_Event (ord ('v'), mapVirtualKey (ord ('v'), 0), keyEventf_Keyup, 0);
keyBD_EVENT (VK_CONTROL, MAPVirtualKey (VK_Control, 0), KeyEventF_Keyup, 0);
Rtrans.lines.add ('============================'+#13);
ProgressBar1.stepit; // Movimiento de la barra
Inc (i); // Aumente el recuento
fin
Comenzar
Timer1.enabled: = false;
Rtrans.lines.savetofile ('temp.txt');
fin;
fin;
// Lea la lista de palabras en mlist
procedimiento tForm1.Button2Click (remitente: tobject);
Comenzar
Si OD.ExCute entonces
Mlist.lines.loadFromFile (OD.FileName);
fin;
// función de conversión, porque los símbolos fonéticos no se pueden mostrar correctamente en la traducción obtenida en rtrans
// primero debe instalar la fuente simple fonética en el directorio de fuentes en Kingsoft Power Word
// Implementar la visualización correcta de símbolos fonéticos
procedimiento tForm1.Button3Click (remitente: tobject);
varilla
I: entero;
Inicio, termina: entero;
Comenzar
Rconv.clear;
para i: = 0 a rtrans.lines.count-1 do
Comenzar
richEdit3.Text: = rtrans.lines [i];
Inicio: = pos ('[', richEdit3.Text); // Encuentra la posición del símbolo fonético, el símbolo fonético está en []
Si comienza> 0 entonces
Comenzar
termina: = pos (']', richEdit3.Text);
richEdit3.selstart: = inicio;
richEdit3.sellength: = fines-start-1;
richEdit3.selattributes.name: = 'Kingsoft Phonetic Plain';
fin;
RichEdit3.selectall;
RichEdit3.CopyToclipboard;
Rconv.pasteFromClipboard;
Aplicación. ProcessMessages;
fin;
fin;
// Salida del programa
procedimiento tForm1.n3Click (remitente: tobject);
Comenzar
aplicación.merminar;
fin;
// Copiar función
procedimiento tForm1.n6Click (remitente: tobject);
Comenzar
Rconv.selectall;
Rconv.copyToclipboard;
fin;
// detener la conversión
procedimiento tForm1.n8Click (remitente: tobject);
Comenzar
Timer1.enabled: = false;
fin;
fin.
Ok, hasta ahora, todos los programas están diseñados.
Cómo correr:
Asegúrese de que "Kingsoft Powerword 2002" se ejecute con este programa.
Ok, he traducido con éxito estas 600 palabras y las imprimí en papel en Word.
Cómo obtener programas ejecutables compilados y código fuente:
Puede enviarme un correo electrónico: [email protected]
O inicie sesión en mi sitio y deje un mensaje: http://redlegend.51.net