На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! ПРАВИЛА РАЗДЕЛА · FAQ раздела Delphi · Книги по Delphi
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.
Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
2. Как "свернуть" программу в трей.
3. Как "скрыться" от Ctrl + Alt + Del (заблокировать их и т.п.)
4. Как прочитать список файлов, поддиректорий в директории?
5. Как запустить программу/файл?
... (продолжение следует) ...

Вопросы, подробно описанные во встроенной справочной системе Delphi, не несут полезной тематической нагрузки, поэтому будут удаляться.
Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы. Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.


Внимание
Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка - 60 дней. Последующие попытки бан.
Мат в разделе - бан на три месяца...
Модераторы: jack128, D[u]fa, Shaggy, Rouse_
  
> Не грузить приложение...
    Хочу чтобы в системе не могло находиться двух загруженных моих приложений, т.е. если мое приложение уже запущено, и попробовать запустить его еще раз, то просто на экран восстанавливается уже загруженный экземпляр и все.
    Делаю так:
    --- project1.dpr ---
    ...
    var
    m_HWnd : HWND;
    begin
    m_HWnd := FindWindow('TForm1', 'Run Application');
    if not (m_HWnd = 0) then
    ShowWindow(m_HWnd, SW_SHOW)
    else
    begin
    Application.Initialize;
    Application.CreateForm(TForm1, Form1);
    Form1.Caption := 'Run Application'; //изначально капшен другой
    Application.Run;
    end;
    end.
    ---
    Идея ясна? Но это не совсем работает – приложение восстанавливается, но не помещается на первый план и не становится активным. Как это сделать?
      Я решал эту задачу немного по-другому:
      1. Регистрирую собственный Message.
      2. В WinMain создаю Mutex. Если он уже создан (GetLastError=ERROR_ALREADY_EXISTS),
      выполняю SendMessage(HWND_BROADCAST, зарегестр. Message, 0, 0) и завершаю WinMain.
      3. Изменяю у формы Dispath и ловлю указанный Message. После прихода Message выполняю:
      Application.Restore; Application.BringToFront;
        Есть хороший способ. Действенный. Пробовал сам. Пиши dims@nm.ru
          Только что скачал с сайта Мастера Делфи статью об этом, лежит в разделе Статьи, самая первая.
          1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
          0 пользователей:


          Рейтинг@Mail.ru
          [ Script execution time: 0,0204 ]   [ 15 queries used ]   [ Generated: 18.05.24, 05:35 GMT ]