Главная страница
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.48 MB
Время: 0.098 c
1-1128297855
Mixer
2005-10-03 04:04
2005.10.23
Как узнать подключен ли manifest?


14-1128070279
Тульский
2005-09-30 12:51
2005.10.23
Еще одна задачка на пятницу


14-1127894895
WonderfulDay
2005-09-28 12:08
2005.10.23
Нужен учебник по access.


1-1128261565
SergP.
2005-10-02 17:59
2005.10.23
Разные результаты компрессии CompressBuf и TCompressionStream


2-1127901511
Grief
2005-09-28 13:58
2005.10.23
динамические массивы в BlockRead