2008-10-16 61 views

回答

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 然後你展示的主要形式之前處理的掛鉤 - 例如,在DPR文件中的CreateForm和運行之前

1

嘗試的GetAsyncKeyState一個,GetKeyStateGetKeyboardState API函數來讀取CTRL的當前狀態和Shift鍵在程序啓動時。啓動時添加鍵盤掛鉤可能不起作用,因爲在您的應用程序有機會安裝掛鉤之前,鍵盤按鍵事件可能發生。

7
if (GetKeyState(VK_SHIFT) < 0) and (GetKeyState(VK_CONTROL) < 0) then 
    ReinitializeDatabase; 
相關問題