최근에 CET-4 시험을 준비하고 있으며 "클래스 4 고주파수 단어"에 대한 문서는 단어 만 가지고 있지 않습니다 따라서 수동으로 수동으로, Delphi 및 Kingsoft Powerword 2002를 사용하여 단어의 배치 번역을 특별히 만들었으며 번역 결과를 RTF 파일로 직접 저장할 수 있습니다. 프로그램 인터페이스는 다음과 같습니다.
원칙 분석 :
"Kingsoft Powerword 2002"의 번역 함수를 사용하여 단어를 번역하고 Delphi를 사용하여 "Kingsoft Powerword 2002"에서 결과를 변환하는 컨트롤의 핸들을 얻고 페이스트 및 복사 기능을 사용하여 번역 결과를 얻으십시오.
API 기능 설명 :
hwnd findwindow (
lpctstr lpclassname, // 검색 할 양식의 클래스 이름
lpctstr lpwindowname // 검색 할 양식의 제목 이름
); // 지정된 조건과 일치하는 첫 번째 자식 창을 찾습니다.
hwnd findwindowex (
hwnd hwndparent, // 자녀가 검색되는 부모 창의 핸들
hwnd hwndchildafter, //이 양식 후에 검색을 시작하십시오
lpctstr lpszclass, // 검색 할 양식의 클래스 이름
lpctstr lpszwindow // 검색 할 양식의 제목 이름
); // 지정된 양식 목록에서 지정된 조건과 일치하는 첫 번째 자식 창을 찾습니다.
부울 쇼 와인도 (
hwnd hwnd, // 양식의 핸들
int ncmdshow // 양식을 표시하는 방법
); // 창의 가시성을 지정합니다
Bool Bringwindowtotop (
hwnd hwnd // 양식의 핸들
); // 지정된 창을 창 목록의 상단으로 가져옵니다.
bool setfore groundwindow (
hwnd hwnd // 양식의 핸들
); // 시스템의 전경 프로그램으로 창을 설정합니다.
hwnd setfocus (
hwnd hwnd // 집중된 양식의 핸들
) // 창에 집중합니다
void keybd_event (
바이트 BVK, // virtual-key 코드
바이트 BSCAN, // 하드웨어 스캔 코드
dword dwflags, // 다양한 기능 옵션을 지정하는 플래그
dword dwextrainfo // 키 스트로크와 관련된 추가 데이터
); // 키 생성을 시뮬레이션합니다
여기서 우리는 기본 API, 특정 사용 방법에 대한 설명을 제공하며 다른 관련 정보를 사용할 수 있습니다.
특정 분석 :
먼저 Spy ++ 도구를 사용하여 "Kingsoft Powerword 2002"를 분석하면 분석 결과가 다음과 같습니다.
Kingsoft Powerword 2002 형태의 이름은 다음과 같습니다. Kingsoft Powerword 2002
Kingsoft Powerword 2002의 Word Input Control 클래스 이름 : 편집 ( Combobox 의 아동 양식)
Kingsoft Powerword 2002의 번역 결과 제어 클래스 이름 : xdict_explainview
프로그램 인터페이스 :
타이머 컨트롤 (3 초인 Timer1), 메모 컨트롤 (MLIST) 및 2 개의 Ricedit 컨트롤 (RTRANS, RCONV)의 특정 코드는 다음과 같습니다.
인터페이스
용도
창, 메시지, 시스템, 변형, 클래스, 그래픽, 컨트롤, 양식, 대화 상자, stdctrls, comctrls, clipbrd, 버튼, extctrls, 메뉴;
유형
tform1 = 클래스 (tform)
MLIST : TMEMO;
RTRANS : trichedit;
버튼 1 : tbutton;
Timer1 : Ttimer;
버튼 2 : tbutton;
RCONV : trichedit;
버튼 3 : tbutton;
OD : 토폴리 로그;
Richedit3 : trichedit;
MainMenu1 : tmainmenu;
F1 : tmenuitem;
n1 : tmenuitem;
n2 : tmenuitem;
N3 : tmenuitem;
C1 : tmenuitem;
N4 : tmenuitem;
n5 : tmenuitem;
rtf1 : tmenuitem;
패널 1 : tpanel;
ProgressBar1 : tprogressbar;
스플리터 1 : tsplitter;
스플리터 2 : tsplitter;
E1 : tmenuitem;
n6 : tmenuitem;
N7 : tmenuitem;
N8 : tmenuitem;
edit1 : 테디;
라벨 1 : tlabel;
라벨 2 : tlabel;
라벨3 : tlabel;
절차 버튼 1Click (sender : tobject);
절차 Timer1Timer (Sender : Tobject);
절차 button2click (sender : tobject);
절차 버튼 3Click (sender : tobject);
프로 시저 N3Click (Sender : Tobject);
절차 n6click (sender : tobject);
절차 n8click (sender : tobject);
사적인
{개인 선언}
공공의
{공개 선언}
끝;
var
form1 : tform1;
I : integer = 0; // 단어 암기를위한 전역 변수를 선언합니다
구현
{$ r *.dfm}
// 변환 이벤트를 시작합니다
절차 tform1.Button1click (sender : tobject);
시작하다
rtrans.clear; // 변환 영역을 지우십시오
RCONV.
Timer1.interval : = strtoint (edit1.text)*1000; // 간격 시간을 설정합니다
timer1.enabled : = true; //
ProgressBar1.Position : = 0; // 진행률 표시 줄 상태를 설정합니다
i : = 0; // 계산을 위해 변수 초기화
ProgressBar1.max : = mlist.lines.count;
끝;
절차 tform1.Timer1Timer (Sender : Tobject);
var
King, // Kingsoft Powerword 2002 주요 창 핸들
콤보, // 단어 입력 상자 부모 창 핸들
편집, // 단어 입력 상자 핸들
수단 : thandle; // 변환 디스플레이 창 핸들
시작하다
i <= mlist.lines.count-1 인 경우
시작하다
King : = FindWindow (NIL, PCHAR ( 'Kingsoft PowerWord 2002'));
콤보 : = FindWindowEx (King, 0, 'Combobox', NIL);
편집 : = FindWindowEx (Combo, 0, 'edit', nil);
수
// 정보 표시
label3.caption : = '('+inttostr (i+1)+'/'+inttostr (mlist.lines.count)+')'+mlist.lines [i];
// 스토리지 정보
clipboard.astext : = mlist.lines [i];
Showwindow (King, Sw_shownormal);
Bringwindowtotop (King);
Setforegroundwindow (King);
Windows.SetFocus (편집);
// 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 (평균);
Windows.SetFocus (평균);
// 시뮬레이션 Ctrl+A 모두를 선택합니다
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 (평균);
Windows.SetFocus (평균);
// 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);
// 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 ( '==============================================
ProgressBar1.stepit; // 진행률 표시 줄 이동
INC (i); // 수를 늘립니다
다른 끝
시작하다
timer1.enabled : = false;
rtrans.lines.savetofile ( 'temp.txt');
끝;
끝;
// 단어 목록을 mlist로 읽습니다
절차 tform1.Button2Click (sender : tobject);
시작하다
OD.Execute 인 경우
mlist.lines.loadfromfile (od.filename);
끝;
// 전환 함수, 음성 기호는 RTRANS에서 얻은 번역에서 올바르게 표시 할 수 없기 때문에
// 먼저 Kingsoft Powerword의 글꼴 디렉토리에 음성 일반 글꼴을 설치해야합니다.
// 음성 기호의 올바른 표시를 구현합니다
절차 tform1.Button3Click (sender : tobject);
var
I : 정수;
시작, 끝 : 정수;
시작하다
RCONV.
i : = 0 to rtrans.lines.count-1 do
시작하다
richedit3.text : = rtrans.lines [i];
start : = pos ( '[', richedit3.text); // 발음 기호의 위치를 찾으십시오. 발음 기호는 []에 있습니다.
시작 하면 > 0 입니다
시작하다
끝 : = pos ( ']', richedit3.text);
Richedit3.selstart : = 시작;
Richedit3.sellength : = ENDSTART-1;
Richedit3.selattributes.name : = 'Kingsoft Phonetic Plain';
끝;
Richedit3.selectall;
Richedit3.copytoclipboard;
rconv.pastefromclipboard;
Application.ProcessMessages;
끝;
끝;
// 프로그램 종료
절차 tform1.n3Click (sender : tobject);
시작하다
응용 프로그램.
끝;
// 기능 복사
절차 tform1.n6click (sender : tobject);
시작하다
rconv.selectall;
rconv.copytoclipboard;
끝;
// 변환을 중지합니다
절차 tform1.n8click (sender : tobject);
시작하다
timer1.enabled : = false;
끝;
끝.
지금까지 모든 프로그램은 설계되었습니다.
달리기 방법 :
"Kingsoft Powerword 2002"가이 프로그램에서 실행되는지 확인하십시오.
좋아, 나는이 600 단어를 성공적으로 번역하고 단어로 인쇄했다.
컴파일 된 실행 가능한 프로그램 및 소스 코드를 얻는 방법 :
[email protected]으로 이메일을 보낼 수 있습니다
또는 내 사이트에 로그인하여 메시지를 남겨주세요 : http://redlegend.51.net