Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.06.04;
Скачать: CL | DM;

Вниз

Как закрыть окно Microsoft Internet Explorer?   Найти похожие ветки 

 
Volf_555 ©   (2006-03-12 12:28) [0]

Пробывал использовать следующий обработчик:

procedure TForm1.Button1Click(Sender: TObject);
var
s:Integer;
begin
// s:=FindWindow("iexplore",nil); //С IE - окно не закрывает - то есть вообще не находит окно
s:=FindWindow(nil,"Microsoft Internet Explorer"); //С MIE - окно не закрывает, хотя окно находит на УРА
// s:=FindWindow("notepad",nil); //С блокнотом всё ОК - то есть закрывается нормально
ShowMessage(IntToStr(s));
SendMessage(s,WM_Close,0,0);
end;

Как мне закрыть окно IE?


 
Handle   (2006-03-12 12:36) [1]

procedure TForm1.Button1Click(Sender: TObject);
begin
PostMessage(FindWindow("iexplore",nil), WM_CLOSE, 0, 0);
end;


или

var
s:hWnd;
begin
s:=FindWindow("iexplore",nil);


 
Handle   (2006-03-12 12:43) [2]

Я был чуть чуть не прав

PostMessage(FindWindow("IEFrame",nil), WM_CLOSE, 0, 0);


 
Volf_555 ©   (2006-03-12 14:36) [3]

Большое спасибо!
Если открыт вручную IE - то это работает.
Но если в процессах сидит IE и ещё скрыт он - то не срабатывает...


 
Handle   (2006-03-12 15:05) [4]

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls,TLHelp32, ExtCtrls;

type
 TForm1 = class(TForm)
   Button1: TButton;
   Timer1: TTimer;
   procedure Button1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;
 hSnapShot:     THandle;
uProcess:      PROCESSENTRY32;
r:             longbool;
ProgCap:       string;
KillProc:      DWORD;
hProcess: THandle;
hToken: THandle;
Priv,PrivOld: TOKEN_PRIVILEGES;
cbPriv: DWORD;
dwError: DWORD;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
ProgCap:= "IEXPLORE.EXE";
hSnapShot:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
uProcess.dwSize := Sizeof(uProcess);
if(hSnapShot<>0)then
begin
r:=Process32First(hSnapShot, uProcess);
while r <> false do
begin
if  ProgCap = uProcess.szExeFile then
KillProc:= uProcess.th32ProcessID;
r:=Process32Next(hSnapShot, uProcess);
end;
CloseHandle(hProcess);
CloseHandle(hSnapShot);
end;
hProcess:=OpenProcess(PROCESS_TERMINATE,false,KillProc);
if hProcess = 0 then
begin
 cbPriv:=SizeOf(PrivOld);
 OpenThreadToken(GetCurrentThread,TOKEN_QUERY or TOKEN_ADJUST_PRIVILEGES,false,hToken);
 OpenProcessToken(GetCurrentProcess,TOKEN_QUERY or  TOKEN_ADJUST_PRIVILEGES,hToken);
 Priv.PrivilegeCount:=1;
 Priv.Privileges[0].Attributes:=SE_PRIVILEGE_ENABLED;
 LookupPrivilegeValue(nil,"SeDebugPrivilege",Priv.Privileges[0].Luid);
 AdjustTokenPrivileges(hToken,false,Priv,SizeOf(Priv),PrivOld,cbPriv);
 hProcess:=OpenProcess(PROCESS_TERMINATE,false,KillProc);
 dwError:=GetLastError;
 cbPriv:=0;
 AdjustTokenPrivileges(hToken,false,PrivOld,SizeOf(PrivOld),nil,cbPriv);
 CloseHandle(hToken);
end;
TerminateProcess(hProcess,$FFFFFFFF);

end;


 
Volf_555 ©   (2006-03-12 17:02) [5]

Спасибо!



Страницы: 1 вся ветка

Текущий архив: 2006.06.04;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.039 c
4-1142029992
NightLord
2006-03-11 01:33
2006.06.04
Систрей


2-1147771355
Konnor
2006-05-16 13:22
2006.06.04
Окно сообщения


4-1141773912
_Devil_
2006-03-08 02:25
2006.06.04
Удаление папки


2-1148043251
oleg_
2006-05-19 16:54
2006.06.04
Как пустить php из под IdHTTPServer


4-1142072413
AllBrain
2006-03-11 13:20
2006.06.04
А как получить список Дисков (FDD/HDD/CD/DVD)