Главная страница
    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.041 c
14-1128150125
Старшеклассник
2005-10-01 11:02
2005.10.23
Чего ждет ослик?


4-1124414829
Kripton
2005-08-19 05:27
2005.10.23
Что было нажато: Да или Нет?


1-1128107196
Volf_555
2005-09-30 23:06
2005.10.23
Как в Delphi "запустить" reg-файл из TMemo?


3-1126230901
DimonS
2005-09-09 05:55
2005.10.23
Что за глюк с UpdateSQL?


2-1126774483
SMATMP
2005-09-15 12:54
2005.10.23
Bitmap.LoadFromFile (Progress)





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский