Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.10.23;
Скачать: CL | DM;

Вниз

Как узнать, что запущено сторонее приложение?   Найти похожие ветки 

 
Гость22   (2005-09-23 10:01) [0]

Например, Ворд.


 
гость333   (2005-09-23 10:08) [1]

procedure TForm1.Button2Click(Sender: TObject);
var
 handler:thandle;
 data:TProcessEntry32;

function return_name:string; // Вспомоготельная функция получения имени
var
 i:byte;
 names:string;
begin
 names:="";
 i:=0;
 while data.szExeFile[i] <> "" do
   begin
     names:=names+data.szExeFile[i];
     inc(i);
   end;
 return_name:=names;
end;

begin //Основная функция перечисления процессов
 handler:=CreateToolhelp32Snapshot(TH32CS_SNAPALL,0);
 if Process32First(handler,data) then
   begin
     memo1.lines.add(return_name);
     while Process32Next(handler,data) do
      memo1.lines.add(return_name);
   end
 else
   showmessage("Ошибка получения информации :)");

  CloseHandle(handler); //Хендл закрывать обязательно!!
end;


вот функция которая выводит список процессов в мемо, может поможет?


 
umbra ©   (2005-09-23 10:57) [2]

Если речь идет об офисных приложениях, так они все - сервера COM и узнать, запущены они или нет можно функцией GetActiveOLEObject


procedure IsWordRunning;
begin
 try
   GetActiveOleObject("Word.Application");
 except
   on OleSysError do ShowMessage("Ворд не запущенэ);
 end;
end;


 
Гость22   (2005-09-23 11:41) [3]

Спасибо!
А как узнать, открыт ли определенный документ Ворд?


 
pavel_guzhanov ©   (2005-09-23 11:49) [4]

В заголовке ворда пишется Microsoft Word + название документа. По этому заголовку можно определить хендл окна... Если он допустимый, то значит этот документ открыт, если нет - то...


 
Гость22   (2005-09-23 11:59) [5]


> По этому заголовку можно определить хендл окна...

подскажите, как это сделать.


 
ssk ©   (2005-09-23 12:01) [6]

Примерно так:

function FindOpenDocumentInWord(aString: string): HWND;
var
 Buffer: array[0..255] of char;
begin
 Result := 0;
 repeat
   Result := FindWindowEx(0, Result, nil, nil);
   GetWindowText(Result, Buffer, SizeOf(Buffer));
   if StrPos(AnsiStrUpper(Buffer), PChar(AnsiUpperCase(aString))) <> nil then
     Break;
 until Result = 0;
end;


Пример:

var
 H: HWND;
begin
 H := FindOpenDocumentInWord("Документ1");
 if H <> 0 then
   ShowMessage("Документ уже открыт");
end;</


 
ssk ©   (2005-09-23 12:04) [7]

по большому счету так можно найти не только ворд, но и любое другое окно


 
umbra ©   (2005-09-23 12:09) [8]

Если тебе нужно узнать, открыт ли какой нибудь программой какой-нибудь файл, то смотри сюда:

http://delphimaster.net/view/4-1127290638/

Там в первом же ответе есть код. Документ Ворд может быть открыт не только вордом но и другими прогаммами (OpenOffice.org, напрмер, или какой нибудь твоей прогой.



Страницы: 1 вся ветка

Текущий архив: 2005.10.23;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.046 c
4-1124631667
Дмитрий_05
2005-08-21 17:41
2005.10.23
Проблема с WM_SIZE


4-1124452484
BFG9k
2005-08-19 15:54
2005.10.23
RAS: Некорректное поведение функции RasGetEntryDialParams


2-1127468702
Киря
2005-09-23 13:45
2005.10.23
Как правильно сдеать запрос?


14-1128498684
-SeM-
2005-10-05 11:51
2005.10.23
GUI-аналог cacls.exe


5-1104156102
Meson
2004-12-27 17:01
2005.10.23
Tools API, написание эксперта