Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.04.2010, 03:08   #1
alexei7
 
Регистрация: 04.03.2010
Сообщений: 8
По умолчанию Действия с посторонними окнами

Всем привет!
Хочу закрыть другие приложения через delphi
ну например -opera- но неполучается
вот код он вобще недействует -->
postmessage( findwindow(nil,' заголовок окна '), wm_команда, парам3, парам4 );
ненаходит даже приложения --if findwindow(nil, ' 1.txt - Блокнот ') <>0 then showmessage ('Окно присутствует');
может надо чтото добовлять в uses.
Я уже облазил весь инет и просмотрел кучу книг, там такого нет.

Покажите пожалуйста полный листинг программы.
Очень нужно!!!
alexei7 вне форума Ответить с цитированием
Старый 15.04.2010, 07:42   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Я уже облазил весь инет и просмотрел кучу книг, там такого нет
"Это Яндекс. Его расстраивает твоя фраза о то что там ничего нет"
Плохо искал:
http://www.programmersforum.ru/showthread.php?t=6334
И это первое попавшееся.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.04.2010, 17:58   #3
alexei7
 
Регистрация: 04.03.2010
Сообщений: 8
По умолчанию

супер, работае!!!
Код:
var
 h: hWnd;

begin

 h:=FindWindow(nil, 'Документ1 - Microsoft Word');
 if h=0 then exit;
 SendMessage(h, WM_DESTROY, 0,0);

end;
Большое спасибо!!!!
Я примерно чтото в таком роде делал но окна незакрывались, а это работает. еща раз спасибо!

Вот только нехочет закрывать программы - opera или Mozilla Firefox незакрывает, да и другие программы нехочет закрывать а вот документы nodepad и офис закрывает. Подскажи пожалуйста еще как можно закрыть opera или Mozilla Firefox

Последний раз редактировалось Stilet; 16.04.2010 в 08:40.
alexei7 вне форума Ответить с цитированием
Старый 16.04.2010, 05:43   #4
MaxNik2009
Форумчанин
 
Аватар для MaxNik2009
 
Регистрация: 17.09.2009
Сообщений: 294
По умолчанию

Цитата:
Подскажи пожалуйста еще как можно закрыть opera или Mozilla Firefox
ищи окна не о названию а по классу:

Код:
var
h: hWnd;

begin

h:=FindWindow('КлассОкна', Nil);
if h=0 then exit;
SendMessage(h, WM_quit, 0,0);

end;
а класс окна можешь получить программой SpyXXX.
принимаю благодарности в письменном виде( весы слева)...
MaxNik2009 вне форума Ответить с цитированием
Старый 16.04.2010, 08:41   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
нехочет закрывать программы
Я вообще-то имел ввиду пост Tokolist #6...
там где SC_CLOSE используется.
http://www.programmersforum.ru/showp...48&postcount=6
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.04.2010, 08:55   #6
Grag
А может и не...
Участник клуба
 
Аватар для Grag
 
Регистрация: 27.03.2010
Сообщений: 1,269
По умолчанию

Цитата:
Сообщение от alexei7 Посмотреть сообщение
Хочу закрыть другие приложения через delphi
ИМХО! Лично я делаю так
Код:
function KillTask( ExeFileName: string ): integer;
const
  PROCESS_TERMINATE=$0001;
var
  ContinueLoop:BOOL;
  FSnapshotHandle:THandle;
  FProcessEntry32:TProcessEntry32;
begin
   Result:=0;
   FSnapshotHandle:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
   FProcessEntry32.dwSize:=Sizeof(FProcessEntry32);
   ContinueLoop:=Process32First(FSnapshotHandle,FProcessEntry32);
   while Integer(ContinueLoop)<>0 do
   begin
      if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile))=
         UpperCase(ExeFileName)) or (UpperCase(FProcessEntry32.szExeFile) =
         UpperCase(ExeFileName))) then
            Result:=Integer(TerminateProcess(OpenProcess(
                                        PROCESS_TERMINATE, BOOL(0),
                                            FProcessEntry32.th32ProcessID),0));
      ContinueLoop:=Process32Next(FSnapshotHandle,FProcessEntry32)
   end;
   CloseHandle(FSnapshotHandle)
end;
А в теле самой проги обращение к функции

Код:
//убиваю процесс...
  pe.dwSize:=SizeOf( pe );
  hSnap:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0 );
  if Process32First(hSnap,pe) then
    while Process32Next(hSnap,pe) do
      begin
        if pe.szExeFile='WorkTime.exe' then KillTask('WorkTime.exe');
        if pe.szExeFile='EXCEL.EXE' then KillTask('EXCEL.EXE')
      end
В секции описания переменных:
pe: TProcessEntry32;
hSnap: THandle;
Перемешивай дело с бездельем и не сойдешь с ума...
Grag вне форума Ответить с цитированием
Старый 18.04.2010, 13:50   #7
alexei7
 
Регистрация: 04.03.2010
Сообщений: 8
По умолчанию

Спасибо!!! Разобрался, все работает.
alexei7 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с чужими окнами Djem1991 Общие вопросы Delphi 3 15.11.2009 22:35
Работа с окнами Visual c++ dampirik Visual C++ 5 17.08.2009 18:22
Проблема с дочерними окнами artem779 БД в Delphi 3 17.03.2009 13:55
глюк с окнами Delphi Andrei Win Api 4 06.02.2008 22:51
работа с окнами Briz Общие вопросы Delphi 5 07.10.2007 22:20