我在使用SQLite3數據庫的Delphi中編寫應用程序。我希望能夠在啓動應用程序的同時按住一些修飾鍵(例如CTRL + SHIFT)來發出數據庫重新初始化的信號。如何在啓動Delphi應用程序時捕獲修改鍵以強制執行某些行爲
如何捕獲應用程序是在這些按鍵被啓動時啓動的?
我在使用SQLite3數據庫的Delphi中編寫應用程序。我希望能夠在啓動應用程序的同時按住一些修飾鍵(例如CTRL + SHIFT)來發出數據庫重新初始化的信號。如何在啓動Delphi應用程序時捕獲修改鍵以強制執行某些行爲
如何捕獲應用程序是在這些按鍵被啓動時啓動的?
添了正確的答案,但你可能需要多一點的框架:
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。我剛剛測試了上面的代碼,它的工作原理,但如果你有一個閃屏等,那麼它可能會改變事情。
您必須在應用程序中捕獲鍵盤掛鉤。 See Here 然後你展示的主要形式之前處理的掛鉤 - 例如,在DPR文件中的CreateForm和運行之前
嘗試的GetAsyncKeyState一個,GetKeyState或GetKeyboardState API函數來讀取CTRL的當前狀態和Shift鍵在程序啓動時。啓動時添加鍵盤掛鉤可能不起作用,因爲在您的應用程序有機會安裝掛鉤之前,鍵盤按鍵事件可能發生。
if (GetKeyState(VK_SHIFT) < 0) and (GetKeyState(VK_CONTROL) < 0) then
ReinitializeDatabase;