Baru-baru ini, saya sedang mempersiapkan ujian CET-4 dan mendapatkan dokumen DOC untuk "Kata-Kata Frekuensi Tinggi Kelas" dari teman sekelas saya. Oleh karena itu secara manual. Antarmuka program adalah sebagai berikut:
Analisis Prinsip:
Gunakan fungsi terjemahan "Kingsoft Powerword 2002" untuk menerjemahkan kata -kata, gunakan Delphi untuk mendapatkan pegangan kontrol yang menerjemahkan hasil dalam "Kingsoft Powerword 2002", dan menggunakan fungsi paste dan salin untuk mendapatkan hasil terjemahan.
DESKRIPSI FUNGSI API:
Hwnd findwindow (
Lpctstr lpclassname, // nama kelas formulir yang akan dicari
Lpctstr lpwindowname // judul nama formulir yang akan dicari
); // Temukan jendela anak pertama yang cocok dengan kondisi yang ditentukan
Hwnd findWindowex (
Hwnd hwndparent, // pegangan jendela induk di mana anak dicari
Hwnd hwndchildafter, // mulai cari setelah formulir ini
Lpctstr lpszclass, // nama kelas formulir yang akan dicari
Lpctstr lpszwindow // judul nama formulir yang akan dicari
); // Temukan jendela anak pertama yang cocok dengan kondisi yang ditentukan dalam daftar formulir yang ditentukan
Bool Showwindow (
Hwnd hwnd, // pegangan formulir
int ncmdshow // cara menampilkan formulir
); // Tentukan visibilitas jendela
Bool BringWindowTotop (
Hwnd hwnd // pegangan formulir
); // bawa jendela yang ditentukan ke bagian atas daftar jendela
Bool setForegroundWindow (
Hwnd hwnd // pegangan formulir
); /Atur jendela sebagai program latar depan sistem
Hwnd setFocus (
Hwnd hwnd // pegangan formulir terfokus
);
Void keybd_event (
Byte bvk, // kode virtual-key
Byte bscan, // kode pemindaian perangkat keras
DWORD DWFLAGS, // Bendera Menentukan berbagai opsi fungsi
DWORD DWEXTRAINFO // Data tambahan yang terkait dengan keystroke
);
Di sini kami memberikan pernyataan API dasar, metode penggunaan spesifik, dan Anda dapat menggunakan informasi lain yang relevan.
Analisis Khusus:
Pertama, gunakan alat SPY ++ untuk menganalisis "Kingsoft Powerword 2002", dan hasil analisisnya adalah sebagai berikut:
Nama bentuk Kingsoft Powerword 2002 adalah: Kingsoft Powerword 2002
Kingsoft Powerword 2002's Word Input Control Class Nama: Edit (Bentuk Anak ComboBox )
Kingsoft Powerword 2002 Hasil Kontrol Kontrol Nama: XDICT_EXPLAINVIEW
Antarmuka program:
Kontrol pengatur waktu (timer1, yang intervalnya 3 detik), kontrol memo (MLIST), dan dua kontrol RichEdit (RTRANS, RCONV), kode spesifiknya adalah sebagai berikut:
antarmuka
penggunaan
Windows, pesan, sysutils, varian, kelas, grafik, kontrol, formulir, dialog, stdctrls, comctrls, clipbrd, tombol, extctrls, menu;
jenis
Tform1 = class (tform)
Mlist: tMemo;
Rtrans: trichedit;
Button1: tbutton;
Timer1: timer;
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;
Splitter1: tsplitter;
Splitter2: tsplitter;
E1: tMenuitem;
N6: tMenuitem;
N7: tMenuitem;
N8: tMenuitem;
Edit1: tedit;
Label1: tlabel;
Label2: tlabel;
Label3: tlabel;
Prosedur Button1Click (pengirim: Tobject);
Prosedur Timer1Timer (Pengirim: Tobject);
Prosedur Button2Click (pengirim: Tobject);
Prosedur Button3Click (pengirim: Tobject);
Prosedur N3Click (Pengirim: Tobject);
Prosedur N6Click (Pengirim: Tobject);
Prosedur N8Click (Pengirim: Tobject);
Pribadi
{Deklarasi Pribadi}
publik
{Deklarasi Publik}
akhir;
var
Form1: tform1;
i: integer = 0; // mendeklarasikan variabel global untuk menghafal kata
Pelaksanaan
{$ R *.dfm}
// Mulai acara konversi
Prosedur TFORM1.BUTTON1CLICK (Pengirim: Tobject);
Mulai
Rtrans.clear; // Bersihkan area konversi
Rconv.clear;
timer1.interval: = strtoint (edit1.text)*1000; // Atur waktu interval
timer1.enabled: = true; //
ProgressBar1.Posisi: = 0; // Tetapkan status bilah progres
I: = 0; // Inisialisasi variabel untuk menghitung
progressBar1.max: = mlist.lines.count;
akhir;
Prosedur TFORM1.TIMER1TIMER (Pengirim: Tobject);
var
King, // Kingsoft Powerword 2002 Pegangan utama
Combo, // Word Input Box Parten Handle
Edit, // pegangan kotak input kata
Berarti: Thandle; // Pegangan Tampilan Terjemahan
Mulai
Jika saya <= mlist.lines.count-1 maka
Mulai
King: = FindWindow (nil, pchar ('Kingsoft Powerword 2002'));
Combo: = FindWindowex (King, 0, 'ComboBox', nil);
Sunting: = FindWindowex (Combo, 0, 'Edit', nil);
berarti: = findWindowex (King, 0, 'xdict_explainview', nil);
// Tampilan Informasi
label3.caption: = '('+inttoStr (i+1)+'/'+inttoStr (mlist.lines.count)+')'+mList.lines [i];
// informasi penyimpanan
clipboard.astext: = mList.lines [i];
showwindow (raja, sw_shownormal);
BringWindowTotop (King);
SetForegroundWindow (raja);
windows.setFocus (edit);
// Simulasi pasta Ctrl+V.
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);
SetForegroundWindow (berarti);
windows.setFocus (berarti);
// simulasi ctrl+a pilih semua
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);
SetForegroundWindow (berarti);
windows.setFocus (berarti);
// Simulasikan salinan Ctrl+C.
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);
// Simulasi pasta Ctrl+V.
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; // Progress Bar Bergerak
Inc (i); // Tingkatkan Hitungan
akhir yang lain
Mulai
timer1.enabled: = false;
Rtrans.lines.savetofile ('temp.txt');
akhir;
akhir;
// Baca daftar kata ke dalam mlist
Prosedur TFORM1.BUTTON2CLICK (Pengirim: Tobject);
Mulai
Jika OD.Execute maka
Mlist.lines.loadFromFile (od.filename);
akhir;
// fungsi konversi, karena simbol fonetik tidak dapat ditampilkan dengan benar dalam terjemahan yang diperoleh di rtrans
// Anda harus terlebih dahulu menginstal font font fonetik di direktori font di Kingsoft Powerword
// Iklementasikan tampilan simbol fonetik yang benar
Prosedur TFORM1.BUTTON3CLICK (Pengirim: Tobject);
var
I: Integer;
Mulai, berakhir: Integer;
Mulai
Rconv.clear;
untuk i: = 0 ke rtrans.lines.count-1 do
Mulai
RichEdit3.text: = rtrans.lines [i];
Mulai: = pos ('[', richedit3.text); // Temukan posisi simbol fonetik, simbol fonetik ada di []
Jika Mulai> 0 lalu
Mulai
berakhir: = pos (']', richedit3.text);
RichEdit3.selstart: = mulai;
RichEdit3.sellength: = end-start-1;
RichEdit3.selattributes.name: = 'Kingsoft Phonetic Plain';
akhir;
RichEdit3.Selectall;
RichEdit3.copytoclipboard;
Rconv.pastefromclipboard;
Application.ProcessMessages;
akhir;
akhir;
// keluar program
Prosedur TFORM1.N3Click (Pengirim: Tobject);
Mulai
Application.Malter;
akhir;
// Salin fungsi
Prosedur TFORM1.N6CLICK (Pengirim: Tobject);
Mulai
Rconv.selectall;
Rconv.copytoclipboard;
akhir;
// Hentikan konversi
Prosedur TFORM1.N8CLICK (Pengirim: Tobject);
Mulai
timer1.enabled: = false;
akhir;
akhir.
Oke, sejauh ini, semua program dirancang.
Cara menjalankan:
Pastikan bahwa "Kingsoft Powerword 2002" berjalan dengan program ini.
Oke, saya telah berhasil menerjemahkan 600 kata ini dan mencetaknya di atas kertas di Word.
Cara mendapatkan program yang dapat dieksekusi dan kode sumber:
Anda dapat mengirimi saya email: [email protected]
Atau masuk ke situs saya dan tinggalkan pesan: http://redlegend.51.net