Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2005.10.23;
Скачать: [xml.tar.bz2];

Вниз

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

 
Гость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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.054 c
3-1126596950
Sigetta
2005-09-13 11:35
2005.10.23
Master-Detail и запрос с параметрами


2-1127480780
Mozart_mcs
2005-09-23 17:06
2005.10.23
Опять траблы с текстом


14-1128246212
NNN
2005-10-02 13:43
2005.10.23
Файлы


3-1126247175
zorik
2005-09-09 10:26
2005.10.23
Существует ли ф-ция


3-1126454256
VladBD
2005-09-11 19:57
2005.10.23
Нумерация записей с учетом сортировки





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский