Hey,
kann ich nicht testen, da dann mein Programm überhaupt nicht mehr funktionieren würde. Allerdings kann der Code, der noch im Create & Destroy ist, dafür nicht verantwortlich sein, da es anfangs ja funktioniert.
An meinem Code in der LowLevelKeyboardProc kann es auch nicht liegen, ich habe überprüft, dass sie ab einem Zeitpunkt garnicht mehr aufgerufen wird. Ansonsten ist alles was ich da mache sowieso nur, auf eine bestimmte Taste zu prüfen und ggf. nen Timer zu starten.
//Edit: konkret sieht das so aus:
Delphi-Quellcode:
function LowLevelKeyboardProc(nCode: Integer; wParam: wParam;
lParam: lParam): LRESULT; stdcall;
var vkCode: Cardinal;
begin
if (nCode >= 0) and (wParam = WM_KEYDOWN) then
begin
vkCode := PKbdDLLHookStruct(lParam)^.vkCode;
if (vkCode = Hotkey) and not working then //Hotkey = vorher defnierte Taste
begin
BitmapCount := Project.GetFilesCount(SearchDir, '*.bmp');
MainForm.StartTimer.Enabled := true;
end;
end;
Result := CallNextHookEx(HookHandle, nCode, wParam, lParam);
end;
function TProject.GetFilesCount(Folder, WildCard: string): Integer;
var
intFound: Integer;
SearchRec: TSearchRec;
begin
Result := 0;
if (Folder <> '') and (Folder[Length(Folder)] <> '\') then
Folder := Folder + '\';
intFound := FindFirst(Folder + WildCard, faAnyFile, SearchRec);
while (intFound = 0) do
begin
if not (SearchRec.Attr and faDirectory = faDirectory) then
Inc(Result);
intFound := FindNext(SearchRec);
end;
FindClose(SearchRec);
end;
procedure TMainForm.StartTimerTimer(Sender: TObject);
var CurrBitmapCount: integer;
begin
inc(TimerCount);
CurrBitmapCount := Project.GetFilesCount(SearchDir, '*.bmp');
if CurrBitmapCount > BitmapCount then
begin
Sleep(200);
Project.StartWorking(false);
TimerCount := 0;
StartTimer.Enabled := false;
end;
if TimerCount >= 40 then
begin
TimerCount := 0;
StartTimer.Enabled := false;
end;
end;
Es soll also überprüft werden, ob ein Screenshot erstellt wurde, indem im entsprechenden Verzeichnis geschaut wird, ob eine neue .bmp dazugekommen ist. Keine Ahnung ob man das eleganter machen könnte, aber so funnktionierts zumindest ...