Форум программистов
 
Регистрация на форуме тут, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль

Купить рекламу на форуме 15-35 тыс рублей в месяц

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы Поиск в этой теме
Старый 20.12.2006, 15:13   #1
12usver12
 
Регистрация: 16.12.2006
Сообщений: 4
По умолчанию Как узнать - запущен ли определенный процесс ?

Как мне узнать запущен ли процесс winamp.exe ?
12usver12 вне форума Ответить с цитированием
Старый 20.12.2006, 15:44   #2
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

Код:
var
handle_winamp:hwnd;
begin
handle_winamp:=findwindow('Winamp v1.x',nil);
if handle_winamp<>0 then 
   showmessage('Winamp запущен!')
else
   showmessage('Winamp не запущен!');
end;
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 21.12.2006, 07:21   #3
12usver12
 
Регистрация: 16.12.2006
Сообщений: 4
По умолчанию

неа чото не хочет
12usver12 вне форума Ответить с цитированием
Старый 21.12.2006, 08:18   #4
Трофимов Александр
Форумчанин
 
Аватар для Трофимов Александр
 
Регистрация: 03.11.2006
Сообщений: 321
По умолчанию

А если просто найти процесс winamp , а то может версия у него другая winampa стоит? Программа то ругается на что-то или процесс не находит?
Трофимов Александр вне форума Ответить с цитированием
Старый 21.12.2006, 15:39   #5
Сильванович Михаил
Студент
Форумчанин
 
Регистрация: 10.11.2006
Сообщений: 196
По умолчанию

Код:
PFindWindowStruct = ^TFindWindowStruct;
TFindWindowStruct = record
    Caption: string;
    ClassName: string;
    WindowHandle: THandle;
end;

function EnumWindowsProc(hWindow: hWnd; lParam: LongInt): Bool; stdcall; 
var 
  lpBuffer: PChar; 
  WindowCaptionFound: bool; 
  ClassNameFound: bool; 
begin 
  GetMem(lpBuffer, 255); 
  Result := True; 
  WindowCaptionFound := False; 
  ClassNameFound := False; 
  try 
    if GetWindowText(hWindow, lpBuffer, 255) > 0 then
      if Pos(PFindWindowStruct(lParam).Caption, StrPas(lpBuffer)) > 0 then WindowCaptionFound := true;
    if PFindWindowStruct(lParam).ClassName = '' then 
      ClassNameFound := True 
    else if GetClassName(hWindow, lpBuffer, 255) > 0 then 
      if Pos(PFindWindowStruct(lParam).ClassName, StrPas(lpBuffer)) > 0 then ClassNameFound := True; 
    if (WindowCaptionFound and ClassNameFound) then 
      begin 
        PFindWindowStruct(lParam).WindowHandle := hWindow; 
        Result := False; 
      end; 
  finally 
    FreeMem(lpBuffer, sizeof(lpBuffer^)); 
  end; 
end; 

function FindAWindow(Caption: string; ClassName: string): THandle;
//Находит окошко по неполному названию т.е., например, FindAWindow('winamp','')
//где я ее выкопал не помню...
var WindowInfo: TFindWindowStruct;
begin 
  WindowInfo.Caption := Caption; 
  WindowInfo.ClassName := ClassName; 
  WindowInfo.WindowHandle := 0; 
  EnumWindows(@EnumWindowsProc, LongInt(@WindowInfo));
  FindAWindow := WindowInfo.WindowHandle; 
end;
Visita Interiorem Terrae Rectificando Operae Lapidem...
Сильванович Михаил вне форума Ответить с цитированием
Старый 30.08.2008, 08:46   #6
Var17
Пользователь
 
Регистрация: 13.12.2007
Сообщений: 41
По умолчанию

Цитата:
Сообщение от Сильванович Михаил Посмотреть сообщение
Код:
 
function FindAWindow(Caption: string; ClassName: string): THandle;
//Находит окошко по неполному названию т.е., например, FindAWindow('winamp','')
//где я ее выкопал не помню...
var WindowInfo: TFindWindowStruct;
begin 
  WindowInfo.Caption := Caption; 
  WindowInfo.ClassName := ClassName; 
  WindowInfo.WindowHandle := 0; 
  EnumWindows(@EnumWindowsProc, LongInt(@WindowInfo));
  FindAWindow := WindowInfo.WindowHandle; 
end;
И как определить нашла функция окно или нет ?
Var17 вне форума Ответить с цитированием
Старый 30.08.2008, 10:47   #7
Ozerich
Студент 1 курса
Форумчанин Подтвердите свой е-майл
 
Аватар для Ozerich
 
Регистрация: 27.06.2008
Сообщений: 959
По умолчанию

Человек ведь попросил как узнать запущен ли ПРОЦЕСС?

Код:
Function IsProcesssRun(processname:string):boolean;
var Snapshot:Thandle;
proc:TprocessEntry32;
begin
result:=false;
Snapshot:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
if snapshot=INVALID_HANDLE_VALUE then exit;
proc.dwSize:=sizeof(TprocessEntry32);
if Process32First(snapshot,proc) then
repeat
if proc.szExeFile=processname then
begin
  result:=true;
  break;
end;
until not process32next(snapshot,proc);
closehandle(snapshot);
end;
подключить модуль TLHELP32.

Писал здесь так что могут быть ошибки
C++(STL, QT, WinInet) / DHTML(CSS) / JavaScript / PHP Developer
Ozerich вне форума Ответить с цитированием
Старый 30.08.2008, 10:56   #8
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Цитата:
Сообщение от Var17 Посмотреть сообщение
И как определить нашла функция окно или нет ?
Если эта функция нашла нужное окно, то она возвращает хендел найденого окна. Это видно в этой строчке:

Код:
FindAWindow := WindowInfo.WindowHandle;
А если окно не найдено, то хендл будет равным нулю. Вы можете её проверить так:

Код:
Procedure TForm1.Button1Click(Sender: TObject);
Begin
Edit1.Text:=IntToStr(FindAWindow('Delphi',''));
End;
Всегда рад помочь!
Terran вне форума Ответить с цитированием
Старый 30.08.2008, 10:59   #9
Ozerich
Студент 1 курса
Форумчанин Подтвердите свой е-майл
 
Аватар для Ozerich
 
Регистрация: 27.06.2008
Сообщений: 959
По умолчанию

Var17 просил узнать запущен ли процесс.А вы иму даёте функции которые проверяют запущено ли окно.
C++(STL, QT, WinInet) / DHTML(CSS) / JavaScript / PHP Developer
Ozerich вне форума Ответить с цитированием
Старый 30.08.2008, 11:11   #10
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Цитата:
Сообщение от Ozerich Посмотреть сообщение
Var17 просил узнать запущен ли процесс.А вы иму даёте функции которые проверяют запущено ли окно.
Может я конечно ошибаюсь, но в этой строчке
Цитата:
И как определить нашла функция окно или нет ?
он спрашивает про поиск окна и у него приведена цитата именно той функции, которая ищит окна...
Всегда рад помочь!
Terran вне форума Ответить с цитированием
Ответ
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
узнать с какого компьютера заходили на определенный сайт? Lidi Помощь студентам 3 20.08.2008 15:56
Как узнать с какого по какой адрес занимает процесс в системе. kalexi Win Api 2 30.03.2008 15:48
создать папку в том месте откуда запущен exe Stanislav Общие вопросы Delphi 1 22.11.2007 17:58
Как узнать,нужен ли мне определённый процесс Alximik Софт 5 21.11.2007 13:50
как суммировать только определенный месяц? Алька Microsoft Office Excel 2 08.05.2007 08:50