Я обрабатываю файлы связанных с ним приложений из Windows. Поэтому, когда вы дважды щелкните файл из Windows, он выполнит мою программу, и я обработаю файл оттуда, что-то вроде:
procedure TMainForm.FormCreate(Sender: TObject);
var
i: Integer;
begin
for i := 0 to ParamCount -1 do
begin
if SameText(ExtractFileExt(ParamStr(i)), '.ext1') then
begin
// handle my file..
// break if needed
end else
if SameText(ExtractFileExt(ParamStr(i)), '.ext2') then
begin
// handle my file..
// break if needed
end else
end;
end;
Это работает практически так, как я этого хочу, но когда я тестировал, я понял, что не рассматривает использование только одного экземпляра моей программы.
Так, например, если я выбрал несколько файлов из Windows и одновременно открыл их, это создаст то же количество экземпляров моей программы с количеством открытых файлов.
Каким будет подходящий способ приблизиться к этому, чтобы вместо нескольких экземпляров моей программы открывать любые дополнительные файлы из Windows, которые будут открыты, просто сфокусируются на одном и только экземпляре, и я обрабатываю файлы как обычно
Спасибо
UPDATE
Я нашел здесь хорошую статью: http://www.delphidabbler.com/articles?article=13&part=2, который, как мне кажется, мне нужен, и показывает, как работать с Windows API как упомянутый rhooligan. Я собираюсь прочитать это сейчас.