如何知道某个EXCEL文件是否已在外部打开,并关闭它(100分)

  • 主题发起人 主题发起人 mominghua
  • 开始时间 开始时间
M

mominghua

Unregistered / Unconfirmed
GUEST, unregistred user!
因为我的程序要对它写东西。
 
紧急求救呀!~
 
方法很多,其中之一是;
uses winprocs;
Var
HWndCalculator:HWnd;
Begin
HwndCalculator:=Winprocs.FindWindow(nil,'Microsoft Excel - xxxx.xls');
if HwndCalculator<>0 then
SendMessage(HwndCalculator,WM_CLOSE,0,0);
end;
 
我为这个问题研究了半天,有答案了。

var
hcrrentwindow:hwnd;
sztext:array[0..254] of char;
s:string;
begin
hcrrentwindow:=GetWindow(handle,GW_HWNDFIRST);
while hcrrentwindow<>0 do
begin
if GetWindowtext(hcrrentwindow,@sztext,255)>0 then
begin
s:=strpas(@sztext);
if pos('Microsoft Excel',s)<>0 then//如果发现含有Microsoft Excel的窗口将其关闭。
SendMessage(hcrrentwindow,WM_CLOSE,0,0);
end;
hcrrentwindow:=GetWindow(hcrrentwindow,GW_HWNDNEXT);
end;
end;
 
可以用钩子试试。在Excel窗体创建的时候,就执行自己的代码。
 
procedure TForm1.Button1Click(Sender: TObject);
var
wordapp,worddoc:variant;

begin
try
wordapp:=getactiveoleobject('excel.application');
wordapp.quit;
showmessage('excel has closed');
except
showmessage('excel not run');
end;

end;
 
用hunterteam的方法最好了
 
后退
顶部