Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Синтаксис
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 14.01.2011, 07:41
hackvl hackvl вне форума
Прохожий
 
Регистрация: 14.01.2011
Сообщения: 28
Репутация: 10
Вопрос [Error] Unit1.pas(32): Undeclared identifier: 'exe_running'

Сделал таймер
PHP код:
procedure TForm1.Timer1Timer(SenderTObject);
begin
if
exe_running('notepad.exe'falsethen
begin
timer2
.Enabled:=True;
timer3.Enabled:=True;
timer4.Enabled:=True;
end
else
showmessage('Процесс незапущен');
end
при проверке вылазит ошибка
[Error] Unit1.pas(32): Undeclared identifier: 'exe_running'

Что нетак сделал? или чтото надо добавить или компонент какойнить кинуть на форму?
Ответить с цитированием
  #2  
Старый 14.01.2011, 08:11
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Код:
exe_running('notepad.exe', false)

возможно имелось ввиду это?
Код:
uses ShellApi;
...ShellExecute(Handle, 'open',
  'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #3  
Старый 14.01.2011, 09:09
hackvl hackvl вне форума
Прохожий
 
Регистрация: 14.01.2011
Сообщения: 28
Репутация: 10
По умолчанию

мне нужно так
если этот процесс запущен ***.exe то влючаются таймеры в моей программе, если процесс незапущен вылазит сообщение

код взял от сюда http://articles.org.ru/cfaq/index.php?qid=1741&catid=58
не весь код брал только вот етот вставил

Код:
// example 1: is a exe-file running ? 
procedure tform1.button1click(sender: tobject); 
begin 
if exe_running('notepad.exe', false) then 
showmessage('exe is running') 
else 
showmessage('exe is not running'); 
end;
Кто что подскажет?
Ответить с цитированием
  #4  
Старый 14.01.2011, 09:22
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Ну так и надо было копировать описание функции, а то вы выдернули только ее вызов.
Код:
function exe_running(filename: string; bfullpath: boolean): boolean; 
var 
i: integer; 
myproclist: tstringlist; 
begin 
myproclist := tstringlist.create; 
try 
getprocesslist(myproclist); 
result := false; 
if myproclist = nil then exit; 
for i := 0 to myproclist.count - 1 do 
begin 
if not bfullpath then 
begin 
if comparetext(extractfilename(myproclist.strings[i]), filename) = 0 then 
result := true 
end 
else if comparetext(myproclist.strings[i], filename) = 0 then result := true; 
if result then break; 
end; 
finally 
myproclist.free; 
end; 
end; 
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #5  
Старый 14.01.2011, 09:25
hackvl hackvl вне форума
Прохожий
 
Регистрация: 14.01.2011
Сообщения: 28
Репутация: 10
По умолчанию

function exe_running(filename: string; bfullpath: boolean): boolean;
перед var ставить? я втыкнул и мне ошибка вылазит
[Error] Unit1.pas(21): Unsatisfied forward or external declaration: 'exe_running'
Ответить с цитированием
  #6  
Старый 14.01.2011, 09:37
hackvl hackvl вне форума
Прохожий
 
Регистрация: 14.01.2011
Сообщения: 28
Репутация: 10
По умолчанию

Ктонить напишите эту штук и скиньте иходник,
ниче у меня невыходит, одни ошибки ккието
Ответить с цитированием
  #7  
Старый 14.01.2011, 11:16
Аватар для v1s2222
v1s2222 v1s2222 вне форума
Продвинутый
 
Регистрация: 07.09.2010
Сообщения: 726
Репутация: 26711
По умолчанию

Надо было копировать весь код. Так как по частям он работать не будет
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, psapi, tlhelp32;

type
  TForm1 = class(TForm)
    Timer1: TTimer;
    procedure Timer1Timer(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure createwin9xprocesslist(list: tstringlist); 
var 
hsnapshot: thandle; 
procinfo: tprocessentry32; 
begin 
if list = nil then exit; 
hsnapshot := createtoolhelp32snapshot(th32cs_snapprocess, 0); 
if (hsnapshot <> thandle(-1)) then 
begin 
procinfo.dwsize := sizeof(procinfo); 
if (process32first(hsnapshot, procinfo)) then 
begin 
list.add(procinfo.szexefile); 
while (process32next(hsnapshot, procinfo)) do 
list.add(procinfo.szexefile); 
end; 
closehandle(hsnapshot); 
end; 
end; 

procedure createwinntprocesslist(list: tstringlist); 
var 
pidarray: array [0..1023] of dword; 
cb: dword; 
i: integer; 
proccount: integer; 
hmod: hmodule; 
hprocess: thandle; 
modulename: array [0..300] of char; 
begin 
if list = nil then exit; 
enumprocesses(@pidarray, sizeof(pidarray), cb); 
proccount := cb div sizeof(dword); 
for i := 0 to proccount - 1 do 
begin 
hprocess := openprocess(process_query_information or 
process_vm_read, 
false, 
pidarray[i]); 
if (hprocess <> 0) then 
begin 
enumprocessmodules(hprocess, @hmod, sizeof(hmod), cb); 
getmodulefilenameex(hprocess, hmod, modulename, sizeof(modulename)); 
list.add(modulename); 
closehandle(hprocess); 
end; 
end; 
end;

procedure getprocesslist(var list: tstringlist); 
var 
ovi: tosversioninfo; 
begin 
if list = nil then exit; 
ovi.dwosversioninfosize := sizeof(tosversioninfo); 
getversionex(ovi); 
case ovi.dwplatformid of 
ver_platform_win32_windows: createwin9xprocesslist(list);
ver_platform_win32_nt: createwinntprocesslist(list); 
end 
end;

function exe_running(filename: string; bfullpath: boolean): boolean; 
var
i: integer; 
myproclist: tstringlist; 
begin 
myproclist := tstringlist.create; 
try 
getprocesslist(myproclist);
result := false; 
if myproclist = nil then exit; 
for i := 0 to myproclist.count - 1 do 
begin 
if not bfullpath then 
begin 
if comparetext(extractfilename(myproclist.strings[i]), filename) = 0 then 
result := true 
end 
else if comparetext(myproclist.strings[i], filename) = 0 then result := true; 
if result then break; 
end; 
finally 
myproclist.free; 
end;
end; 

procedure TForm1.Timer1Timer(Sender: TObject);
begin
if 
exe_running('notepad.exe', false) then 
begin 
timer2.Enabled:=True;
timer3.Enabled:=True; 
timer4.Enabled:=True; 
end 
else 
showmessage('??????? ?????????');
end;

end.
__________________
Помогаю за Спасибо
Ответить с цитированием
  #8  
Старый 14.01.2011, 12:55
hackvl hackvl вне форума
Прохожий
 
Регистрация: 14.01.2011
Сообщения: 28
Репутация: 10
По умолчанию

v1s2222
Спасибо огромное, очень помог
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 08:17.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter