Как проверить запущена ли программа delphi

Я слышал, что некоторые авторы пользовательских компонентов используют процедуру RTL, которая проверяет, работает ли Delphi, чтобы установить ограничения условно-бесплатного программного обеспечения. Кто-нибудь знает, что это за распорядок? Проверка очевидных имен, таких как «DelphiRunning» или «IsDelphiRunning», не дает ничего полезного.

задан 28 мая ’09, 14:05

3 ответы

Существуют 2 разные идеи здесь:
— Delphi запущен и работает
— Приложение работает под отладчиком

Обычный способ проверить, если Delphi работает заключается в проверке наличия известных IDE Windows с определенным именем класса, например TAppBuilder или TPropertyInspector.
Эти 2 работают во всех версиях Delphi IIRC.

Если вы хотите узнать, подходит ли ваше приложение работает под отладчиком, т.е. запускается в обычном режиме из среды IDE с помощью «Выполнить» (F9) или присоединен к отладчику, когда он уже запущен, вам просто нужно протестировать глобальную переменную DebugHook.

ДИАГНОСТИКА ГРУЗОВИКОВ БЮДЖЕТНЫМ СКАНЕРОМ DELPHI DS 150E


Обратите внимание, что «Отсоединить от программы» не удаляет значение DebugHook, но «Присоединить к процессу» устанавливает его.

function IsDelphiRunning: Boolean; begin Result := (FindWindow(‘TAppBuilder’, nil) > 0) and (FindWindow(‘TPropertyInspector’, ‘Object Inspector’) > 0); end; function IsOrWasUnderDebugger: Boolean; begin Result := DebugHook <> 0; end;

Если цель — ограничить использование пробной версии вашего компонента, когда приложение разрабатывается, у обоих есть недостатки:
— Скрытые окна с правильным именем класса / заголовком могут быть включены в приложение
— DebugHook можно вручную установить в коде

ответ дан 28 мая ’09, 19:05

Источник: stackovergo.com

Как проверить запущена ли программа delphi

У нас вы качаете только рабочие исходники

Читайте также:
Программа для обновления процессора амд

Как определить, запущена ли Delphi

Как определить, запущена ли Delphi

Как определить, запущена ли Delphi If FindWindow(‘TAppBuilder’,nil)

Эта запись была добавлена в Четверг, 15 мая, 2008 — 23:23 В разделы Delphi, IDE. Вы можете подписаться на получение новых комментариев RSS 2.0 feed. Both comments and pings are currently closed.

Архивы

Категории

  • Delphi (226)
  • BDE (3)
  • dll (10)
  • Exceptions (2)
  • IDE (10)
  • INI-файлы (3)
  • OLE (2)
  • БД (7)
  • Игры (19)
  • Медиа (11)
  • Ресурсы (12)
  • Сеть, модем (22)
  • Система (33)
  • Файлы (6)
  • Функции (6)
  • Excel (7)
  • Word (5)
  • Hooks (4)
  • Завершение работы (13)
  • Запуск программ (16)
  • Общие вопросы (22)
  • Окна (1)
  • Переменные среды (9)
  • Графика (52)
  • Дата, время (6)
  • Кодирование (6)
  • Математика (4)
  • Преобразования (4)
  • BIOS (3)
  • CD, DVD (7)
  • Видеосистема (3)
  • Диски (4)
  • Звуковые устройства (4)
  • Источники питания (1)
  • Клавиатура (24)
  • Мышка (5)
  • Порты (20)
  • Процессор (4)
  • Сетевая карта (1)
  • ADO (9)
  • BLOB поля (11)
  • DBase (1)
  • interbase (5)
  • MS Office (2)
  • sql (1)
  • Application (5)
  • TBitMap (4)
  • TCanvas (2)
  • TDateTime (1)
  • TFont (4)
  • TIcon (2)
  • TJpegImage (1)
  • TList (1)
  • TmetaFile (1)
  • TString, TStrings (4)
  • BitBtn (4)
  • ComboBox (2)
  • CoolBar (1)
  • DBCtrlGrid (1)
  • DBGrid (18)
  • DBImage (2)
  • DrawGrid (1)
  • Edit (3)
  • FileListBox (1)
  • form (29)
  • image (12)
  • ImageList (3)
  • Label (1)
  • ListBox (9)
  • ListView (2)
  • MediaPlayer (6)
  • Memo (8)
  • Menu (5)
  • PageControl (1)
  • ProgressBar (2)
  • Query (1)
  • RadioButton (1)
  • RadioGroup (1)
  • RichEdit (4)
  • ScrollBox (3)
  • ShellListView (2)
  • SpeedButton (1)
  • StatusBar (1)
  • StringGrid (4)
  • TabbedNoteBook (1)
  • Timer (2)
  • TrackBar (1)
  • TreeView (15)
  • WebBrowser (6)
  • Help (3)
  • Диалоги (25)
  • Процессы (26)
  • Реестр (5)
  • Сети, интернет (36)
  • Сообщения (7)
  • Файловая система (37)
  • Экран (13)
  • Ярлыки (5)
