Главная страница
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.038 c
1-1128346886
@Ujin
2005-10-03 17:41
2005.10.23
Как можно добавить в TCustomForm published свойства?


9-1118294977
.cpp
2005-06-09 09:29
2005.10.23
Множестово слоёв изображений (всем кто делает карты )


1-1127913443
Friend
2005-09-28 17:17
2005.10.23
Есть ли что-нибудь похожее на ImageList


1-1127991488
r9000
2005-09-29 14:58
2005.10.23
Перевод части текста программы на fox в Delphi.


14-1127894061
Digitman
2005-09-28 11:54
2005.10.23
Задрал уже этот MS Word 2003..