2011-11-29 6 views
3

Как определить, было ли мое приложение запущено пользователем? Например, если Exe дважды щелкнул или щелкнул правой кнопкой мыши> открыть из проводника Windows.Как было запущено мое приложение?

Мне нужна функция для определения выше, что-то вроде:

function AppWasExecutedByUser: Boolean; 
begin 
    // 
end; 

procedure TForm1.OnCreate(Sender: TObject); 
begin 
    if AppWasExecutedByUser then 
    ShowMessage('User opened the exe by double clicking in Windows') 
    else 
    ShowMessage('Application was opened some other way'); 
end; 

Цените свои мысли.

Спасибо.

+3

Зачем вам это нужно? Это необычный запрос. Большинство приложений не нуждаются или не заботятся о том, как они были запущены. –

ответ

4

Если вы связали приложение с расширением файла, вы можете получить paramcount=1, и вы можете прочитать открытый файл в paramstr(1).

Если вы откроете приложение, двойной щелчок или Открыть в исполняемом файле будет иметь тот же эффект: paramcount=0. На самом деле, проводник Windows вызывает ShellApi с теми же параметрами. Таким образом, нет возможности идентифицировать его.

И paramstr(0) всегда будет содержать полный исполняемый путь в обоих случаях.

Даже если вы создадите ссылку быстрого доступа и добавьте параметр, двойной щелчок или правый щелчок + Open будет иметь тот же результат.

5

Единственный способ сделать это - запустить приложение из ярлыка, передающего параметры командной строки в ваше приложение. Просто щелчок по файлу напрямую не передает никаких параметров.

Смежные вопросы