Читайте также:
Программа измерения энергопотребление компьютера

Кейворды

delphi исходники для управления windows Работает на WordPress | студия Веб-сателлит |

Delphi DS150E, Autocom, Multidiag — диагностический сканер с Aliexpress

Источник: pblog.ru

Как проверить, запущен ли процесс с использованием Delphi?

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

user26305 18 май ’09 в 04:12 2009-05-18 04:12
2009-05-18 04:12

5 ответов

uses TlHelp32; function processExists(exeFileName: string): Boolean; var ContinueLoop: BOOL; FSnapshotHandle: THandle; FProcessEntry32: TProcessEntry32; begin FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); FProcessEntry32.dwSize := SizeOf(FProcessEntry32); ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32); Result := False; while Integer(ContinueLoop) <> 0 do begin if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) = UpperCase(ExeFileName)) or (UpperCase(FProcessEntry32.szExeFile) = UpperCase(ExeFileName))) then begin Result := True; end; ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32); end; CloseHandle(FSnapshotHandle); end; procedure TForm1.Button1Click(Sender: TObject); begin if processExists(‘notepad.exe’) then ShowMessage(‘process is running’) else ShowMessage(‘process not running’); end;
user108578 18 май ’09 в 04:18 2009-05-18 04:18
2009-05-18 04:18

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

Это может включать, например, размещение сообщения в главном окне вашего приложения с указанием закрыть его. Или открытие трубы IPC и т. Д.

user91872 18 май ’09 в 04:52 2009-05-18 04:52
2009-05-18 04:52

uses TlHelp32, PsAPI; function ProcessExists(anExeFileName: string): Boolean; var ContinueLoop: BOOL; FSnapshotHandle: THandle; FProcessEntry32: TProcessEntry32; fullPath: string; myHandle: THandle; myPID: DWORD; begin // wsyma 2016-04-20 Erkennung, ob ein Prozess in einem bestimmten Pfad schon gestartet wurde. // Detection wether a process in a certain path is allready started. // http://stackru.com/questions/876224/how-to-check-if-a-process-is-running-using-delphi // http://swissdelphicenter.ch/en/showcode.php?id=2010 FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); FProcessEntry32.dwSize := SizeOf(FProcessEntry32); ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32); Result := False; while Integer(ContinueLoop) <> 0 do begin if UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) = UpperCase(ExtractFileName(anExeFileName)) then begin myPID := FProcessEntry32.th32ProcessID; myHandle := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ, False, myPID); if myHandle <> 0 then try SetLength(fullPath, MAX_PATH); if GetModuleFileNameEx(myHandle, 0, PChar(fullPath), MAX_PATH) > 0 then begin SetLength(fullPath, StrLen(PChar(fullPath))); if UpperCase(fullPath) = UpperCase(anExeFileName) then Result := True; end else fullPath := »; finally CloseHandle(myHandle); end; if Result then Break; end; ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32); end; CloseHandle(FSnapshotHandle); end;
user6230608 20 апр ’16 в 13:50 2016-04-20 13:50
2016-04-20 13:50

Читайте также:
Кто вел программу смак

Если у вас есть контроль над приложением (как следует из вашего вопроса), хороший способ сделать это — создать именованный объект сопоставления файлов в начале процесса. Это похоже на предложение создать мьютекс из RedLEON.

// Add this into the application you wish to update CreateFileMapping(HWND($FFFFFFFF), nil, PAGE_READONLY, 0, 32, ‘MAIN-PROGRAM’); // Note: Mapping object is destroyed when your application exits // Add this into your updater application var hMapping: HWND; begin hMapping := CreateFileMapping(HWND($FFFFFFFF), nil, PAGE_READONLY, 0, 32, ‘MAIN-PROGRAM’); if (hMapping <> 0) then begin if (GetLastError() = ERROR_ALREADY_EXISTS) then ShowMessage(‘Application to update is already running!’); end;

Проверьте документацию MSDN на CreateFileMapping для получения дополнительной информации.

Смотрите также принятый ответ на этот вопрос, который охватывает ответ Люка и предоставляет дополнительные решения.

Источник: stackru.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru