2008-10-16 3 views
4

저는 SQLite3 데이터베이스를 사용하는 델파이에서 애플리케이션을 작성하고 있습니다. CTRL + SHIFT와 같은 일부 수정 자 키를 누른 상태에서 응용 프로그램을 시작하여 데이터베이스의 재 초기화를 알리고 싶습니다.일부 동작을 강제하기 위해 델파이 앱을 시작하는 동안 수정 자 키를 어떻게 캡처 할 수 있습니까?

이러한 키가 열린 상태에서 응용 프로그램이 시작된 것을 어떻게 캡처합니까?

답변

8

팀은 정답이 있지만, 당신은 좀 더 프레임 워크해야 할 수 있습니다

procedure TForm56.Button1Click(Sender: TObject); 
begin 
    if fNeedReinit then 
    ReinitializeDatabase; 
end; 

procedure TForm56.FormCreate(Sender: TObject); 
begin 
    fNeedReinit := False; 
end; 

procedure TForm56.FormShow(Sender: TObject); 
begin 
fNeedReinit := (GetKeyState(VK_SHIFT) < 0) and (GetKeyState(VK_CONTROL) < 0); 
end; 

변경 Button1Click이라하여 나중에 이벤트와 fNeedReinit가 설정되어 있는지 확인합니다. 키 스트로크를 잡지 못하는 경우 KeyPreview를 기본 양식에 설정할 수도 있습니다. 위의 코드를 테스트 한 결과 작동하지만 스플래시 화면 등이 있으면 상황이 바뀔 수 있습니다.

0

응용 프로그램에서 키보드 후크를 캡처해야합니다. 메인 폼을 표시하기 전에 See Here 다음은 후크를 처리 - 민주주의 인민 공화국 파일에서의 CreateForm하고 실행하기 전에 예

1

에서 Ctrl의 현재 상태를 읽고 키를 이동하는 GetAsyncKeyState 중 하나 GetKeyState 또는 GetKeyboardState API 함수를 사용해보십시오 프로그램 시작시. 시작시 키보드 훅을 추가하면 응용 프로그램이 훅을 설치할 기회가 있기 전에 Shift 키의 키 누름 이벤트가 발생할 수 있기 때문에 작동하지 않을 수 있습니다.

7
if (GetKeyState(VK_SHIFT) < 0) and (GetKeyState(VK_CONTROL) < 0) then 
    ReinitializeDatabase; 
관련 문제