Форум: "WinAPI";
Текущий архив: 2006.06.04;
Скачать: [xml.tar.bz2];
ВнизКак закрыть окно 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 вся ветка
Форум: "WinAPI";
Текущий архив: 2006.06.04;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.046 c